<?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: Zara</title>
    <description>The latest articles on DEV Community by Zara (@madebyzara).</description>
    <link>https://dev.to/madebyzara</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%2F10295%2FElFTt-So.jpg</url>
      <title>DEV Community: Zara</title>
      <link>https://dev.to/madebyzara</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/madebyzara"/>
    <language>en</language>
    <item>
      <title>Learning Gulp</title>
      <dc:creator>Zara</dc:creator>
      <pubDate>Tue, 07 Apr 2020 18:11:20 +0000</pubDate>
      <link>https://dev.to/madebyzara/learning-gulp-5cjd</link>
      <guid>https://dev.to/madebyzara/learning-gulp-5cjd</guid>
      <description>&lt;p&gt;I have used Gulp for a while but I have never really understood everything in the gulpfile - it just seemed like magic to me. I have always just used examples from others and tweaked what I needed to &lt;em&gt;get it to work&lt;/em&gt;. Which has been fine, but I decided that I want to learn it properly so for my personal website, I wrote my own gulpfile.&lt;/p&gt;

&lt;p&gt;I have only used Gulp 3 before so I wanted learn Gulp 4. I googled my way through it all, I learned which plugins to use for what cause and how to write up my tasks. There are TONS of resources if you google &lt;code&gt;gulp 4 setup&lt;/code&gt; but I made sure I wasn't just copying and pasting. I want to understand each line of code in my file.&lt;/p&gt;

&lt;p&gt;My personal website is in HTML with Sass so I wrote a gulpfile for my needs right now. I want to compile my Sass, add source maps and have a better, easier workflow.&lt;/p&gt;

&lt;h2&gt;
  
  
  BrowserSync
&lt;/h2&gt;

&lt;p&gt;Here is how to setup BrowserSync with gulp: &lt;a href="https://browsersync.io/docs/gulp"&gt;BrowserSync docs&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Styles
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What I wanted
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Compile Sass to CSS&lt;/li&gt;
&lt;li&gt;Add source maps&lt;/li&gt;
&lt;li&gt;Minify my CSS file&lt;/li&gt;
&lt;li&gt;Use BrowserSync to see changes straight away. &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Packages used
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const sass = require('gulp-sass');
const cleanCSS = require('gulp-clean-css');
const sourcemaps = require('gulp-sourcemaps');
const browserSync = require('browser-sync').create();
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  The code
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function style() {
    return gulp.src('./assets/scss/main.scss')
        .pipe(sourcemaps.init())
        .pipe(sass().on('error', sass.logError))
        .pipe(cleanCSS())
        .pipe(sourcemaps.write('.'))
        .pipe(gulp.dest('./assets/css'))
        .pipe(browserSync.stream())
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  What this method does
&lt;/h3&gt;

&lt;p&gt;When we do &lt;code&gt;gulp.src('./assets/scss/main.scss')&lt;/code&gt;, it creates a node stream and reads our file. We can then use our plugins in &lt;code&gt;.pipe&lt;/code&gt; methods to change the file how we like it until we save it to the final destination using &lt;code&gt;.pipe(gulp.dest('./assets/css'))&lt;/code&gt;. &lt;/p&gt;

&lt;h3&gt;
  
  
  The plugins
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;sourcemaps.init()&lt;/code&gt;: Initialise Source Maps - package &lt;a href="https://www.npmjs.com/package/gulp-sourcemaps"&gt;gulp-sourcemaps&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sass().on('error', sass.logError)&lt;/code&gt;: Compile my Sass to CSS - package &lt;a href="https://www.npmjs.com/package/gulp-sass"&gt;gulp-sass&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cleanCSS()&lt;/code&gt;: Minify my CSS - package &lt;a href="https://www.npmjs.com/package/gulp-clean-css"&gt;gulp-clean-css&lt;/a&gt;. I started with &lt;a href="https://www.npmjs.com/package/uglifycss"&gt;uglify-css&lt;/a&gt; but noticed (after some debugging) that it broke my source maps! It basically removed the &lt;code&gt;/*# sourceMappingURL=main.css.map */&lt;/code&gt; part once minified, but this package does not. &lt;/p&gt;

&lt;p&gt;&lt;code&gt;sourcemaps.write('.')&lt;/code&gt;: Writes my source maps, &lt;code&gt;('.')&lt;/code&gt; meaning the same directory so it sits next to my main.css file.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;browserSync.stream()&lt;/code&gt;: This is my favourite part and I just learned about this! Instead of using &lt;code&gt;browserSync.reload()&lt;/code&gt;, this "injects" the css without doing a page refresh. So you see your style changes straight away - it's beautiful. We need to run this after &lt;code&gt;gulp.dest()&lt;/code&gt; so that the css file has been written.&lt;/p&gt;

&lt;h2&gt;
  
  
  Watch
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What I wanted
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Notice when a .html or .scss file has changed&lt;/li&gt;
&lt;li&gt;Run BrowserSync and reload browser if necessary.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Packages used
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const browserSync = require('browser-sync').create();
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  The code
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function watch() {
    browserSync.init({
        server: {
            baseDir: "./"
        }
    });

    gulp.watch('./assets/scss/*.scss', style);
    gulp.watch('./**/*.html').on('change', browserSync.reload);
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  What this method does
&lt;/h3&gt;

&lt;p&gt;I first initialise BrowserSync by setting the baseDir. This will set up an Access URL where you can view your website. I am setting this to the same folder my file is in, this is where my index.html is. But if you have a local setup, you can add your url here, eg. &lt;code&gt;my-site.dev&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;Then we add our watch tasks.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;gulp.watch('./assets/scss/*.scss', style)&lt;/code&gt; : It accepts 2 parameters, the files you want to watch and the function you want to run. This watches for a change in a &lt;code&gt;.scss&lt;/code&gt; file that exists within my &lt;code&gt;assets/scss&lt;/code&gt; folder, and calls my style method that I wrote before. This means that the Sass will automatically compile and BrowserSync will inject the css changes on my site straight away. &lt;/p&gt;

&lt;p&gt;&lt;code&gt;gulp.watch('./**/*.html').on('change', browserSync.reload)&lt;/code&gt;: Here we are watching for a change in any .html in my project. When a .html file changes, it calls browserSync.reload that refreshes my browser so we will see the change straight away. &lt;/p&gt;

&lt;h2&gt;
  
  
  Set a Default task
&lt;/h2&gt;

&lt;p&gt;Finally I set my default gulp task, which means it will run when I type &lt;code&gt;gulp&lt;/code&gt; in the cmd line. I want it to use my watch function by default, however I could write &lt;code&gt;gulp watch&lt;/code&gt; and it will do the same. But it's good for learning purposes and it is quicker to type.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;exports.default = watch;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;p&gt;I went back and forth a bit, fixing one thing, adding a new plugin that turned out breaking something else but it's all a part of learning. I learned more about npm-packages like I have installed tons but never uninstalled one before - it's just &lt;code&gt;npm uninstall my-package&lt;/code&gt; who knew!? I know it sounds simple but I have come to a point now where if I get a problem and I solve it myself (by googling obvs), I feel soo good. Like I can figure it out by myself, it's ok. &lt;/p&gt;

&lt;p&gt;Another funny thing that happened is that once I pushed my new gulpfile to my repository on Github, Github was like oh no hun - you got security alerts. Long story short, I figured out that I was on an older node version, moved to a newer one, learned about &lt;code&gt;npm audit&lt;/code&gt; and fixed the security flaws. &lt;a href="https://itnext.io/fixing-security-vulnerabilities-in-npm-dependencies-in-less-than-3-mins-a53af735261d"&gt;This article&lt;/a&gt; helped me and &lt;code&gt;npm audit fix&lt;/code&gt; worked like a dream. &lt;/p&gt;

&lt;p&gt;So, this was a great learning process for me and I can now use gulp (and npm) more confidently. Here is the final gulpfile if anyone is interested.&lt;/p&gt;

&lt;h3&gt;
  
  
  The final gulpfile
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const gulp = require('gulp');
const sass = require('gulp-sass');
const cleanCSS = require('gulp-clean-css');
const sourcemaps = require('gulp-sourcemaps');
const browserSync = require('browser-sync').create();

// Compile, SourceMaps and Minify CSS
function style() {
    return gulp.src('./assets/scss/main.scss')
        .pipe(sourcemaps.init())
        .pipe(sass().on('error', sass.logError))
        .pipe(cleanCSS())
        .pipe(sourcemaps.write('.'))
        .pipe(gulp.dest('./assets/css'))
        .pipe(browserSync.stream())
}

// Watch for file changes
function watch() {
    browserSync.init({
        server: {
            baseDir: "./"
        }
    });

    gulp.watch('./assets/scss/*.scss', style);
    gulp.watch('./**/*.html').on('change', browserSync.reload);
}

exports.style = style;
exports.watch = watch;

// Default function when you run gulp
exports.default = watch;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>gulp</category>
      <category>frontend</category>
      <category>setup</category>
      <category>beginners</category>
    </item>
    <item>
      <title>My 2019</title>
      <dc:creator>Zara</dc:creator>
      <pubDate>Thu, 02 Jan 2020 13:55:05 +0000</pubDate>
      <link>https://dev.to/madebyzara/my-2019-41ne</link>
      <guid>https://dev.to/madebyzara/my-2019-41ne</guid>
      <description>&lt;p&gt;I love looking back on the year that has passed, it helps me realise how much has actually happened and to recognise all the good things I have done. The brain has a tendency to hold on to the negative things so I put a lot of effort to always notice and remember the good things in life. &lt;/p&gt;

&lt;p&gt;I have kept a log of my days since 2012, but been adding in more details for each year and this year I even added "Highlights of the week" where I would list my 3-5 favourite things from the week. Yeah. I love this shit. &lt;/p&gt;

&lt;p&gt;So let's recap 2019. &lt;/p&gt;

&lt;h3&gt;
  
  
  January
&lt;/h3&gt;

&lt;p&gt;I started the year in Sweden with my parents. On the 1st, I flew back to Brighton and I started Veganuary. I attended &lt;a href="https://asyncjs.com/" rel="noopener noreferrer"&gt;Async&lt;/a&gt; and learned about WebGL. Organised a few codebar's and ate some pizza. &lt;/p&gt;

&lt;p&gt;I spoke about codebar in the Winter Issue of &lt;a href="https://issuu.com/thrivethemag" rel="noopener noreferrer"&gt;Thrive The Magazine&lt;/a&gt; that came out in January. &lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1084742388470464513-742" src="https://platform.twitter.com/embed/Tweet.html?id=1084742388470464513"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1084742388470464513-742');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1084742388470464513&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;&lt;a href="https://labs.uk.barclays/locations/brighton" rel="noopener noreferrer"&gt;Brighton Eagle Lab&lt;/a&gt; hosted a free IoT workshop for 3 sessions (every other Thursday). &lt;/p&gt;

&lt;p&gt;The lead dev Aidan at Gene offered to mentor me! This was really exciting as I am always trying to grow and having someone to guide me, share my goals with and get advice from is priceless.&lt;/p&gt;

&lt;h3&gt;
  
  
  February
&lt;/h3&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1093623295533043713-144" src="https://platform.twitter.com/embed/Tweet.html?id=1093623295533043713"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1093623295533043713-144');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1093623295533043713&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;The IoT workshops were so fuuun. Just made some lights blink. &lt;/p&gt;

&lt;p&gt;Aidan and I had our first mentoring session and Aidan made a training plan for me. I want to learn programming techniques, logic, different approaches and ways to solve problems. The plan was to build a website in PHP where you can register as a user, login, create posts, edit them, delete them and view all posts (CRUD). This also introduced me to working with databases, learning about security and keeping code DRY. But February was just the start. &lt;/p&gt;

&lt;p&gt;And the codebar girls got a lovely shoutout on Galentine’s Day! &lt;a href="https://clockworktalent.com/blog-galentines-day/" rel="noopener noreferrer"&gt;You can find the article here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1094926087648411648-999" src="https://platform.twitter.com/embed/Tweet.html?id=1094926087648411648"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1094926087648411648-999');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1094926087648411648&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;h3&gt;
  
  
  March
&lt;/h3&gt;

&lt;p&gt;Went on my first ever hen do in Toulouse! &lt;a href="https://www.wespringforward.com/" rel="noopener noreferrer"&gt;We Spring Forward&lt;/a&gt; kicked off and a friend and I attended a confidence workshop. On International Women's day a few days later, it was She Says Brighton which is always so, so inspiring. &lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1104102836961460224-895" src="https://platform.twitter.com/embed/Tweet.html?id=1104102836961460224"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1104102836961460224-895');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1104102836961460224&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;I went to Async again where Pete G spoke about Imposter Syndrome which was so insightful. &lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1106303961605304320-759" src="https://platform.twitter.com/embed/Tweet.html?id=1106303961605304320"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1106303961605304320-759');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1106303961605304320&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;h3&gt;
  
  
  April
&lt;/h3&gt;

&lt;p&gt;We had a "Intro to Python" evening at Gene. I got told I get to go to Magento Imagine - the biggest Magento conference that is hosted in VEGAS. What. is. up. &lt;/p&gt;

&lt;h3&gt;
  
  
  May
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F4aohxno8rkjwtqme8cgu.GIF" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F4aohxno8rkjwtqme8cgu.GIF" alt="me and my colleagues posing, dressed up at Magento party"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Went to Vegas - it was my first Magento conference. It was unreal couple of days filled with activities like running 5K to Hoover Dam, party in the &lt;a href="https://stratospherehotel.com/" rel="noopener noreferrer"&gt;Stratosphere&lt;/a&gt; (and rode a rollercoaster at the top!), panels and developer sessions. So. fun.&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1127628722259906561-523" src="https://platform.twitter.com/embed/Tweet.html?id=1127628722259906561"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1127628722259906561-523');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1127628722259906561&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;The week after Vegas, I flew back to Toulouse for my friends wedding. This was one of the highlights of the year. I reunited with people I have not seen since 2012 when I studied in America. It was a beautiful weekend and I danced so much I broke a nerve in my big toe (which still hasn't healed oops). &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fqi7qi792ksfpzup6uuww.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fqi7qi792ksfpzup6uuww.JPG" alt="Me laughing with my friends at a wedding"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  June
&lt;/h3&gt;

&lt;p&gt;2 year anniversary at Gene and as a developer! We hosted codebar at Gene.&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1138534045799911426-276" src="https://platform.twitter.com/embed/Tweet.html?id=1138534045799911426"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1138534045799911426-276');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1138534045799911426&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;We also had our first Gene day where our offices from Liverpool and London came down to Brighton for the day. We spent the morning doing a communication workshop, followed by a team building exercise at Phileas Fogg! In the evening, there was a dinner and drinks but I missed it as I went to Manchester for the weekend! And in the end of the month, I got to attend &lt;a href="https://patternsday.com/" rel="noopener noreferrer"&gt;Patterns Day&lt;/a&gt;, always so brilliant and I got to see one of my big role models, &lt;a href="https://twitter.com/Una" rel="noopener noreferrer"&gt;Una&lt;/a&gt; speak!&lt;/p&gt;

&lt;h3&gt;
  
  
  July
&lt;/h3&gt;

&lt;p&gt;Attended Async and learned about Gatsby Js. I went to &lt;a href="https://clearleft.com/" rel="noopener noreferrer"&gt;Clearleft&lt;/a&gt; lovely summer party. &lt;/p&gt;

&lt;p&gt;I also signed up and attended a &lt;a href="https://www.eventbrite.ca/e/magento-community-speaker-workshop-part-1-july-13-part-2-july-20-tickets-61263965169" rel="noopener noreferrer"&gt;Magento Speaker workshop&lt;/a&gt;. This was an online course that, due to time differences, took place over 2 Saturday evenings, but it was really interesting and fun to attend! It was run by Jill Binder, who founded &lt;a href="https://diversein.tech/" rel="noopener noreferrer"&gt;Diverse in Tech&lt;/a&gt; and she was absolutely brilliant. At the end of the course, I had a talk idea outlined but I am still working on that talk. Maybe this year I will do my first technical talk... &lt;/p&gt;

&lt;p&gt;We started doing Friday dev sessions at Gene and I lead a session about Semantic HTML. Gene also hosted the first Brighton Magento Meetup where our own Michael and Sophie spoke. Really fun evening! &lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1151571402702622720-770" src="https://platform.twitter.com/embed/Tweet.html?id=1151571402702622720"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1151571402702622720-770');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1151571402702622720&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;h3&gt;
  
  
  August
&lt;/h3&gt;

&lt;p&gt;Did not work a lot in August! I spent the beginning in Romania at Untold Music Festival, the middle (and my birthday weekend) in Portugal and the end, I spent 12 days in Sweden with my family.&lt;/p&gt;

&lt;h3&gt;
  
  
  September
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F7379i71ryxldiibix3rc.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F7379i71ryxldiibix3rc.JPG" alt="Muddy in front of Tough Mudder wall"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Completed Tough Mudder! &lt;/p&gt;

&lt;h3&gt;
  
  
  October
&lt;/h3&gt;

&lt;p&gt;A website (where I was the FE lead for the first time) went live! Attended Async again about JavaScript bots and editor frameworks. I went to Sweden for a weekend to surprise my dad for his birthday. &lt;/p&gt;

&lt;p&gt;I completed &lt;a href="https://hacktoberfest.digitalocean.com/" rel="noopener noreferrer"&gt;Hacktoberfest&lt;/a&gt; &amp;amp; I attended my last codebar as an organiser. &lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1186723646208987139-104" src="https://platform.twitter.com/embed/Tweet.html?id=1186723646208987139"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1186723646208987139-104');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1186723646208987139&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;That same week, I started as a instructor for &lt;a href="https://www.codefirstgirls.org.uk/" rel="noopener noreferrer"&gt;Code First: Girls&lt;/a&gt;. This was for a 8 week course teaching HTML, CSS, JavaScript, held at Sussex University every Thursday evening. We had one lead instructor who did the course before and 4 rookie instructors. But it went great and it was so fun! &lt;/p&gt;

&lt;p&gt;The second week was CSS and I got to lead the class! I was nervous all week for it (even had a nervous eye twitch!) but I smashed it and I was so proud. &lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1190352056265121794-973" src="https://platform.twitter.com/embed/Tweet.html?id=1190352056265121794"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1190352056265121794-973');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1190352056265121794&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;h3&gt;
  
  
  November
&lt;/h3&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1192739004107689985-53" src="https://platform.twitter.com/embed/Tweet.html?id=1192739004107689985"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1192739004107689985-53');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1192739004107689985&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;Only because a colleague of mine got sick, I got to take his place and attend FFconf again! Absolutely loved it, brilliant speakers and I got to see so many familiar faces. Always such a great conference. &lt;/p&gt;

&lt;p&gt;Code First:Girls sessions carried on and I enjoyed being an instructor so much. I would arrive with low energy from the work day and thrive with happiness on the train home. Love teaching!&lt;/p&gt;

&lt;p&gt;oh, and I became a certified Magento Front End Developer!&lt;br&gt;
&lt;iframe class="tweet-embed" id="tweet-1197833954205847552-648" src="https://platform.twitter.com/embed/Tweet.html?id=1197833954205847552"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1197833954205847552-648');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1197833954205847552&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;h3&gt;
  
  
  December
&lt;/h3&gt;

&lt;p&gt;Gene held it's Christmas party and on the same day, it was the last Code First:Girls session! So I managed to attend the beginning of Christmas party, skipped the dinner to go to CF:G and came back after for the drinks. I did not wanna miss seeing everyone's projects!&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1205544867050532874-761" src="https://platform.twitter.com/embed/Tweet.html?id=1205544867050532874"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1205544867050532874-761');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1205544867050532874&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;I also attended the codebar Christmas party which was so lovely! I saw so many people I haven't seen for a while, there was an amazing show &amp;amp; tell and all around spread of love. &lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1207057583208620032-353" src="https://platform.twitter.com/embed/Tweet.html?id=1207057583208620032"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1207057583208620032-353');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1207057583208620032&amp;amp;theme=dark"
  }



 &lt;/p&gt;

&lt;p&gt;And that brings us up to Christmas which I spent in Sweden in the snow with my family and our dogs. Celebrated New Years back in Brighton with my boyfriend. &lt;/p&gt;

&lt;h3&gt;
  
  
  .. And a little about my PHP Project
&lt;/h3&gt;

&lt;p&gt;I worked on my project 26 times over the year. Mostly over weekends. It has been such a fun learning progress. Almost every other week, Aidan and I would catch up on my progress and discuss next step. He would tell me what I need to add and I would have to figure out how to do it.&lt;/p&gt;

&lt;p&gt;At the end of the summer, I had a working website with user authentication, all CRUD pages &amp;amp; profile pages where you could even upload your own profile pic. Mighty proud. Even went on to cover regex and wrote my own Markdown parser in PHP which was really tough but I got it working in the end. So you can write some simple markdown in the posts as well.&lt;/p&gt;

&lt;p&gt;In November, I had all the basic functionality. But I had all my logic in one file so now it was time for refactor and restructure. I learned about "Business Logic", and started learning OOP to re-write all my post functions in to one class. At the end of the year, I also added a repository class where it will handle the posts collections.&lt;/p&gt;

&lt;p&gt;I have learnt so much with this project over the year, so many "Aha!" moments and once my BE is in place, next steps involve writing APIs so that I can build the FE with Vue or React. It's gonna be so fun!&lt;/p&gt;

&lt;h3&gt;
  
  
  Summary
&lt;/h3&gt;

&lt;p&gt;My year was full of professional and personal development! I got a mentor and learned tons on my side project. I became a certified Magento Front-End developer. I closed my chapter as codebar organiser after 2.5 years and opened a new chapter as Code First: Girls instructor. I kept up my training on an average of 2 sessions per week and I travelled to France, USA, Romania, Portugal and Sweden. &lt;/p&gt;

&lt;p&gt;Another amazing year! Can't wait to see what happens in 2020.&lt;/p&gt;

&lt;p&gt;My previous year reviews: &lt;a href="https://medium.com/@madebyzara/my-2018-dfda5a41ed6e" rel="noopener noreferrer"&gt;2018&lt;/a&gt; and &lt;a href="https://medium.com/@madebyzara/my-2017-2a9ed51fd739" rel="noopener noreferrer"&gt;2017&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>yearinreview</category>
      <category>devjournal</category>
    </item>
  </channel>
</rss>
