Category Archives

13 Articles

Code/Learning/Projects

Project 300 2022: Mastery Based Learning

Posted by Danial on

It’s been a while since my last update on landing a new role closer to to code. I’m almost 6 months in and I’ve already learnt so much about the payments industry while also refining my coding knowledge, picking up tools like Kibana, Grafana, Docker/Portainer while also debugging plugins for Magento & Salesforce Commerce Cloud (SFCC).

I decided to pause my #100DaysOfCode last month as I was moving into a new vertical at work and context switching was more draining than I expected (between mid-Feb to Mar I was ramping up and learning Magento and SFCC environments while also getting familiar with our in-house plugins/integrations for those platforms).

Having slightly settled now, I’ve decided to restart #100DaysOfCode, but this time re-using my earlier Project 300 framework to craft my own personal ‘bootcamp’. Prior to starting my new role, I had considered taking up a traditional bootcamp to level up and had looked at options such as Rocket Academy and Le Wagon. While I valued the cohort-based and project-driven curriculum of such bootcamps, I was not yet sure of the pace of ramp-up at my new role and was uncertain if I could manage. At the same time, these bootcamps started at $3000 (with subsidies that I was not sure I could get) and went as high as $10,000, and I was uncertain how much value-add the courses might bring to my own learning since I was quite used to learning on my own consistently every week.

I put off the decision, and eventually settled on 2 courses to be taken in parallel:

I chose the former based on good reviews from a close friend who also took one of their specialist diplomas, albeit in the data analytics track. Her experience was that while the course touched on fundamentals, they were rigorous and really helped her improve her competency in the tech stack further. I was also surprised when she mentioned that the quality of instruction at Singapore Polytechnic was much better than majority of the classes she was currently taking in a university tech masters program.

I had applied for the Specialist Diploma in Full Stack Web Development but I was told I did not qualify, likely as my last formal educational qualification was a Bachelor’s of Arts in Philosophy (I’d argue that philosophy prepares one for programming and development much better than other technical disciplines). I still went ahead to enter the diploma course (which served as a prerequisite for the specialist diploma) as it ticked so many boxes for me:

  • Cohort-based curriculum focusing on fundamentals of end-to-end web development
  • JavaScript (frontend) and Python (backend) were being taught, so it was an opportunity to further master languages I had learnt before
  • the Visual Interface Design module would be teaching photoshop, xd and basic graphic design skills; aligned with my frontend dev interests
  • a capstone project (full stack web app) to be completed as a team provided a chance for me to work in a real-life team based development project
  • I could use my remaining SkillsFuture funds to subsidise almost 75% of the diploma course (having to eventually pay only about $250+ for a 1 year accredited diploma certification)
  • getting a formal qualification (diploma) – very much the least important but was a bonus to augment my portfolio

Deciding to also take Launch School in parallel took a bit more thinking. I had come across the course many times on twitter and online reddit forums, but was always on the fence. After being recommended by a number of prominent tech twitter personalities, I took a proper look at the course again. I was immediately drawn to its mastery based learning approach, which meant that I did not need to rush learning in a fixed time period of say 3-6 months. In fact, many of the learners said 12 months seemed to be the average time to complete the core curriculum if going at an even pace.

Another aspect of Launch School that was attractive for me was that even while being a flexible asynchronous peer-based online course, it had rigorous written assessments and live coding interviews that will evaluate mastery of the skill before going on to the next module. This I felt was a differentiator to many online courses. Looking at reviews and outcomes of past learners, I’m convinced that Launch School was a fit for my desire to develop mastery of high-level software engineering first principles.

The Project 300 roadmap this time round is a bit different, as it is aligned to the diploma schedule:

Phase 1: Diploma Term 1/mid-Term 2 (16 Apr 22 to 24 Jul 22)

  • Fundamentals of Progamming
  • Fundamentals of Web Development Technology
  • Visual Interface Design
  • Launch School Core in parallel

Phase 2: Diploma Semester 1 end (25 Jul 22 to 1 Nov 22)

  • Fundamentals of Progamming
  • Fundamentals of Web Development Technology
  • Visual Interface Design
  • Launch School Core in parallel

Phase 3: Diploma Semester 2 (2 Nov 22 to 9 Feb 23)

  • Back-End Development
  • Web Programming
  • Capstone Project
  • Launch School Core in parallel

This past week I managed to complete LS95 Orientation of the launch school prep course and starting on RB100 Programming & Back-end Prep. Next week will be the commencement of my diploma course. Pretty excited to see how far I can push myself and how much mastery I can achieve!

Code/Projects

Project 300: Revisiting #100DaysOfCode, new roadmap, phases and focus.

Posted by Danial on

My last #100DaysOfCode log was on 14 Feb 2020. Up to that point, I had made 2 attempts and was starting to gain momentum with learning Python and Machine Learning. I was sure that AI/ML would be the path that I wanted to move towards. It’s been about 16 months since, and the world is a different place.

With Covid-19 turning lives upside down, my life similarly underwent significant changes, some intended, some unintended:

  • Mar 2020: lockdown in Singapore in the form of “circuit breaker”.
  • Mar – Apr 2020: in the midst of work from home (WFH), I completed Python Crash Course and learnt basic Python, but realized that I wanted to do more with code, I wanted to build things that help and add value. Thus begin a pivot to web development.
  • May – Jun 2020: Volunteered to assist my company via remote tech support role while waiting for lockdown to end. In that time, I also started freeCodeCamp’s Responsive Web Design course.
  • Jul 2020: Return to work and adjusting to a new tech support role in store.
  • Sep 2020: Completed freeCodeCamp’s Responsive Web Design course. Started freeCodeCamp JavaScript Algorithms and Data Structures course.
  • Oct 2020 – Mar 2021: Hit a rough patch with my work, and this time was interspersed with occasional coding, adjusting to new role, gaming in my free time.
  • Mar – Apr 2021: A relative asked me to consider a startup role that was very different from tech, and while doing so, started a brief self-directed learning experience with marketing and growth hacking. At the same time, also applied for an internal programme to try out and shadow a corporate technical role in my company.
  • May 2021: A new Covid-19 wave resurging in Singapore resulting in a quasi-lockdown state termed “Phase 2 (Heightened Alert)”. Radio silence from the startup marketing role.
  • Early Jun 2021: Interview for the internal company experience for Escalations Engineer role (tech stack – Python, SQL, Charles Proxy, Splunk). Take home challenge to learn SQL, Charles Proxy, Splunk, and review Python in 4 days. Managed basic surface learning of technologies; bombed the technical interview. Silver lining – suddenly found new momentum to continue learning.
  • 14 June 2021: Crafted and started a personal 39-week plan to reignite web development journey with 3 distinct phases. Now titled Project 300 (i.e. 3 x #100DaysOfCode).
  • 19 June 2021: And so here we are.

While I already started the project on 14 June, I felt that instead of doing it in private, learning in public would supercharge the process and also act as another driving force to maintain the renewed momentum that I gained, ironically from a failed interview. I am restarting my #100DaysOfCode today, and the plan is to do it 3 times in parallel to my 39-week plan.

The roadmap for Project 300:

  • Commitment – 12hrs/week
    Workdays – 1hrs/day
    Off Days – 3.5hrs/day
  • Learn in Public
  • Restart #100DaysOfCode
  • Tweet updates
  • 1 blog post weekly

Phase 1: Fundamentals (14 June to 12 Sep – 13 weeks)

  • Complete freeCodeCamp JavaScript Algorithms and Data Structures
  • Complete The Odin Project Foundations & Full Stack JavaScript
  • Complete Watch and Code (free)
  • [Optional] Complete Full Stack Open

Phase 2: Portfolio Building (13 Sep to 12 Dec – 13 weeks

  • Portfolio site
  • Blog site
  • Bug tracker
  • Budget tracker

Phase 3: Network and Expand (13 Dec to 13 Mar – 13 weeks)

  • Get feedback on portfolio
  • Offer to build a website for a friend/relative

Some tools I’m using to help me with my daily goals:

  • Done App to track daily tasks
  • Day One App to journal daily affirmations
  • Toggl track to track time on coding and learning
Code/Uncategorized

Advanced CSS

Posted by Danial on

Learning some more CSS by understanding the critical render path; how a website renders by loading html, css and js files.

Learnt and practised flexbox by playing the Flexbox Froggy game.

Some CSS3 standards and implications for different website browsers; namely to remember to check if CSS properties being used are supported by browsers.

Days since last Zero Day: 3 (5/9/20).

Code/Uncategorized

Box Model & px vs em vs rem

Posted by Danial on

Today’s lesson is understanding the box model for CSS. Every p/div/section can be arranged as a box consisting of the content, padding, border and margin.

You use px for absolute values for size and space, em for relative size to the surrounding content and rem for relative size to root element.

Days since last Zero Day: 3 (5/9/20)

Code/Uncategorized

Images in CSS

Posted by Danial on

Just a quick one today on how to position images in html and css, by using the img selector to style images and also abit on styling footer after an img selector.

Days since last Zero Day: 2 (5/9/2020)

Code/Uncategorized

CSS Properties and Selectors

Posted by Danial on

Pretty fun refresher on css properties and selectors today and playing around with stylesheets.

CSS Tricks: cheatsheets and guides on everything CSS

Paletton Color Picker: color scheme picker when choosing colors to mix and match

W3C Selectors list

MDN Reference on Cascading and Inheritance

Specificity Calculator

CSS Cheat Sheet

Reference:
*https://www.w3schools.com/cssref/css_selectors.asp
*https://css-tricks.com/almanac/

Cascading Style Sheets at the most basic level it indicates that the order of CSS rules matter.

.class

#id

*
element
element, element
element element
element > element
element + element
:hover
:last-child
:first-child
!important (not recommended)

What selectors win out in the cascade depends on:
-Specificity
-Importance
-Source Order

Days since last Zero Day: 3 (31/8/2020)

Code/Uncategorized

Cascading Style Sheets – Separation of Concerns

Posted by Danial on

Went into the CSS portion of Andrei Neagoie’s Zero to Mastery WebDev course; it’s more a refresher of CSS concepts that I went through in freeCodeCamp.

The introductory CSS lesson outlined the basics to writing CSS and Andrei went some way to explain why css code is contained in a separate file rather than having the code inline within the html file; namely separation of concerns

As websites get bigger and more complex, it’s cleaner to separate code governing styles from the main website code so that it’s easier to edit appearance of the website without adding lines to the main website code.

Days since last Zero Day: 2 (31/8/2020)