Danial


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!

Uncategorized

A new adventure!

Posted by Danial on

The last time I posted I was embarking on an ambitious personal project – Project 300. The process was rough; I had temporarily stopped all non-essential activities, namely gaming and tabletop trading card games. My days were a cycle of work and code, rinse and repeat. I completed freeCodeCamp’s JavaScript Algorithms and Data Structures and managed to clear a significant portion of The Odin Project’s Foundations.

The plan/goal was that by 14 March 2022, I would be in a role (internal or external) that was closer to code and software development. However, midway through around end-August, I decided to apply for a Technical Support Engineer role Adyen that involved reading and debugging code as part of the job scope. I did not really expect that I would get very far, as my knowledge extended to basic HTML/CSS, JavaScript, Python and surface-level SQL. Regardless, I went in with the mindset that no matter what the outcome, I would still at least get feedback on where I am currently in my learning journey.

I managed to clear all 5 rounds to receive an offer which I accepted! Looking back, I remember that the technical assessment round, which was a take-home assignment that required me implementing the company’s API integration using Postman and testing the API calls to get the response required of the scenario. It was fun because it was the first time that I was integrating APIs and using Postman, and it was exciting observing my API integration receiving the expected responses.

It’s now my first week in the role, and to be honest it’s still pretty surreal. There is an overwhelming amount of knowledge to go through, considering that complexities of the payments industry. Excited to see where this adventure takes me!

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
Uncategorized

DOM Events

Posted by Danial on

DOM events are user events that a web browser monitors to provide interactivity in the website.

https://www.w3schools.com/js/pic_htmltree.gif
https://www.w3schools.com/js/pic_htmltree.gif

When listening to user events, it’s important to set the id of the different buttons that you want to monitor (using id preferred over class as there is a slight performance improvement).

Uncategorized

Starting with JavaScript today!

Posted by Danial on

Finally starting with learning JavaScript after taking so long with HTML and CSS. Having learnt Python before, it’s a gentler slope to overcome when learning JS.

First few lessons are simple basics, i.e. understanding what are numbers, strings, booleans, comparisons, variables. There was also a couple of exercises to practice with in the browser dev console.

Also learnt control flow, namely conditionals. Very similar to Python except slightly different syntax (OR is||, AND is &&, NOT is !).

Days since last Zero Day: 9 (10/9/2020)