<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>RiaMaria's blog</title><link href="https://blog.riamaria.com/" rel="alternate"></link><link href="https://blog.riamaria.com/feeds/all.atom.xml" rel="self"></link><id>https://blog.riamaria.com/</id><updated>2024-01-25T00:00:00-08:00</updated><subtitle>Maria's little piece of the internet</subtitle><entry><title>Learning to organize my work at my new job</title><link href="https://blog.riamaria.com/learning-to-organize-my-work-at-my-new-job.html" rel="alternate"></link><published>2023-06-21T11:30:00-07:00</published><updated>2023-06-21T11:30:00-07:00</updated><author><name>Maria Mora</name></author><id>tag:blog.riamaria.com,2023-06-21:/learning-to-organize-my-work-at-my-new-job.html</id><summary type="html">&lt;p&gt;Ever been a fan of organizing everything but your own room and life?&lt;/p&gt;</summary><content type="html">&lt;p&gt;As a kid, my sister kept drilling into me that I needed to learn skills 
to cope with my ADHD. It was an annoying thing to keep hearing, mostly because 
I did not know what she was talking about. It was only later on that I realized 
that there exists techniques for someone with executive function disorder to get 
by in a 9-5 workplace somehow.&lt;/p&gt;
&lt;h1&gt;The allure of organizing your work&lt;/h1&gt;
&lt;p&gt;I gave a talk at BSides San Francisco a few months ago, specifically highlighting 
non-technical skills and how we can use that to navigate corporate security in an 
engineering-like approach. Later on I realized how much importance I placed on 
non-technical skills in that talk, and how useful those skills are for most, if not 
all jobs in Information Security.&lt;/p&gt;
&lt;h1&gt;The gist of what I said in the talk&lt;/h1&gt;
&lt;ol&gt;
&lt;li&gt;Identify your stakeholders&lt;/li&gt;
&lt;li&gt;Set up your branding&lt;/li&gt;
&lt;li&gt;Practice your messaaging&lt;/li&gt;
&lt;li&gt;Expand your network&lt;/li&gt;
&lt;li&gt;Keep track of your stakeholders with technology&lt;/li&gt;
&lt;li&gt;Find and write good documentation&lt;/li&gt;
&lt;li&gt;Communicate effectively and thoughtfully with your stakeholders&lt;/li&gt;
&lt;li&gt;Just keep doing a good job at this point&lt;/li&gt;
&lt;/ol&gt;
&lt;h1&gt;A recording of said talk&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;Lost in Space: Navigating Corporate Security as an Engineer&lt;/strong&gt;&lt;/p&gt;
&lt;iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/7iN_Q2xauCY" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen&gt;&lt;/iframe&gt;

&lt;p&gt;Perhaps next time I can share some tips and tricks, but for now I'll keep a few tricks up my sleeve.&lt;/p&gt;</content><category term="Organization"></category></entry><entry><title>Body Doubling to Alleviate Work Loneliness</title><link href="https://blog.riamaria.com/body-doubling-to-alleviate-work-loneliness.html" rel="alternate"></link><published>2023-04-09T01:00:00-07:00</published><updated>2023-04-09T01:00:00-07:00</updated><author><name>Maria Mora</name></author><id>tag:blog.riamaria.com,2023-04-09:/body-doubling-to-alleviate-work-loneliness.html</id><summary type="html">&lt;p&gt;Work can be quite lonely when you're working remotely, or your team mostly is. Here's a new trick I learned to help alleviate that loneliness.&lt;/p&gt;</summary><content type="html">&lt;p&gt;I learned a new thing recently from a co-worker about Body Doubling. Honestly I was mind-boggled at first when I heard the term, thinking it was some sort of woo thing to do or perhaps something spooky.&lt;/p&gt;
&lt;p&gt;Apparently, Body Doubling is basically just the act of getting on a voice/video call with at least one other co-worker and just working together. It's equivalent to hanging out on a Discord call with other folks and y'all are off doing your own things, or sometimes you're doing things together.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Person wearing glasses working from their desk indoors but staring outside the glass doors" src="https://blog.riamaria.com/images/blog/2023-04-09-body-doubling/bd-1.jpg"&gt;&lt;/p&gt;
&lt;p&gt;Photo courtesy of &lt;a href="https://unsplash.com/@yasmina"&gt;Yasmina H&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://chadd.org/adhd-news/adhd-news-adults/could-a-body-double-help-you-increase-your-productivity"&gt;CHADD: Could a Body Double Help You Increase Your Productivity?&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;More things I could equate it to would be working at a coffee shop (though you might not know people around you), going to the gym with a friend but not always doing the same workouts together, or heck, working at an office (what a novel concept!)&lt;/p&gt;
&lt;p&gt;In any case, this body doubling thing is pretty great and I highly recommend it to alleviate work loneliness.&lt;/p&gt;
&lt;p&gt;Technically, you can even body double with people you don't go to work with, but be careful not to leak any information under NDA.&lt;/p&gt;</content><category term="Work, Life Hacks"></category></entry><entry><title>Pelican is my friend now</title><link href="https://blog.riamaria.com/pelican-is-my-friend-now.html" rel="alternate"></link><published>2023-04-07T04:00:00-07:00</published><updated>2023-04-07T04:00:00-07:00</updated><author><name>Maria Mora</name></author><id>tag:blog.riamaria.com,2023-04-07:/pelican-is-my-friend-now.html</id><summary type="html">&lt;p&gt;After trying to cut costs, I have decided to move on to a static site generator for my blog.&lt;/p&gt;</summary><content type="html">&lt;p&gt;Let's face it, I'm probably not going to make a career out of blogging, and a lot of the pricier paid options such as self hosting a full-on CMS doesn't actually make sense for me to do.&lt;/p&gt;
&lt;p&gt;I have de-provisioned my Ghost blog in favor of &lt;a href="https://getpelican.com/"&gt;Pelican&lt;/a&gt;, a static site generator primarily used for blogging.&lt;/p&gt;
&lt;p&gt;It took me approximately 3 hours to:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Provision DNS&lt;/li&gt;
&lt;li&gt;Provision a Let's Encrypt Certificate&lt;/li&gt;
&lt;li&gt;Fixed all of my static host server issues (second most labor and time intensive thing to do)&lt;/li&gt;
&lt;li&gt;Migrate all of my old blog posts into Markdown (this was the most labor and time intensive part)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;It would be remiss for me to not thank my guildies for hanging out with me on Discord while I was trying to figure all of this out.&lt;/p&gt;
&lt;p&gt;In other news, I'm writing this at 4AM and I really need to get some sleep. So I'll keep it at that.&lt;/p&gt;</content><category term="Pelican, Python, Blogging"></category></entry><entry><title>The volume does not contain a recognized file system. Chkdsk to the rescue!</title><link href="https://blog.riamaria.com/the-volume-does-not-contain-a-recognized-file-system-chkdsk-to-the-rescue.html" rel="alternate"></link><published>2023-03-15T00:00:00-07:00</published><updated>2023-03-15T00:00:00-07:00</updated><author><name>Maria Mora</name></author><id>tag:blog.riamaria.com,2023-03-15:/the-volume-does-not-contain-a-recognized-file-system-chkdsk-to-the-rescue.html</id><summary type="html">&lt;p&gt;Let's say you were trying to look into your SD card on your computer, then suddenly the drive's like,&lt;/p&gt;</summary><content type="html">&lt;p&gt;Let's say you were trying to look into your SD card on your computer, then suddenly the drive's like,&lt;/p&gt;
&lt;p&gt;&lt;img alt="Window that presents the following: Location is not available. E is not accessible. The volume does not contain a recognized file system. Please make sure that all required file system drivers are loaded and that the volume is not corrupted." src="https://blog.riamaria.com/images/blog/2023-03-15-chkdsk/chkdsk-1.png"&gt;&lt;/p&gt;
&lt;p&gt;My friend just went through this issue. Basically I told him to run: &lt;code&gt;chkdsk E: /f&lt;/code&gt; on Command Prompt ran as administrator.&lt;/p&gt;
&lt;p&gt;...and poof! It works ✨&lt;/p&gt;</content><category term="Windows"></category></entry><entry><title>Anime Recommendations</title><link href="https://blog.riamaria.com/anime-recommendations.html" rel="alternate"></link><published>2022-11-27T00:00:00-08:00</published><updated>2024-01-25T00:00:00-08:00</updated><author><name>Maria Mora</name></author><id>tag:blog.riamaria.com,2022-11-27:/anime-recommendations.html</id><summary type="html">&lt;p&gt;So here's list of anime recommendations.&lt;/p&gt;</summary><content type="html">&lt;h2&gt;Some from "The Criterion Collection"&lt;/h2&gt;
&lt;h3&gt;Samurai Champloo - Crunchyroll&lt;/h3&gt;
&lt;p&gt;About samurai and hip hop. Music slaps. RIP Nujabes.&lt;/p&gt;
&lt;h3&gt;Cowboy Bebop - Crunchyroll&lt;/h3&gt;
&lt;p&gt;About space cowboys, bounty hunting, and there's a cute corgi. Music also slaps.&lt;/p&gt;
&lt;h3&gt;Carole &amp;amp; Tuesday - Netflix&lt;/h3&gt;
&lt;p&gt;About two girls trying to make it in the music industry. Same universe as Cowboy Bebop. Music definitely slaps.&lt;/p&gt;
&lt;h3&gt;Akira (movie) - Hulu Plus&lt;/h3&gt;
&lt;p&gt;It's kinda gory, but it's a classic!&lt;/p&gt;
&lt;h3&gt;Every Ghibli Movie - HBO Max and wherever else you can find it&lt;/h3&gt;
&lt;p&gt;They're masterpieces. 'nuff said.&lt;/p&gt;
&lt;h3&gt;The Eccentric Family - Crunchyroll&lt;/h3&gt;
&lt;p&gt;This show is pretty interesting and about tanuki. Fantasy set in contemporary times.&lt;/p&gt;
&lt;h2&gt;Recently Hot Stuff&lt;/h2&gt;
&lt;h3&gt;Frieren: Beyond Journey's End - Crunchyroll&lt;/h3&gt;
&lt;p&gt;What a banger of an anime! The story is really good.&lt;/p&gt;
&lt;h3&gt;The Apothecary Diaries - Crunchyroll&lt;/h3&gt;
&lt;p&gt;Despite being another emperor's palace detective story, I believe the premise is really interesting.&lt;/p&gt;
&lt;h3&gt;BOCCHI THE ROCK! - Crunchyroll&lt;/h3&gt;
&lt;p&gt;This anime has some interesting artistic direction, and also really good music.&lt;/p&gt;
&lt;h3&gt;Spy x Family - Crunchyroll&lt;/h3&gt;
&lt;p&gt;Great show to watch with the family. PG13 I guess? Two seasons.&lt;/p&gt;
&lt;h3&gt;Ya Boy Kongming! - HiDive&lt;/h3&gt;
&lt;p&gt;Reverse Isekai. Fun show to watch, music's not bad. Some great rap and hip hop as well. About people trying to make it in the music industry. Kongming's a great character.&lt;/p&gt;
&lt;h2&gt;Serious Stuff&lt;/h2&gt;
&lt;h3&gt;Shadows House - Crunchyroll&lt;/h3&gt;
&lt;p&gt;Interesting mystery-filled anime. Just go in blind. Pretty good show IMO.&lt;/p&gt;
&lt;h3&gt;Made in Abyss - HiDive&lt;/h3&gt;
&lt;p&gt;Gory anime, I honestly stopped after a while because I couldn't take it anymore. However, I still recommend people try it out and see if it's for them.&lt;/p&gt;
&lt;h3&gt;Showa Genroku Rakugo Shinju - Crunchyroll&lt;/h3&gt;
&lt;p&gt;Great show, recommended for mature-minded audiences. Period drama with some really good Rakugo as well. Music slaps.&lt;/p&gt;
&lt;h3&gt;Victorian Romance Emma - Crunchyroll&lt;/h3&gt;
&lt;p&gt;Period romantic drama set in England. It's very charming, and the author is an Anglophile, so be prepared for interesting minute details.&lt;/p&gt;
&lt;h3&gt;Another - Crunchyroll&lt;/h3&gt;
&lt;p&gt;Thriller anime. Great if you like spooky stuff.&lt;/p&gt;
&lt;h3&gt;Boogiepop and Others - Crunchyroll&lt;/h3&gt;
&lt;p&gt;Supernatural mystery anime set in Tokyo. I don't know how to best describe it, but it's pretty good.&lt;/p&gt;
&lt;h2&gt;More Light-Hearted Stuff&lt;/h2&gt;
&lt;h3&gt;Kaguya-sama - Crunchyroll&lt;/h3&gt;
&lt;p&gt;Multiple seasons. Really good and funny rom-com. Music slaps.&lt;/p&gt;
&lt;h3&gt;Horimiya - Crunchyroll&lt;/h3&gt;
&lt;p&gt;Cute boy-meets-girl story and about their classmates as well. Must-watch if you're into romance.&lt;/p&gt;
&lt;h3&gt;Poyopoyo - Crunchyroll&lt;/h3&gt;
&lt;p&gt;Great for kids and people with short attention spans! Cute cat.&lt;/p&gt;
&lt;h3&gt;Konosuba - Crunchyroll&lt;/h3&gt;
&lt;p&gt;Isekai. Very funny show, I highly recommend this one.&lt;/p&gt;
&lt;h3&gt;Laid-Back Camp - Crunchyroll&lt;/h3&gt;
&lt;p&gt;About high school girls camping. Very relaxing and educational.&lt;/p&gt;
&lt;h3&gt;Ghost Stories (dubbed) - Crunchyroll&lt;/h3&gt;
&lt;p&gt;If you're gonna watch this, watch the English dub. It's pretty funny.&lt;/p&gt;
&lt;h3&gt;Flying Witch - Crunchyroll&lt;/h3&gt;
&lt;p&gt;Real light-hearted fun anime about a witch in the countryside of Japan. If you want to just relax and have a good time, this is the show to watch.&lt;/p&gt;
&lt;h3&gt;Sekko Boys - Crunchyroll&lt;/h3&gt;
&lt;p&gt;Short-form anime with some really funny skits. I recommend watching it if you have a few minutes to spare every now and then.&lt;/p&gt;
&lt;h2&gt;Other Gems&lt;/h2&gt;
&lt;h3&gt;The Saint's Magic Power is Omnipotent - Crunchyroll&lt;/h3&gt;
&lt;p&gt;Romantic Isekai, great for when you just want to watch something easy on the eyes and don't want to think much.&lt;/p&gt;
&lt;h3&gt;Chihayafuru - Crunchyroll&lt;/h3&gt;
&lt;p&gt;Multiple seasons. Really refreshing story about a card game named Karuta and the development of the characters in the story about it.&lt;/p&gt;
&lt;h3&gt;March Comes in Like a Lion - Crunchyroll&lt;/h3&gt;
&lt;p&gt;Drama about Shogi players. It can be pretty melancholic and uncomfortable at times, but the story is really good IMO.&lt;/p&gt;
&lt;h3&gt;ODDTAXI - Crunchyroll&lt;/h3&gt;
&lt;p&gt;Mystery drama, pretty good. Full of animal characters. Don't get spoiled! 10/10 writing.&lt;/p&gt;
&lt;h3&gt;The Perfect Insider - Crunchyroll&lt;/h3&gt;
&lt;p&gt;Pretty good murder mystery, music slaps.&lt;/p&gt;
&lt;h3&gt;Call of the Night - HiDive&lt;/h3&gt;
&lt;p&gt;About vampires and a teenager that discovers their world. Music slaps IMO.&lt;/p&gt;
&lt;h3&gt;Raven of the Inner Palace - Crunchyroll&lt;/h3&gt;
&lt;p&gt;Romantic Chinese show about a consort and a new emperor where the consort mostly deals with ghosts and curses and stuff. Supernatural. Very pretty show.&lt;/p&gt;
&lt;h3&gt;Chainsaw Man - Crunchyroll&lt;/h3&gt;
&lt;p&gt;Don't watch with your family! LOL&lt;/p&gt;
&lt;p&gt;It's the highlight of its season.&lt;/p&gt;</content><category term="Anime"></category></entry><entry><title>Securing your Self-Hosted Ghost 5.20 instance with NGINX</title><link href="https://blog.riamaria.com/securing-your-self-hosted-ghost-520-instance-with-nginx.html" rel="alternate"></link><published>2022-11-02T00:00:00-07:00</published><updated>2022-11-02T00:00:00-07:00</updated><author><name>Maria Mora</name></author><id>tag:blog.riamaria.com,2022-11-02:/securing-your-self-hosted-ghost-520-instance-with-nginx.html</id><summary type="html">&lt;p&gt;I just set up blog.riamaria.com a few days ago. It's been really fun setting up the server. I looked up some ways to secure my Ghost instance better. Great ideas here and there, and mostly just regular AppSec things.&lt;/p&gt;</summary><content type="html">&lt;p&gt;I just set up blog.riamaria.com a few days ago. It's been really fun setting up the server. I looked up some ways to secure my Ghost instance better. Great ideas here and there, and mostly just regular AppSec things.&lt;/p&gt;
&lt;p&gt;With this guide, I assume that Ghost handled the NGINX configs for you upon installation. Here are some things that you can do with NGINX to harden your Self-Hosted Ghost instance:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;💡 Note that you after saving the NGINX config files, you should run nginx -t before reloading NGINX ( server reload nginx ) to propagate changes gracefully.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1&gt;Redirect from HTTP to HTTPS&lt;/h1&gt;
&lt;p&gt;Unfortunately, the default Ghost instance will allow http://yourblog.example to go through to your site. I hope at this point in time people know better than to go to HTTP only sites due to lack of encryption in-transit.&lt;/p&gt;
&lt;p&gt;As root, edit &lt;code&gt;/etc/nginx/sites-enabled/yourblog.example.conf&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="nt"&gt;location&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;       &lt;/span&gt;&lt;span class="err"&gt;proxy_set_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;X-Forwarded-For&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;proxy_add_x_forwarded_for&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;       &lt;/span&gt;&lt;span class="err"&gt;proxy_set_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;X-Forwarded-Proto&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;$scheme&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;       &lt;/span&gt;&lt;span class="err"&gt;proxy_set_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;X-Real-IP&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;$remote_addr&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;       &lt;/span&gt;&lt;span class="err"&gt;proxy_set_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Host&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;$http_host&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;       &lt;/span&gt;&lt;span class="err"&gt;proxy_pass&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;http&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="mf"&gt;127.0.0.1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;2368&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;/etc/nginx/sites-available/yourblog.example.conf&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;to&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="nt"&gt;location&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="err"&gt;proxy_set_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;X-Forwarded-For&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;$proxy_add_x_forwarded_for&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="err"&gt;proxy_set_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;X-Forwarded-Proto&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;$scheme&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="err"&gt;proxy_set_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;X-Real-IP&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;$remote_addr&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="err"&gt;proxy_set_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Host&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;$http_host&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="err"&gt;return&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;301&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;https&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;host&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;request_uri&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;/etc/nginx/sites-available/yourblog.example.conf&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This will permanently redirect you from HTTP to HTTPS if you go to the HTTP site.&lt;/p&gt;
&lt;h1&gt;Removing HTTP headers&lt;/h1&gt;
&lt;p&gt;One reason to not publish the NGINX version in the response headers of your site is to make it a little more difficult for attackers to sniff what version you are running on. Running on a known vulnerable version will make it more likely for bad actors to try and do something funny on your instance.&lt;/p&gt;
&lt;p&gt;As root, edit &lt;code&gt;/etc/nginx/nginx.conf&lt;/code&gt; and uncomment &lt;code&gt;server_tokens off;&lt;/code&gt;. It should look like this:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="w"&gt;        &lt;/span&gt;##
&lt;span class="w"&gt;        &lt;/span&gt;#&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;Basic&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;Settings&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;##

&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="k"&gt;sendfile&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;on&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nv"&gt;tcp_nopush&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;on&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nv"&gt;types_hash_max_size&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2048&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nv"&gt;server_tokens&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;off&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;/etc/nginx/nginx.conf&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Another thing is that you might want to remove the X-Powered-By: Express header as well. In both &lt;code&gt;/etc/nginx/sites-enabled/yourblog.example.conf&lt;/code&gt; and &lt;code&gt;/etc/nginx/sites-enabled/yourblog.example-ssl.conf&lt;/code&gt;, add the following line: &lt;code&gt;proxy_hide_header X-Powered-By;&lt;/code&gt;. It should look like this:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nt"&gt;location&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="err"&gt;proxy_set_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;X-Forwarded-For&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;$proxy_add_x_forwarded_for&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="err"&gt;proxy_set_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;X-Forwarded-Proto&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;$scheme&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="err"&gt;proxy_set_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;X-Real-IP&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;$remote_addr&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="err"&gt;proxy_set_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Host&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;$http_host&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="err"&gt;return&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;301&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;https&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;host&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;request_uri&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="err"&gt;proxy_hide_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;X-Powered-By&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;/etc/nginx/sites-available/yourblog.example.conf&lt;/em&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nt"&gt;location&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="err"&gt;proxy_set_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;X-Forwarded-For&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;$proxy_add_x_forwarded_for&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="err"&gt;proxy_set_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;X-Forwarded-Proto&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;$scheme&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="err"&gt;proxy_set_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;X-Real-IP&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;$remote_addr&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="err"&gt;proxy_set_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Host&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;$http_host&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="err"&gt;proxy_pass&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;http&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="mf"&gt;127.0.0.1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;2368&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="err"&gt;proxy_hide_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;X-Powered-By&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;/etc/nginx/sites-available/yourblog.example-ssl.conf&lt;/em&gt;&lt;/p&gt;
&lt;h1&gt;Restrict Admin Access to your IP only&lt;/h1&gt;
&lt;p&gt;This part was a little tricky for me to get. Depending on whether or not you are using Cloudflare, you may have to use a different conditional.&lt;/p&gt;
&lt;p&gt;Adapted from: https://www.blakejarvis.com/miscellaneous-articles/how-to-secure-the-ghost-blogging-platform&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;location&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;ghost&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;proxy_add_x_forwarded_for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;~*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;YOUR_IP_ADDRESS&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="n"&gt;proxy_pass&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;http&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="mf"&gt;127.0.0.1&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;2368&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;request_uri&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="err"&gt;}&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="err"&gt;}&lt;/span&gt;

&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;location&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;ghost&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;api&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;admin&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;proxy_add_x_forwarded_for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;~*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;YOUR_IP_ADDRESS&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="n"&gt;proxy_pass&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;http&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="mf"&gt;127.0.0.1&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;2368&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;request_uri&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="err"&gt;}&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="err"&gt;}&lt;/span&gt;

&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;location&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;ghost&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;api&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="n"&gt;allow&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ow"&gt;all&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="n"&gt;proxy_pass&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;http&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="mf"&gt;127.0.0.1&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;2368&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;request_uri&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="err"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;Using Cloudflare: /etc/nginx/sites-available/yourblog.example-ssl.conf&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;As you can see above, we are using the &lt;code&gt;$proxy_add_x_forwarded_for&lt;/code&gt; variable to match with the IP address. Below is an example of a server that does not use Cloudflare:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;location&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;ghost&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;remote_addr&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;~*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;YOUR_IP_ADDRESS&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="n"&gt;proxy_pass&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;http&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="mf"&gt;127.0.0.1&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;2368&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;request_uri&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="err"&gt;}&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="err"&gt;}&lt;/span&gt;

&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;location&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;ghost&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;api&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;admin&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;remote_addr&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;~*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;YOUR_IP_ADDRESS&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="n"&gt;proxy_pass&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;http&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="mf"&gt;127.0.0.1&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;2368&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;request_uri&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="err"&gt;}&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="err"&gt;}&lt;/span&gt;

&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;location&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;ghost&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;api&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="n"&gt;allow&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ow"&gt;all&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="n"&gt;proxy_pass&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;http&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="mf"&gt;127.0.0.1&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;2368&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;request_uri&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="err"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;Not using Cloudflare: /etc/nginx/sites-available/yourblog.example-ssl.conf&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Do take note that if you made a mistake and you tested it, your browser may cache the 301 Redirect. Simply turn on your Developer tools (F11) and under Network, tick Disable Cache. That should allow you to go back to http://yourblog.example/ghost and try again.&lt;/p&gt;
&lt;h1&gt;Configure Security Headers in NGINX&lt;/h1&gt;
&lt;p&gt;Another thing you can do is add security headers to your NGINX config.&lt;/p&gt;
&lt;p&gt;Read the following article for more information: https://webdock.io/en/docs/how-guides/security-guides/how-to-configure-security-headers-in-nginx-and-apache&lt;/p&gt;
&lt;p&gt;Note: I have spent a long while to try and establish a proper Content Security Policy, but that doesn't seem to be possible with how Ghost themes are currently made. Your mileage may vary.&lt;/p&gt;</content><category term="Ghost, NGINX, Security"></category></entry><entry><title>Removing an element from a Binary Search Tree in Python</title><link href="https://blog.riamaria.com/removing-an-element-from-a-binary-search-tree-in-python.html" rel="alternate"></link><published>2022-10-24T00:00:00-07:00</published><updated>2022-10-24T00:00:00-07:00</updated><author><name>Maria Mora</name></author><id>tag:blog.riamaria.com,2022-10-24:/removing-an-element-from-a-binary-search-tree-in-python.html</id><summary type="html">&lt;p&gt;I’ve been taking Codecademy lessons recently and one of the bonus exercises was to figure out how to delete an element from a binary search tree. I figured I’d give it a shot.&lt;/p&gt;</summary><content type="html">&lt;blockquote&gt;
&lt;p&gt;💡 Note: Balancing the Binary Search Tree is out of scope for this blog post.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I’ve been taking &lt;a href="https://codecademy.com"&gt;Codecademy&lt;/a&gt; lessons recently and one of the bonus exercises was to figure out how to delete an element from a binary search tree. I figured I’d give it a shot.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;BinarySearchTree&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="fm"&gt;__init__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
      &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt;
      &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;left&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;None&lt;/span&gt;
      &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;right&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;None&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Given a binary search tree, you can imagine our working tree to be this image below:&lt;/p&gt;
&lt;p&gt;&lt;img alt="A binary search tree with 15 at its root, and the other numbers from 12 to 18 are perfectly placed within the binary search tree." src="https://blog.riamaria.com/images/blog/2022-10-24-bst/1.png"&gt;&lt;/p&gt;
&lt;h1&gt;Example 1: Removing node 15, the parent node (Tree Rotation)&lt;/h1&gt;
&lt;p&gt;Removing 15 from the tree means that you’ll have two separate trees. To balance this all out, we can do a tree rotation.&lt;/p&gt;
&lt;p&gt;First, we will get rid of 15 and make 16 the parent:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Two halves of the broken down binary search tree. Since 15 has been removed, its left and right children are orphaned. The right child, node 16, becomes the new parent and 14 is still orphaned." src="https://blog.riamaria.com/images/blog/2022-10-24-bst/2.png"&gt;&lt;/p&gt;
&lt;p&gt;Next, because the original left node (14) is orphaned, we would like to move 14 to be the leftmost node of the original tree (which would leave us with node 17).&lt;/p&gt;
&lt;p&gt;&lt;img alt="The orphaned node 14 from the previous figure is appended to the leftmost node (17) of the new parent node (16)." src="https://blog.riamaria.com/images/blog/2022-10-24-bst/3.png"&gt;&lt;/p&gt;
&lt;p&gt;We then add node 14 and its children to the previous leftmost node which is 17.&lt;/p&gt;
&lt;h1&gt;Example 2: Removing node 18, a node without children&lt;/h1&gt;
&lt;p&gt;The work for this is straightforward. We remove Node 18 and we will not have to do any other operations. As you will see in the code below, 16 basically just de-references 18 and we’re good as gold.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Our working Binary Search Tree without node 18." src="https://blog.riamaria.com/images/blog/2022-10-24-bst/4.png"&gt;&lt;/p&gt;
&lt;h1&gt;Example 3, Removing node 17 (Shift Left)&lt;/h1&gt;
&lt;p&gt;Removing 17 is pretty simple still because node 17 only has a left child. This means that we move node 14 to node 17’s position and not have to worry about an orphaned right node.&lt;/p&gt;
&lt;p&gt;&lt;img alt="The Binary Search Tree without node 17. Node 14 has shifted left and replaced node 17." src="https://blog.riamaria.com/images/blog/2022-10-24-bst/5.png"&gt;&lt;/p&gt;
&lt;h1&gt;The Code&lt;/h1&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;remove_dft&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;bool&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;right&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                &lt;span class="c1"&gt;# Move right node up to be the parent, then do tree rotation&lt;/span&gt;
                &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;right_rotation&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
            &lt;span class="k"&gt;elif&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                &lt;span class="c1"&gt;# Move left node up to be the parent&lt;/span&gt;
                &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;left_shift&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
            &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                &lt;span class="c1"&gt;# No children, this node needs to be de-referenced&lt;/span&gt;
                &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;None&lt;/span&gt;
                &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;True&lt;/span&gt;

    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;found&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;left&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;remove_dft&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;found&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="c1"&gt;# Dereference empty node&lt;/span&gt;
            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;left&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="kc"&gt;None&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;left&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;None&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;True&lt;/span&gt;

    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;right&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;found&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;right&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;remove_dft&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;found&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="c1"&gt;# Dereference empty node&lt;/span&gt;
            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;right&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="kc"&gt;None&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;right&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;None&lt;/span&gt;
                &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;True&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;False&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;left_shift&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="c1"&gt;# Shift left node to be the parent&lt;/span&gt;
        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;left&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt;
        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;right&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;left&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;right&lt;/span&gt;
        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;left&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;left&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;left&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;True&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;False&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;right_rotation&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;right&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="c1"&gt;# Rotate right node up&lt;/span&gt;
        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;right&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt;
        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;right&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;right&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;right&lt;/span&gt;

        &lt;span class="c1"&gt;# Move orphaned left node into the leftmost node of the new parent&lt;/span&gt;
        &lt;span class="n"&gt;orphaned_left_node&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;left&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;orphaned_left_node&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;right&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;right&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;leftmost_node&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;right&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;left&lt;/span&gt;
            &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;leftmost_node&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                &lt;span class="n"&gt;leftmost_node&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;leftmost_node&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;left&lt;/span&gt;
            &lt;span class="n"&gt;leftmost_node&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;left&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;orphaned_left_node&lt;/span&gt;
        &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;left&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;orphaned_left_node&lt;/span&gt;

        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;True&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;False&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h1&gt;Runtime&lt;/h1&gt;
&lt;p&gt;Because the tree isn’t necessarily balanced, the worst case runtime would be O(N) or linear.&lt;/p&gt;</content><category term="Python, Programming, Algorithms"></category></entry><entry><title>Ang Aking Pagiging Nonbinary</title><link href="https://blog.riamaria.com/ang-aking-pagiging-nonbinary.html" rel="alternate"></link><published>2021-06-30T00:00:00-07:00</published><updated>2021-06-30T00:00:00-07:00</updated><author><name>Maria Mora</name></author><id>tag:blog.riamaria.com,2021-06-30:/ang-aking-pagiging-nonbinary.html</id><summary type="html">&lt;p&gt;Ito ang aking pagtangka sa pagpapaliwanag ng aking kasarian.&lt;/p&gt;</summary><content type="html">&lt;p&gt;&lt;img alt="Pride Flag with they/them pronouns on a post-it note" src="https://blog.riamaria.com/images/blog/2021-06-30-nonbinary/nonbinary-1.png"&gt;&lt;/p&gt;
&lt;p&gt;Ito ang aking pagtangka sa pagpapaliwanag ng aking kasarian.&lt;/p&gt;
&lt;h1&gt;Gender Identity&lt;/h1&gt;
&lt;p&gt;Alam ninyo ang babae at saka lalake. Ito ang pinaguusapan pag pinapanganak ang sanggol.&lt;/p&gt;
&lt;p&gt;Sa nakasanayan ng marami, ang ari ng tao at saka ang kasarian ay pinagtutugma. Ang ari ng tao kung saan hinahango ang kanyang "kasarian" ay tawag na "assigned sex at birth". Ang aking assigned sex at birth ay Female. AFAB for short, assigned female at birth.&lt;/p&gt;
&lt;p&gt;Ang Gender o kaya Gender Identity ay hindi parating nakabase sa ari ng tao.&lt;/p&gt;
&lt;h1&gt;Homosexual at Transgender&lt;/h1&gt;
&lt;p&gt;Walang kinalaman ang assigned sex at birth sa gender identity. Maaaring iba ang gender identity sa kanyang assigned sex at birth.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;💡Pagusapan natin saglit ang Bakla. Alin dito sa tingin ninyo ang definition ng salitang Bakla?&lt;/p&gt;
&lt;p&gt;A. Lalaki na interesado sa kapwa lalaki&lt;/p&gt;
&lt;p&gt;B. Pinanganak na lalaki na ngayon ay babae&lt;/p&gt;
&lt;p&gt;Sa totoo, hindi ko alam ang tamang sagot. Sa pagkaka alam ko, pinaghalo ang parehong kahulugan sa salitang Bakla, ngunit pwedeng A lamang, B lamang, o pareho.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Definition of Terms&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Homosexual - Lalaki na interesado sa kapwa lalaki, o kaya babae na interesado sa kapwa babae&lt;/li&gt;
&lt;li&gt;Transgender Woman - Pinanganak na lalaki na ngayon ay babae&lt;/li&gt;
&lt;li&gt;Cisgender Woman - Pinanganak na babae at ngayon ay babae pa rin&lt;/li&gt;
&lt;li&gt;Transgender Man - Pinanganak na babae na ngayon ay lalaki&lt;/li&gt;
&lt;li&gt;Cisgender Man - Pinanganak na lalaki na ngayon ay lalaki pa rin&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ang cisgender woman saka transgender woman ay parehong babae, at parehong lalaki ang cisgender man at saka transgender man.&lt;/p&gt;
&lt;h1&gt;Nonbinary&lt;/h1&gt;
&lt;p&gt;Nakasanayan ng marami na dalawa lamang ang alam nilang kasarian. Ngunit marami pang ibang kasarian na ngayon palang napapagusapan ng marami. Kung ang kasarian na babae at lalaki ay binary (hango sa dalawa), ang mga ibang kasarian ay nonbinary.
Aking Gender Expression&lt;/p&gt;
&lt;p&gt;Ang aking karaniwang gender expression ngayon ay pambabaeng itsura. Habang ang anyo ko ay pambabae, ang aking gender identity ay nonbinary.&lt;/p&gt;
&lt;h1&gt;Ano Ngayon?&lt;/h1&gt;
&lt;p&gt;Ang hiling ko po lamang ay respetuhin ang aking SOGIE (sexual orientation, gender identity, and expression).&lt;/p&gt;
&lt;p&gt;Kapag nagsasalita ng Ingles, hiling ko po sa inyo na imbes na "SHE", gamitin niyo po "THEY" (kunwari higit sa isang tao ang tinutukoy ninyo).&lt;/p&gt;
&lt;p&gt;Kausapin niyo po ako kung may tanong kayo. Basta mabuting intention saka may respeto, sasagutin ko.&lt;/p&gt;
&lt;p&gt;Basahin niyo rin po ang mga link sa baba, under Further Reading.&lt;/p&gt;
&lt;h1&gt;Further Reading&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://twitter.com/MillennialOfMNL/status/1170243832690036736"&gt;https://twitter.com/MillennialOfMNL/status/1170243832690036736&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=FAkLNEEZtV8"&gt;https://www.youtube.com/watch?v=FAkLNEEZtV8&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pronoun.is/they"&gt;https://pronoun.is/they&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.instagram.com/p/CRUqN67rP16/"&gt;https://www.instagram.com/p/CRUqN67rP16/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content><category term="LGBTQ+, Filipino"></category></entry><entry><title>Typing Accented Characters on Windows 10</title><link href="https://blog.riamaria.com/typing-accented-characters-on-windows-10.html" rel="alternate"></link><published>2021-06-20T00:00:00-07:00</published><updated>2021-06-20T00:00:00-07:00</updated><author><name>Maria Mora</name></author><id>tag:blog.riamaria.com,2021-06-20:/typing-accented-characters-on-windows-10.html</id><summary type="html">&lt;p&gt;There are words and names that have accents. Sure, you could use alt key codes on Windows, but what if you're on a laptop without a numpad?&lt;/p&gt;</summary><content type="html">&lt;p&gt;There are words and names that have accents. Sure, you could use alt key codes on Windows, but what if you're on a laptop without a numpad?&lt;/p&gt;
&lt;h2&gt;Why is this important?&lt;/h2&gt;
&lt;p&gt;Not only is this good information to have, but by learning and practicing usage of accented letters, you also have the benefit of being respectful of people's names and languages aside from English.&lt;/p&gt;
&lt;h2&gt;Okay, how do I do this?&lt;/h2&gt;
&lt;p&gt;Go to Settings and choose Language. Choose Preferred Languages &amp;gt; English (United States) &amp;gt; Options&lt;/p&gt;
&lt;p&gt;&lt;img alt="Windows 10 Language Settings Screen" src="https://blog.riamaria.com/images/blog/2021-06-20-typing/w10-1.png"&gt;&lt;/p&gt;
&lt;p&gt;Next, choose "Add a keyboard", and choose "United States - International"&lt;/p&gt;
&lt;p&gt;&lt;img alt="Windows 10 Language Options Screen" src="https://blog.riamaria.com/images/blog/2021-06-20-typing/w10-2.png"&gt;&lt;/p&gt;
&lt;p&gt;After that, all you need to do is switch between keyboards. Your taskbar should now have a keyboard indicator (it may say "ENG US"). You can use CTRL + Shift to switch between keyboards.&lt;/p&gt;
&lt;h2&gt;Okay, but how do I use this?&lt;/h2&gt;
&lt;p&gt;On an international keyboard, if you wanted to do &lt;code&gt;é&lt;/code&gt; (&lt;code&gt;ALT&lt;/code&gt; + &lt;code&gt;0233&lt;/code&gt;), you could instead use &lt;code&gt;'&lt;/code&gt; + &lt;code&gt;e&lt;/code&gt; to make the character. Try it out!&lt;/p&gt;
&lt;p&gt;ñ can be a little bit trickier. Since tildes (&lt;code&gt;~&lt;/code&gt;) need shift and shift happens to change the capitalization of a given letter, you would have to turn on caps lock to get to the opposite, desired capitalization. Try it out: &lt;code&gt;caps lock&lt;/code&gt;, then &lt;code&gt;~&lt;/code&gt; + &lt;code&gt;n&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;You may notice that the accent characters may be a little bit difficult to figure out. You're trying to type a tilde by itself, for example. On the international keyboard, you can simply hit the space bar to make sure that the accent character does not try to accentuate the next character.&lt;/p&gt;
&lt;h2&gt;Check out the following guides for more details&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.microsoft.com/en-us/topic/keyboard-shortcuts-for-international-characters-108fa0c1-fb8e-4aae-9db1-d60407d13c35"&gt;Windows Support: Keyboard shortcuts for international characters&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://community.windows.com/en-us/stories/keyboard-shortcuts-for-typing-accent-marks-over-letters-in-windows-10"&gt;Keyboard shortcuts for typing accent marks over letters in Windows 10&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content><category term="Life Hacks"></category></entry></feed>