<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Jonathan Adly</title>
    <description>The latest articles on DEV Community by Jonathan Adly (@jonathanadly).</description>
    <link>https://dev.to/jonathanadly</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F517844%2F1bb906c1-934d-4de4-aa0a-aa67ce2e6f82.JPG</url>
      <title>DEV Community: Jonathan Adly</title>
      <link>https://dev.to/jonathanadly</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jonathanadly"/>
    <language>en</language>
    <item>
      <title>Dark Mode, the easy way.</title>
      <dc:creator>Jonathan Adly</dc:creator>
      <pubDate>Mon, 30 Nov 2020 15:59:54 +0000</pubDate>
      <link>https://dev.to/jonathanadly/dark-mode-the-easy-way-15k7</link>
      <guid>https://dev.to/jonathanadly/dark-mode-the-easy-way-15k7</guid>
      <description>&lt;h2&gt;
  
  
  The basics
&lt;/h2&gt;

&lt;p&gt;I love dark mode. It is elegant, beautiful, and instantly elevates the user experience. Although, it is a lot of work to get right as a solo-developer without a CSS framework. &lt;/p&gt;

&lt;p&gt;You have to get the color schemes right, add classes for dark mode elements, and sprinkle some javascript to make it all work. &lt;a href="https://www.w3schools.com/howto/howto_js_toggle_dark_mode.asp" rel="noopener noreferrer"&gt;Here&lt;/a&gt; is a basic implementation of how to do it yourself.&lt;/p&gt;

&lt;p&gt;I recently discovered the &lt;a href="https://www.gethalfmoon.com/" rel="noopener noreferrer"&gt;halfmoon&lt;/a&gt; CSS framework and instantly fell in love. It is all the good things that come with bootstrap, but with Dark Mode implementation and easy customization. &lt;/p&gt;

&lt;p&gt;Between Tailwinds and halfmoon, I find myself much more at ease with halfmoon as a Django developer.  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fi7z4h4hpg0w80tjlyh6g.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fi7z4h4hpg0w80tjlyh6g.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is meant to be a review of my experience with it, building &lt;a href="https://joyful.gifts" rel="noopener noreferrer"&gt;joyful.gifts&lt;/a&gt; - a relatively complex and a large project.&lt;/p&gt;

&lt;h2&gt;
  
  
  The good
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Dark mode naively supported. As easy as putting a button in.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;button class="btn btn-action mr-5" type="button" onclick="halfmoon.toggleDarkMode()" aria-label="Toggle dark mode"&amp;gt;
&amp;lt;!--- bootstrap svg icons --&amp;gt;
  &amp;lt;svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-circle-half" fill="currentColor" xmlns="http://www.w3.org/2000/svg"&amp;gt;&amp;lt;path fill-rule="evenodd" d="M8 15V1a7 7 0 1 1 0 14zm0 1A8 8 0 1 1 8 0a8 8 0 0 1 0 16z" /&amp;gt;
    &amp;lt;/svg&amp;gt;
&amp;lt;/button&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Easy customization. Just  override whatever variables you want to customize in a style tag. And you are done!
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;style&amp;gt;
:root {
            /* Change primary color from blue to orange */

            --primary-color: #FF8C42;
            /* Before: var(--blue-color) */
            --primary-color-light: #FFA65C;
            /* Before: var(--blue-color-light) */
            --primary-color-very-light: #FFBF75;
            /* Before: var(--blue-color-very-light) */
            --primary-color-dark: #E67329;
            /* Before: var(--blue-color-dark) */
            --primary-color-very-dark: #E67329;
            /* Before: var(--blue-color-very-dark) */
        }
    &amp;lt;/style&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Delivery over CDN even with customization. No downloading packages, or bloat. Just one CSS file, and one JS file.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Bootstrap like documentations and classes. Documentations and intuitive naming is a huge strength to any framework, and I love how halfmoon went about their documentation and naming. &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What's missing!
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Some bootstrap features - I really missed the Carousel from bootstrap. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Templates to plug and go (or buy and go). &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  But wait...there's more
&lt;/h2&gt;

&lt;p&gt;Doing dashboards for SaaS or SaaS-like web application like &lt;a href="https://joyful.gifts" rel="noopener noreferrer"&gt;joyful.gifts&lt;/a&gt; is time consuming and prone to errors. Well - halfmoon gives you a dashboard, ready for you to take and customize in the documentation - completely free. &lt;/p&gt;

&lt;h3&gt;
  
  
  Closing thoughts
&lt;/h3&gt;

&lt;p&gt;I was not involved in the development of halfmoon or confident enough in my CSS abilities to contribute. The least I can do is to spread the word of this amazing piece of open-source software. It definitely doesn't get as much attention as it deserves! &lt;/p&gt;

&lt;p&gt;If you liked this article and want to see more - Let me &lt;a href="https://twitter.com/Jonathan_Adly_" rel="noopener noreferrer"&gt;know&lt;/a&gt;. I would like to continue exploring the tech used in &lt;a href="https://joyful.gifts" rel="noopener noreferrer"&gt;joyful.gifts&lt;/a&gt; and your words of encouragement or spreading the word about the project would go a long way.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>css</category>
      <category>codenewbie</category>
      <category>django</category>
    </item>
    <item>
      <title>How I learned to code &amp; built a real software product in ~ 6 months</title>
      <dc:creator>Jonathan Adly</dc:creator>
      <pubDate>Fri, 20 Nov 2020 13:18:12 +0000</pubDate>
      <link>https://dev.to/jonathanadly/how-i-learned-to-code-built-a-real-software-product-in-6-months-3gje</link>
      <guid>https://dev.to/jonathanadly/how-i-learned-to-code-built-a-real-software-product-in-6-months-3gje</guid>
      <description>&lt;p&gt;On May 21st, 2020. I wrote my first ever line of code as part of Harvard’s CS50 online course. Six months later, I pushed a production ready web application (see &lt;a href="https://joyful.gifts/" rel="noopener noreferrer"&gt;https://joyful.gifts/&lt;/a&gt; ) for the whole world to use. Below is how I approached learning, the journey, and some unconventional advice for those learning to code to build products.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F3uh9gfxmhw2gkytk5hjl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F3uh9gfxmhw2gkytk5hjl.png" alt="Alt text of image"&gt;&lt;/a&gt;&lt;/p&gt;
 First line of Code in C! 



&lt;h2&gt;
  
  
  How I learned.
&lt;/h2&gt;

&lt;p&gt;Please note, this journey from the very beginning was about being flexible as an entrepreneur and a builder as well as be able to use the best tools available to solve real-world problems. Take it with a grain of salt if your goal is primarily to take an entry-level job as a software developer, it may not apply.&lt;/p&gt;

&lt;p&gt;Here is how I approached learning,&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;I focused on building and getting joy from what I built. If it felt like grinding, I knew I was doing it the wrong way&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I didn’t compare where I am or my tech stack with anyone. If it works, it’s reliable and joy to work with, it means I was in the right place&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I put a lot of effort in searching for true experts in the field, and ignored marketers trying to sell me the latest hyped tutorial&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I kept a close eye on and validated advice in developer to developer platforms (super-technical podcasts, developer forums, niche subreddits are good places to start)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I familiarized myself with new tech as needed, but only dived deep if it solved a specific problem that I have now! (Sorry — I still don’t have a problem that SPA’s would solve)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I didn’t shy away from “hard” things if they solved a problem. Docker is hard, but solved a problem that I had, so I went there.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Given a choice, I always choose the proven and tried technology over the new and shiny.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Journey.
&lt;/h2&gt;

&lt;p&gt;This should be as an overall guide rather than a specific step by step direction, software development evolves very quickly and resources gets outdated quickly. Additionally, there are smaller topics that one needs to learn along the way to ship products where a simple tutorial will do (GIT, Bootstrap, third party integrations, deployment, etc.)&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;C &amp;amp; Intro to Algorithms via &lt;a href="https://www.edx.org/course/cs50s-introduction-to-computer-science" rel="noopener noreferrer"&gt;CS50&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;HTML/CSS fundamental via &lt;a href="https://www.freecodecamp.org/" rel="noopener noreferrer"&gt;FreeCodeCamp&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;JavaScript via &lt;a href="https://eloquentjavascript.net/" rel="noopener noreferrer"&gt;eloquentjavascript&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Python/Flask via &lt;a href="https://www.edx.org/course/cs50s-introduction-to-computer-science" rel="noopener noreferrer"&gt;CS50&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Django — Beginner via the book &lt;a href="https://djangoforbeginners.com/introduction/" rel="noopener noreferrer"&gt;“Django for beginners”&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;Using Django + Modern JavaScript via &lt;a href="https://courses.edx.org/courses/course-v1:HarvardX+CS50W+Web/course/" rel="noopener noreferrer"&gt;CS50W&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Docker via Dive &lt;a href="https://diveintodocker.com/" rel="noopener noreferrer"&gt;into docker&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Django — Professional &amp;amp; best practices via &lt;a href="https://djangoforprofessionals.com/" rel="noopener noreferrer"&gt;“Django for professionals”&lt;/a&gt; and &lt;a href="https://www.feldroy.com/products/two-scoops-of-django-3-x" rel="noopener noreferrer"&gt;“Two scoops of Django”&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Unconventional Advice (maybe?).
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;If you want to learn, learn something brand new. If you want to build, build using what you already know and proven to work.&lt;/li&gt;
&lt;li&gt;Popular tools doesn’t equal useful tools.&lt;/li&gt;
&lt;li&gt;Seek the advice of older developers who had seen a disaster or two. Avoid tech-hype guys/gals.&lt;/li&gt;
&lt;li&gt;Learning to code is like learning to read or write. Only useful if you have something meaningful to say.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I am happy to answer any specific questions about my journey or &lt;a href="https://joyful.gifts/" rel="noopener noreferrer"&gt;joyful.gifts&lt;/a&gt; — Best way is at &lt;a href="https://twitter.com/jonathan_adly_" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>webdev</category>
      <category>python</category>
      <category>django</category>
    </item>
  </channel>
</rss>
