<?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>Forem: Amy Chan</title>
    <description>The latest articles on Forem by Amy Chan (@amychan331).</description>
    <link>https://forem.com/amychan331</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%2F553623%2Fe47932a7-a2e7-4960-a0cc-370472f52176.jpeg</url>
      <title>Forem: Amy Chan</title>
      <link>https://forem.com/amychan331</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/amychan331"/>
    <language>en</language>
    <item>
      <title>Resolve angry beeping when GalliumOS refuse to boot</title>
      <dc:creator>Amy Chan</dc:creator>
      <pubDate>Fri, 06 May 2022 03:10:03 +0000</pubDate>
      <link>https://forem.com/amychan331/resolve-angry-beeping-when-galliumos-refuse-to-boot-b5h</link>
      <guid>https://forem.com/amychan331/resolve-angry-beeping-when-galliumos-refuse-to-boot-b5h</guid>
      <description>&lt;p&gt;I removed my blog when I re-made my portfolio in Wagtail. It included a post on troubleshooting GalliumOS in Chromebook. I found it useful, so I decided to re-post this here, so here goes:&lt;/p&gt;

&lt;p&gt;I don’t actually use Chromebook that often since most of my work is on my Macbook. As a result, I don't charge it everyday. If I forget to turn it off and it stayed in sleep mode, the battery eventually drained off.&lt;/p&gt;

&lt;p&gt;Oops.&lt;/p&gt;

&lt;p&gt;If I only have ChromeOS in my Chromebook, it wouldn’t be a problem – but my system is dual-boot with Linux. GalliumOS to be precise.&lt;/p&gt;

&lt;p&gt;The first time I drained my battery by accident, I thought I just have to re-charge it and turn it back on. To boot into GalliumOS, I do a simple Ctrl-L click. But that time, there was an angry, angry beep and no boot.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--hk4UjV7b--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sznjfbuxcn5j9em1ztz0.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--hk4UjV7b--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sznjfbuxcn5j9em1ztz0.jpg" alt="GalliumOS Screen" width="880" height="660"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Oops, again.&lt;/p&gt;

&lt;p&gt;I was almost certain it have to do with the battery drain, but what happened?&lt;/p&gt;

&lt;p&gt;A bit more research on the &lt;a href="https://wiki.galliumos.org/"&gt;documentation&lt;/a&gt; and &lt;a href="https://www.reddit.com/r/GalliumOS/"&gt;GalliumOS reddit&lt;/a&gt; revealed that because the crossystem flag used for booting is a firmware level setting, it is therefore stored in volatile memory. When there is a complete drain, there is a possibility for the flag to be lost. To solve this, here are the steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Boot into ChromeOS – yes, not GalliumOS, but &lt;strong&gt;Chrome&lt;/strong&gt;OS. We need to access the developer mode! Usually, the command for ChromeOS booting is &lt;em&gt;Ctrl-D&lt;/em&gt;.
2.You may have to configure wifi if it is not set up. My Chromebook still remembers it, so it was good to go.&lt;/li&gt;
&lt;li&gt;Do a &lt;em&gt;Ctrl-Alt-=&amp;gt;&lt;/em&gt; (=&amp;gt; is the right arrow on the first row your keyboard) – to boot yourself into the developer terminal.
4.Enter &lt;em&gt;chronos&lt;/em&gt; as username with no password.
5.Enter &lt;em&gt;sudo crossystem dev_boot_legacy=1&lt;/em&gt;. Some guides online may say &lt;em&gt;dev_boot_usb&lt;/em&gt;, but as the &lt;a href="https://wiki.galliumos.org/Firmware"&gt;GalliumOS documentation&lt;/a&gt; mentioned, that flag is not related to legacy boot issue. I should know – I tried it!
6.Enter &lt;strong&gt;sudo reboot&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Now the GalliumOS booting should be good to go!!!&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>linux</category>
      <category>chromebook</category>
    </item>
    <item>
      <title>My intro to tech through Macbook &amp; the Right-to-Repair culture</title>
      <dc:creator>Amy Chan</dc:creator>
      <pubDate>Sun, 13 Mar 2022 02:00:00 +0000</pubDate>
      <link>https://forem.com/amychan331/my-intro-to-tech-through-macbook-the-right-to-repair-culture-14bm</link>
      <guid>https://forem.com/amychan331/my-intro-to-tech-through-macbook-the-right-to-repair-culture-14bm</guid>
      <description>&lt;p&gt;My trackpad stopped working. For a while, I thought the pad simply just broke from overuse or something got stuck underneath - my Macbook was quite old after all. Then one day, I noticed my Macbook is not standing evenly flat on the table.&lt;/p&gt;

&lt;p&gt;That's very strange, even considering how old it is.&lt;/p&gt;

&lt;p&gt;I took my trusty iFIxit screwdriver kit and unscrewed my Macbook for a quick peek. Good that I did - the battery had swollen.&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%2Fuploads%2Farticles%2Fvz97dkdt851bp8edefwy.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%2Fuploads%2Farticles%2Fvz97dkdt851bp8edefwy.jpg" alt="The swollen battery. OMG."&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;The swollen battery. OMG.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I immediately shut down my laptop, unplugged it, took out the battery, and rush-ordered a new battery from iFixit. The moment it came, I reopened my Macbook and replaced the battery. I also did some cleaning of the inside - so much mini dust bunnies!&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%2Fuploads%2Farticles%2Fz060khmdjggkloqywxf6.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%2Fuploads%2Farticles%2Fz060khmdjggkloqywxf6.jpg" alt="My self-repair setup"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;My self-repair setup!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The whole thing probably took less than 30 minutes. Once I re-screwed the Macbook and turned it back on, it run so smoothly. I even got a bunch of free iFixit stickers with my purchase!&lt;/p&gt;

&lt;p&gt;Gosh, I love iFixit and the old Macbook Pro.&lt;/p&gt;

&lt;p&gt;Every time I do this, I get a flashback to the day when I first took apart my Macbook. It was back when I was still studying architecture (the building kind, not computer kind) at Cal Poly. Macbook was still white back then - and they still had an internal CD drive! However, mine drive broke. Our design assignments was submitted via CDs, so that was bad - but so was the cost to have Apple repair it! My Macbook was old - it had a cracked corner and one of the RAM slot no longer works. Money was tight, and it didn't seemed to make sense to spend so much when my Macbook could expire at any time. My sister had a techie friend, but he only known PC. He didn't want to risk repairing a Macbook.&lt;/p&gt;

&lt;p&gt;Thankfully, Macbook was still repair-friendly back then. For all the changes they did that made their products difficult to self-repair in recent years, its co-founder Steve Wozniak was a known advocate of right-to-repair. Mac was initially easy to open up, and he encouraged tinkering with it. &lt;/p&gt;

&lt;p&gt;I was at San Luis Obispo, the city where iFixit was located. iFixit is an online community that encouraged self-repair, and it had a rich array of documentations and repair tools for sale. So, I ordered a CD drive and screwdriver kit from them, printed out their documentation, rolled my sleeve up, and started working.&lt;/p&gt;

&lt;p&gt;It was mind blowing. My sister's tech friend couldn't do it. It costed so much to hire people to do it. I did it in less than an hour. I had no hardware or any computer experience. My habits back then were watercoloring and gardening!&lt;/p&gt;

&lt;p&gt;It change my perception of computer technology. It would be years before I learned programming, even longer before I got my first developer job. But, the idea that I can be tech savvy started at that moment. &lt;/p&gt;

&lt;p&gt;To this day, I still had the screwdriver I brought back (it's the one with blue-grey handle in the photo). Needless to say, I am a huge proponent of right-to-repair, not just because I like repair things, but I think it helps to drawn in and empower creative and curious individual into the technology industry. &lt;/p&gt;

&lt;p&gt;Do any of you have a special moment when you realize you can be or you are a programmer?&lt;/p&gt;

</description>
      <category>macbook</category>
      <category>diy</category>
    </item>
    <item>
      <title>Deploying Wagtail site on Digital Ocean</title>
      <dc:creator>Amy Chan</dc:creator>
      <pubDate>Wed, 11 Aug 2021 05:53:44 +0000</pubDate>
      <link>https://forem.com/amychan331/deploying-wagtail-site-on-digital-ocean-9ec</link>
      <guid>https://forem.com/amychan331/deploying-wagtail-site-on-digital-ocean-9ec</guid>
      <description>&lt;p&gt;I have been rebuilding my PHP-based site using Django-based CMS Wagtail. The Wagtail part ended up being the easy part. Deployment, however, was another animal on its own.&lt;/p&gt;

&lt;h2&gt;
  
  
  Deployment on Existing Hosting
&lt;/h2&gt;

&lt;p&gt;My old site was on A2 Hosting's shared hosting environment. Their price was good, with reliable service and support. In fact, when I encountered issues trying to host a Django project - and their doc clearly stated that Django is not actually supported - they still tried to help me.&lt;br&gt;
And it did worked! I hosted the Django site successfully... I just can't get Wagtail to load static files correctly.&lt;br&gt;
The issue, as I eventually realized, is that I need to make some changes to some of the configurations - and those are configurations NOT accessible through shared hosting. This is clearly not a fitting use of shared hosting. So, after some research, I decided to say farewell to A2 Hosting.&lt;/p&gt;

&lt;h2&gt;
  
  
  Deployment on Digital Ocean: Setting Up... And The Problem
&lt;/h2&gt;

&lt;p&gt;Digital Ocean provides various documentations to make the whole process easier. I mainly followed two:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.digitalocean.com/community/tutorials/how-to-set-up-django-with-postgres-nginx-and-gunicorn-on-ubuntu-18-04#configure-nginx-to-proxy-pass-to-gunicorn"&gt;How To Set Up Django with Postgres, Nginx, and Gunicorn on Ubuntu 18.04&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-20-04"&gt;How To Secure Nginx with Let's Encrypt on Ubuntu 20.04&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To be sure that the basic setup was done correctly, I started with a clean, untouched Django project. Unfortunately, the site itself doesn't load. In addition, when I try to obtain a SSL certificate, I keep getting this little error:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;To fix these errors, please make sure that your domain name was entered correctly and the DNS A/AAAA record(s) for that domain contain(s) the right IP address&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I know I already setup the domain, and it was correctly. I even redo it again just in case I missed a step or two. To my frustration, I have to wait 72 hour both time to make sure it wasn't a simple propagation issue. It was not.&lt;/p&gt;

&lt;h2&gt;
  
  
  Deployment on Digital Ocean: The Missing Notes
&lt;/h2&gt;

&lt;p&gt;I did eventually resolved all the issues I encountered. Here are the solutions I found, and I hope they will help those new to hosting Django on Digital Ocean who are encountering similar issues:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The docs talked about opening firewall via ufw command, but you have to open it in the Digital Ocean dashboard too! Go to Networking -&amp;gt; Firewall. Make sure inbound rules for HTTP/HTTPS actually exist.&lt;/li&gt;
&lt;li&gt;The site is now loading... but getting error messages! When I reading the gunicorn journal logs (use command &lt;code&gt;sudo journalctl -u gunicorn -r&lt;/code&gt;), I learned that my environment variables are not being found in the wsgi.py file. Eventually, I find a post about the issue in StackOverflow here: &lt;a href="https://stackoverflow.com/questions/38178836/django-settings-secret-key-environment-variable-502-nginx"&gt;https://stackoverflow.com/questions/38178836/django-settings-secret-key-environment-variable-502-nginx&lt;/a&gt; . Basically, for Nginx, I can set up my env variable for settings-related files inside gunicorn.service file instead.&lt;/li&gt;
&lt;li&gt; The Django site was loading, but the stylesheet wasn't updating when I made changes. To jumpstart the changes, I did:
&lt;code&gt;python manage.py collectstatic --noinput --clear&lt;/code&gt; and
&lt;code&gt;sudo systemctl restart gunicorn&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;When I tested the contact form, no email was sent. I needed to use ufw and update /etc/nginx/sites-available/website.com for tcp port of outgoing email (587/tcp).&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>wagtail</category>
      <category>digitalocean</category>
      <category>ngnix</category>
      <category>python</category>
    </item>
    <item>
      <title>From Zero to AWS Certificate</title>
      <dc:creator>Amy Chan</dc:creator>
      <pubDate>Wed, 10 Feb 2021 02:44:06 +0000</pubDate>
      <link>https://forem.com/amychan331/from-zero-to-aws-certificate-4ioc</link>
      <guid>https://forem.com/amychan331/from-zero-to-aws-certificate-4ioc</guid>
      <description>&lt;p&gt;Late last year, I decided to challenge myself - I wanted to learn about AWS and get the AWS Cloud Certificate.&lt;/p&gt;

&lt;p&gt;I have yet to work with AWS before. However, even if I may not deal directly with AWS, knowing the basics would still be helpful, much like how my Linux knowledge and basic network helped me - it made diagnosing whether a problem is truly code-related or a network issue easier, and it improved my ability to communicate and work with the IT staff.&lt;/p&gt;

&lt;p&gt;The combination of quarantine, &lt;a href="https://pages.awscloud.com/TrainCert_AWS_Certification_Challenge_Minnesota_2020.html" rel="noopener noreferrer"&gt;Minnesota AWS Certification Challenge&lt;/a&gt;, and the AWS re:Invent 2020 gave me the push I need and a set timeline - end of year. The stars seemed aligned for me!&lt;/p&gt;

&lt;p&gt;Here is my list of learning resources:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;From the founder of FreeCodeCamp, Quincy Larson: &lt;a href="https://www.freecodecamp.org/news/awscertified-challenge-free-path-aws-cloud-certifications/" rel="noopener noreferrer"&gt;Introducing The #AWSCertified Challenge: A Path to Your First AWS Certifications&lt;/a&gt;. Announce your commitment to join the AWSCertified Challenge! In addition to details about the challenge, the article also come with intro information and some links. My favorite is:&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=3hLmDS179YE" rel="noopener noreferrer"&gt;FreeCodeCamp Video: AWS Certified Cloud Practitioner Training 2020 - Full Course&lt;/a&gt; was a great intro, with some step-by-step lessons that you can practice while watching.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=dUXZUAj_fCE" rel="noopener noreferrer"&gt;TechTalks Video: AWS Certified Cloud Practitioner Course&lt;/a&gt; from Pearson IT  is also a good one. It is 7 hours instead of 4 hours, and it is not as interactive, but it is more detail and talks about more topics.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://aws.amazon.com/certification/certification-prep/" rel="noopener noreferrer"&gt;AWS Article: Prepare for Your AWS Certification Exam&lt;/a&gt;: Expand "Foundational-level AWS Certification" item and look for "Read AWS whitepapers and FAQs". The whitepapers recommended are very useful, very informative.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.aws.training/Details/eLearning?id=60697" rel="noopener noreferrer"&gt;AWS Videos: AWS Cloud Practitioner Essentials&lt;/a&gt;: Sadly, this was quite annoying to use for me. I can't natively speed up their videos or switch tabs. There was a script I used to speed it up, but it's annoying that I had to keep doing it. I also got logged out if I step away and come back later. I went through all the videos, but I do feel like most of them are repetitive of the last 2 videos. If you are in rush, I think you can probably skip this.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://aws.amazon.com/getting-started/" rel="noopener noreferrer"&gt;AWS Getting Started Resource Center&lt;/a&gt;: This is a really important resource for those who don't actually work in AWS like me. Going through the tutorials to gain more hands-on experience helped solidify what I learned from text and videos. After all, the ultimate reason to get the AWS certificate is to actually &lt;strong&gt;learn and utilize&lt;/strong&gt; new skills.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://reinvent.awsevents.com/?pg=WINr" rel="noopener noreferrer"&gt;AWS re:Invent 2020&lt;/a&gt; and &lt;a href="https://aws.amazon.com/events/" rel="noopener noreferrer"&gt;AWS Events page&lt;/a&gt;: Due to the Covid pandemic, the 2020 AWS re:Invent went &lt;strong&gt;100% virtual, free, and lasted 3 whole week&lt;/strong&gt;. Unfortunately, I had a major project that week, and I missed most of the live events. I was able to re-watch some of them, and it definitely gave me a boost from learning alongside so many people online. AWS do several events each year, so definitely look up the events page to see if there is one coming up!&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://tutorialsdojo.com/" rel="noopener noreferrer"&gt;Tutorial Dojo&lt;/a&gt;: Bon Jonso's Tutorial Dojo comes highly recommended as a practice exam resource on many online discussions. Now, many people will post his Udemy link, but I found that Bon Jonso actually have his &lt;strong&gt;own learning portal site&lt;/strong&gt;! The platform is designed specifically for doing practice exam, with features not available in the Udemy version. Be smart, buy the Tutorial Dojo version! It's not expensive at all - sometimes even cheaper than the Udemy version. A tip: if you are viewing this around Thanksgiving, wait for the Black Friday sale!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As for the certificate, I did ended up getting the Cloud Practitioner certificate in time. Here is me with my AWS t-shirt I got from completing the Minnesota AWS Certification Challenge!&lt;br&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%2F0rrbmz52qna0s8gss1c2.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%2F0rrbmz52qna0s8gss1c2.jpg" alt="Amy wearing her AWS t-shirt"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
    </item>
    <item>
      <title>Python Resources I am using - Beginner to Intermediate</title>
      <dc:creator>Amy Chan</dc:creator>
      <pubDate>Sat, 16 Jan 2021 03:31:59 +0000</pubDate>
      <link>https://forem.com/amychan331/python-resources-i-am-using-beginner-to-intermediate-4aen</link>
      <guid>https://forem.com/amychan331/python-resources-i-am-using-beginner-to-intermediate-4aen</guid>
      <description>&lt;p&gt;Since I got my full time as a CMS developer about a year ago, I haven't really studied much Python. Once I got back into it, I realized I collected quite a bit of resources over time. It actually took a while for me to review what resources I have: some of them are too basic, some are not really relevant to what I want to do, and some are no longer available. Eventually, I narrowed down to this list of resources that I planned to use or is already using:&lt;/p&gt;

&lt;h2&gt;
  
  
  Books
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.pearson.com/us/higher-education/program/Summerfield-Programming-in-Python-3-A-Complete-Introduction-to-the-Python-Language-2nd-Edition/PGM156621.html"&gt;Programming in Python3&lt;/a&gt; by Mark Summerfield, when I wanted to use a book instead of staring at the screen. It is well-structured and in-depth. Note that this books stated that it is a tutorial and &lt;strong&gt;reference&lt;/strong&gt; book intended for people with prior programming experience.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://realpython.com/products/python-tricks-book/"&gt;Python Tricks&lt;/a&gt; by Dan Bader, which I got from a Humble Book Bundle. I have been reading one trick per night, on my lovely new Kobo Clara ereader in my bed before I go to sleep.&lt;/li&gt;
&lt;li&gt;Maybe later: Invent Your Own Computer Game with Python by Al Sweigart and Automate the Boring Stuff with Python by Al Sweigart, which I also got from the Humble Book Bundle. They are more for beginners - I had to skip to the middle of the book before I found any useful information for me - but they are interesting topics, so I plan to look more into them later. Great for newbies seeking more practical examples of Python usage.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Online courses or videos
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://courses.edx.org/courses/course-v1:HarvardX+CS50AI+1T2020/course/"&gt;CS50's Introduction to Artificial Intelligence with Python&lt;/a&gt; by HarvardX hosted on edX: Part of my main use of Python is to practice algorithm and data structures. This course is targeted at AI, but it is actually quite good even if you are just looking to learn algorithm in Python. HarvardX also offer other Python courses that are prerequisite for this. If you are a beginner, I recommend trying the prerequisite first.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.coursera.org/learn/python-classes-inheritance"&gt;Python Classes and Inheritance&lt;/a&gt; by University of Michigan hosted on Coursera: Wanted to brush up on my basic know-how on Python classes and inheritance. This is quite basic and not as advanced as the CS50 above, but this is still intended for people who already know basic Python. UM also provides other basic Python courses, so go for those if you are a total beginner.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://realpython.com/"&gt;Real Python&lt;/a&gt;: Lot of up-to-date materials in multiple formats (posts, podcast, video, etc). Their lessons range from beginner to advanced. Though it is mainly a paid-membership site, a good number of materials are free, and they have opened more materials for free during Covid, so try them while you can! P.S. They are the creator of the Python Trick I just mentioned, and they had published multiple Python books.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Online Practices
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/channel/UCiNZk05QaxYN0KW_JwnkBAg"&gt;Decode Girl&lt;/a&gt;: YouTube channel focused on solving algorithm and data structure problem in Python. It's quite new - less than a year old - so there are only a few videos, but I like it so far.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.pythonmorsels.com"&gt;Python Morsels&lt;/a&gt;: A weekly exercise service by Trey Hunner, a well-known Python trainer I have followed for a long time. THe format is great for habit-building. The first 5 exercises are free. I think I may actually stick with this one, since the lite plan is only $5 each month, and I get 1 screencast each week - I watched his free screencast back when I first started following him, and let's just say there was a reason I continue to follow him!&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>python</category>
    </item>
    <item>
      <title>New Year 2021, New Blog, First Post, New Goals!</title>
      <dc:creator>Amy Chan</dc:creator>
      <pubDate>Tue, 05 Jan 2021 01:45:15 +0000</pubDate>
      <link>https://forem.com/amychan331/new-year-2021-new-blog-first-post-new-goals-101p</link>
      <guid>https://forem.com/amychan331/new-year-2021-new-blog-first-post-new-goals-101p</guid>
      <description>&lt;p&gt;By the end of 2020, I felt really stagnant. I lost my first full time after just a year due to Covid, after working so hard to make my career switch. I don't plan to stay feeling this way forever though! I am starting off my 2021 with a bunch of new goals to try. I don't know which one I will want to stick with eventually - there are so many things I want to do - but I will never know without taking the first step.&lt;/p&gt;

&lt;p&gt;One of them, obviously, is to start blogging again. My previous blog in WordPress wasn't that consistent. I kind of just did it whenever I felt like it. This time, I am going to blog at least once a week.&lt;/p&gt;

&lt;p&gt;As for what to post... well, I did said I had a bunch of goals, so this blog will probably be what I will learn. My current schedule:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Monday - Tuesday: Anything VR. Unity for now - in fact, my cover image for this is from the Unity tutorial I am doing, taken while the Lego figure is dancing!&lt;/li&gt;
&lt;li&gt;Wednesday - Thursday: Laravel. As a CMS developer, I have to keep growing my PHP skills!&lt;/li&gt;
&lt;li&gt;Friday - Saturday: Python, my first programming language love. I also need to refresh my knowledge with data structure and algorithm.&lt;/li&gt;
&lt;li&gt;Sunday: Cybersecurity, because MIT is providing the course "Cybersecurity for Critical Urban Infrastructure" on edX. Considering I work mostly with gov websites &amp;amp; my interest in urban planning, I am definitely going to do it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I also plan to do daily Yoga, and I have been knitting a shawl while watching programming videos. &lt;/p&gt;

&lt;p&gt;Yes, this is a very pack schedule, but I don't plan to keep all of them. This is all about explorations. This is the fun of New Year Goal! Let's do this!!!&lt;/p&gt;

&lt;p&gt;And now, as mandatory for any new programming project...&lt;/p&gt;

&lt;p&gt;Hello World!&lt;/p&gt;

</description>
      <category>firstpost</category>
      <category>newyear</category>
      <category>2021</category>
      <category>helloworld</category>
    </item>
  </channel>
</rss>
