diff --git a/content/pages/02-development-environments/02-vim.markdown b/content/pages/02-development-environments/02-vim.markdown
index 10acf60ef..f37c04a5d 100644
--- a/content/pages/02-development-environments/02-vim.markdown
+++ b/content/pages/02-development-environments/02-vim.markdown
@@ -108,10 +108,6 @@ you are unfamiliar with.
* [Vim and Python](https://justin.abrah.ms/vim/vim_and_python.html) shows
and explains many Python-specific .vimrc options.
-* [Vim as a Python IDE](http://liuchengxu.org/posts/use-vim-as-a-python-ide/)
- shows a slew of plugins and configuration options for coding with Python
- in Vim.
-
* This
[repository's folder with Vimrc files](https://github.com/amix/vimrc/tree/master/vimrcs)
has example configurations that are well commented and easy to learn from.
diff --git a/content/pages/02-development-environments/15-application-dependencies.markdown b/content/pages/02-development-environments/15-application-dependencies.markdown
index 4fe802b6a..927a3720d 100644
--- a/content/pages/02-development-environments/15-application-dependencies.markdown
+++ b/content/pages/02-development-environments/15-application-dependencies.markdown
@@ -158,10 +158,6 @@ so far to get up to speed on building and releasing your own packages.
provides a collection of resources to understand how to package and
distribute Python code libraries.
-* [Alice in Python projectland](https://veekaybee.github.io/2017/09/26/python-packaging/)
- is an amazing post that takes the reader from simple Python script
- into a complete Python package.
-
* [How to Publish Your Package on PyPI](https://blog.jetbrains.com/pycharm/2017/05/how-to-publish-your-package-on-pypi/)
is for developers who have created a code library they would like to
share and make installable for other developers.
diff --git a/content/pages/02-development-environments/19-git.markdown b/content/pages/02-development-environments/19-git.markdown
index 9fdab73f2..5bffca262 100644
--- a/content/pages/02-development-environments/19-git.markdown
+++ b/content/pages/02-development-environments/19-git.markdown
@@ -240,10 +240,6 @@ minimize merge conflicts.
why at GitHub they do not use the git-flow model and provides an
alternative that solves some of the issues they found with git-flow.
-* [Git Workflows That Work](http://blog.endpoint.com/2014/05/git-workflows-that-work.html)
- is a helpful post with diagrams to show how teams can create a Git workflow
- that will help their development process.
-
* [Comparing workflows](https://www.atlassian.com/git/tutorials/comparing-workflows)
provides a slew of examples for how developers on a team can handle merge
conflicts and other situations that commonly arise when using Git.
diff --git a/content/pages/03-data/01-databases.markdown b/content/pages/03-data/01-databases.markdown
index ff780eff7..bad071a2c 100644
--- a/content/pages/03-data/01-databases.markdown
+++ b/content/pages/03-data/01-databases.markdown
@@ -100,7 +100,7 @@ Find out about Python applications with a MySQL backed on the dedicated
To work with a relational database using Python, you need to use a code
library. The most common libraries for relational databases are:
-* [psycopg2](http://initd.org/psycopg/)
+* [psycopg](https://www.psycopg.org/)
([source code](https://github.com/psycopg/psycopg2))
for PostgreSQL.
@@ -263,7 +263,7 @@ speed on SQL if you have never previously used it.
1. Install PostgreSQL on your server. Assuming you went with Ubuntu run
``sudo apt-get install postgresql``.
-1. Make sure the [psycopg2](http://initd.org/psycopg/) library is in your
+1. Make sure the [psycopg](https://www.psycopg.org/) library is in your
application's dependencies.
1. Configure your web application to connect to the PostgreSQL instance.
diff --git a/content/pages/03-data/02-postgresql.markdown b/content/pages/03-data/02-postgresql.markdown
index 34284a7e9..5e700895a 100644
--- a/content/pages/03-data/02-postgresql.markdown
+++ b/content/pages/03-data/02-postgresql.markdown
@@ -57,7 +57,7 @@ architecture.
To work with relational databases in Python you need to use a database
driver, which is also referred to as a database connector. The most common
driver library for working with PostgreSQL is
-[psycopg2](http://initd.org/psycopg/). There is
+[psycopg](https://www.psycopg.org/). There is
[a list of all drivers on the PostgreSQL wiki](https://wiki.postgresql.org/wiki/Python),
including several libraries that are no longer maintained. If you're
working with the
diff --git a/content/pages/03-data/05-object-relational-mappers.markdown b/content/pages/03-data/05-object-relational-mappers.markdown
index df5ce8bb0..6451908e8 100644
--- a/content/pages/03-data/05-object-relational-mappers.markdown
+++ b/content/pages/03-data/05-object-relational-mappers.markdown
@@ -64,7 +64,7 @@ there was a pressing reason.
Python ORM libraries are not required for accessing relational
databases. In fact, the low-level access is typically provided by another
library called a *database connector*, such as
-[psycopg](http://initd.org/psycopg/) (for PostgreSQL)
+[psycopg](https://www.psycopg.org/) (for PostgreSQL)
or [MySQL-python](https://pypi.org/project/MySQL-python/1.2.5) (for
MySQL). Take a look at the table below which shows how ORMs can work with
different web frameworks and connectors and relational databases.
diff --git a/content/pages/03-data/25-oracle.markdown b/content/pages/03-data/25-oracle.markdown
new file mode 100644
index 000000000..bf6b3cdc0
--- /dev/null
+++ b/content/pages/03-data/25-oracle.markdown
@@ -0,0 +1,165 @@
+title: Oracle
+category: page
+slug: Oracle
+sortorder: 0325
+toc: False
+sidebartitle: Oracle
+meta: Oracle Database is an enterprise relational database management system.
+
+
+[Oracle Database](http://www.oracle.com/) is an enterprise
+[relational database](/databases.html). It can run transaction processing,
+data warehousing, and multi-model database workloads such as machine
+learning, spatial, and graph analysis. Recent versions of Oracle Database
+also added support for JSON and blockchain use cases, and the software
+can be run in on-premise, cloud or hybrid environments.
+
+
+
+
+## How does Oracle fit with Python?
+The Python community and Oracle have a long history. The excellent Python Database API-compliant "cx_Oracle" interface for Oracle Database was first created by the user community in 1998 and is now being enhanced and maintained by Oracle. The [cx_Oracle](https://oracle.github.io/python-cx_Oracle/) module also underpins the [Oracle Machine Learning for Python](https://www.youtube.com/watch?v=P861m__PEMQ) engine. Oracle's high-performance GraalVM framework supports an implementation of Python called [GraalPython](https://github.com/oracle/graalpython).
+
+
+## Why is Oracle Database a great choice?
+Oracle Database is cross-platform, supporting multiple hardware platforms and various operating systems. Developers and companies of all sizes rely on its proven industry-leading performance, scalability, reliability, and security.
+As data volumes rise exponentially, new data types and data models are required to support modern applications. Oracle Database supports the following data types at no extra cost:
+
+* [JSON](https://docs.oracle.com/en/database/oracle/oracle-database/19/adjsn/index.html)
+* [Blockchain](https://docs.oracle.com/en/database/oracle/oracle-database/21/nfcon/details-oracle-blockchain-table-282449857.html)
+* [XML](https://www.oracle.com/database/technologies/appdev/xmldb.html)
+* [Object](https://docs.oracle.com/database/121/ADOBJ/adobjint.htm#ADOBJ00101)
+* [Graph](https://www.oracle.com/database/graph/)
+* [Spatial](https://www.oracle.com/database/spatial/)
+* [Time Series](https://docs.oracle.com/en/database/oracle/oracle-database/19/dmcon/time-series.html)
+* Relational
+
+With support for scale-out database clusters, sharded distributed systems, and disaster recovery with continuous application availability, there is no shortage of features to guarantee the Database continues to run uninterrupted 24/7.
+
+Oracle makes its enterprise-class database readily available to developers with its free on-premises edition Oracle Database XE or on the Oracle public cloud with an Always Free Cloud account. In addition, Oracle Autonomous Database is a popular choice for developers as no database management or tuning is required, leaving developers to do what they do best – writing code for their applications.
+
+
+## Connecting to Oracle Database with Python
+As with any database, applications require a connector or driver to connect to the Oracle Database. The Python DB API-compliant [cx_Oracle](https://github.com/oracle/python-cx_Oracle) interface provides developers access to standard and advanced Oracle Database features, such as SQL execution and document storage APIs. It also gives users access to network traffic encryption capabilities and Oracle's leading high availability features.
+
+[Code examples](https://oracle.github.io/python-cx_Oracle/samples/tutorial/Python-and-Oracle-Database-Scripting-for-the-Future.html) and free workshops such as the introductory [Python and Oracle for Developers Workshop](https://apexapps.oracle.com/pls/apex/dbpm/r/livelabs/view-workshop?wid=766) and a full-stack development workshop using [Python with SQLAlchemy to Oracle Database](https://apexapps.oracle.com/pls/apex/dbpm/r/livelabs/view-workshop?wid=911&clear=180&session=16650643444916) are available.
+
+
+
+You can use many Python frameworks and [object-relational mappers (ORMs)](/object-relational-mappers-orms.html) with Oracle Database. ORMs abstract the tables and objects in a relational database to objects that Python developers can manipulate and operate on. [SQLAlchemy](/sqlalchemy.html) and Django are popular ORMs. SQLAlchemy is used by Pandas, which is very popular with Oracle users.
+The table below shows the relationship between web framework, ORM, driver, and the Oracle Database.
+
+
+
+Learn more about
+[Python ORMs on that dedicated topic page](/object-relational-mappers-orms.html).
+
+ORMs provide a familiar programming model for Python developers, but sometimes you want that extra performance and operate closer to SQL objects. Oracle cx_Oracle offers several [functions](https://oracle.github.io/python-cx_Oracle/samples/tutorial/Python-and-Oracle-Database-Scripting-for-the-Future.html#binding) to deliver that performance. These functions include fetching data, binding data, executing PL/SQL, operating on LOBs, JSON documents, message passing with Oracle Advanced Queuing, and more.
+
+
+## Oracle and Data Safety
+According to Gartner, Oracle has one of the [highest data safety ratings](https://www.gartner.com/reviews/market/cloud-database-management-systems/vendor/oracle/product/oracle-database) in the industry, with a wide range of features for data protection and high availability. These features include:
+
+* [Database encryption](https://www.oracle.com/database/technologies/security/advanced-security.html)
+
+* [Access control to rows](https://www.oracle.com/database/technologies/security/label-security.html) in a table
+
+* [Database vault](https://www.oracle.com/database/technologies/security/db-vault.html) to restrict privileges and access
+
+* [Data redaction, subsetting, and masking](https://www.oracle.com/database/technologies/security/data-masking-subsetting.html)
+
+* All in one data security service in the Oracle Cloud with [Data Safe](https://www.oracle.com/database/technologies/security/data-safe.html)
+
+* Oracle also provides free tools such as the [Database Assessment Tool (DBSAT)](https://www.oracle.com/database/technologies/security/dbsat.html) to help you identify and remedy potential vulnerabilities.
+
+Oracle also provides numerous data recovery features, including:
+
+* Backup capabilities with [RMAN](https://www.oracle.com/database/technologies/high-availability/rman.html)
+
+* Restore point features with [Database Flashback](https://www.oracle.com/database/technologies/high-availability/flashback.html)
+
+* [Application continuity](https://www.oracle.com/database/technologies/high-availability/app-continuity.html) in the event of database failover to a standby
+
+For an overview of Oracle’s security and high availability architecture, see the following white papers:
+
+* [Maximum Availability Architecture](https://www.oracle.com/a/tech/docs/maa-onpremises-overview.pdf) (MAA)
+
+* [Maximum Security Architecture](https://blogs.oracle.com/cloudsecurity/post/oracles-maximum-security-architecture-for-database-security) (MSA)
+
+
+## Python Specific Oracle Database resources
+Many quick starts, tutorials, and workshops exist specifically for Python developers using Oracle Database. Below are some of the best ones to start with.
+
+
+###Getting Started
+If you are looking for a fast way to get started with Python and Oracle Database, check out these two quick start tutorials. These tutorials walk you through installing and setting up the environment you need to connect Python to Oracle Database.
+
+* [Quick Start: Developing Python Applications for Oracle Database](https://www.oracle.com/database/technologies/appdev/python/quickstartpythononprem.html)
+
+* [Quick Start: Developing Python Applications for Oracle Autonomous Database](https://www.oracle.com/database/technologies/appdev/python/quickstartpythononprem.html)
+
+Once you have done one of these, then continue with the popular [Python and Oracle Database Tutorial: Scripting for the Future](https://oracle.github.io/python-cx_Oracle/samples/tutorial/Python-and-Oracle-Database-Scripting-for-the-Future.html) to dive deeper to master the Python cx_Oracle interface and see how to build great Oracle Database applications.
+
+
+###Using Different Frameworks with Oracle
+* [How to Run SQL Queries with Pandas](https://www.oracle.com/news/connect/run-sql-data-queries-with-pandas.html) is a good blog using Pandas for quick and easy data manipulation in Python.
+
+* [Using Oracle with Pandas in OCI Data Science Notebooks](https://docs.oracle.com/en-us/iaas/tools/ads-sdk/latest/user_guide/loading_data/efficient_use_of_oracle_rdbms_with_ads.html) dives deeper into using Pandas with large datasets in data science applications.
+
+* [Using SQLAlchemy with Oracle Database](https://docs.sqlalchemy.org/en/14/dialects/oracle.html) provides an excellent toolkit for Python developers using SQLAlchemy as their ORM.
+
+* [Using Django with Python and Oracle Database](https://www.oracle.com/webfolder/technetwork/tutorials/obe/db/oow10/python_django/python_django.htm) is a tutorial from Oracle and shows the Django Framework with Python to an Oracle Database.
+
+* [Connecting Pony ORM to the Database](https://docs.ponyorm.org/database.html) is a friendly guide on using Pony with databases.
+
+* [How to use Python Flask with Oracle Database](https://blogs.oracle.com/opal/post/how-to-use-python-flask-with-oracle-database).
+
+* [Part 1: Docker for Oracle Database Applications in Node.js and Python](https://blogs.oracle.com/opal/post/part-1-docker-for-oracle-database-applications-in-nodejs-and-python).
+
+* [Part 2: Docker for Oracle Database Applications in Node.js and Python](https://blogs.oracle.com/opal/post/part-2-docker-for-oracle-database-applications-in-nodejs-and-python).
+
+* [Faster JSON with Python cx_Oracle and Oracle Database 21’s new OSON storage format](https://blogs.oracle.com/opal/post/faster-json-with-python-cx_oracle-81-and-oracle-database-21s-new-oson-storage-format).
+
+
+###Workshops
+The following hands-on, free workshops provide step-by-step instructions and walkthroughs in a live environment.
+
+* [Use Python with Oracle Database 19c](https://apexapps.oracle.com/pls/apex/dbpm/r/livelabs/view-workshop?wid=635&clear=180&session=3484600041895) is an Oracle LiveLabs workshop that shows how to write Python code to connect to and read data from an Oracle Database, including JSON data.
+
+* [Python and Oracle for Developers](https://apexapps.oracle.com/pls/apex/dbpm/r/livelabs/workshop-attendee-2?p210_workshop_id=766&p210_type=2&session=3484600041895) is an Oracle LiveLabs workshop that explores the features of the Python cx_Oracle interface for Oracle Database, including efficient techniques for connection management and statement handling.
+
+* [Full Stack Development using Python and deployment via OKE](https://apexapps.oracle.com/pls/apex/dbpm/r/livelabs/view-workshop?wid=911&clear=180&session=3484600041895) is an Oracle LiveLabs workshop that explores how to build and deploy a simple cloud-native application using the most common frameworks and the Oracle Cloud Infrastructure services.
+
+
+## Cloud Development with Oracle Database
+The following resources are good starting points for those looking to build applications in the Oracle Cloud and deploy applications in Docker containers and Kubernetes.
+
+* [The Complete Guide To Getting Up And Running With Docker And Kubernetes On The Oracle Cloud](https://blogs.oracle.com/developers/post/the-complete-guide-to-getting-up-and-running-with-docker-and-kubernetes-on-the-oracle-cloud).
+
+* [Oracle Cloud Blog](https://www.oc-blog.com/) has lots of interesting information on different aspects of Oracle Cloud.
+
+For developers looking to focus on application development in the Oracle Cloud and not have to worry about managing the Oracle Database, the Autonomous Database is a good choice. All management, including patching and upgrades, scalability, and security, are entirely autonomous. The following resources offer you a glimpse of its capabilities.
+
+* [Julien Dontcheff’s Database Blog](https://juliandontcheff.wordpress.com/category/autonomous/) is a good collection of technical posts with the Autonomous Database.
+
+* [SQL Maria](https://sqlmaria.com/category/autonomous-database/) also has some excellent posts on all things Oracle Database including Autonomous.
+
+* [An Introduction to Autonomous Database](https://questoraclecommunity.org/learn/blogs/oracles-autonomous-database-an-introduction/) gives you a good overview.
+
+* [Autonomous Database for researchers](https://blogs.oracle.com/research/post/a-roadmap-of-oracle-autonomous-database-benefits-for-research) is a good blog with details on some autonomous features.
+
+
+##General Oracle Database Resources
+Here are some Oracle tutorials and resources not specific to Python that can help you take advantage of the Oracle Database features.
+
+* [Oracle Technical Architecture](https://www.oracle.com/webfolder/technetwork/tutorials/architecture-diagrams/18/technical-architecture/database-technical-architecture.html) is from Oracle and has nice visuals and short paragraphs on the architecture of the Oracle Database.
+
+* [Oracle Database Internals](https://databaseinternalmechanism.com/oracle-database-internals/) is an excellent post explaining the architecture of the Oracle Database.
+
+* This [Oracle Performance Tuning](https://blog.quest.com/oracle-performance-tuning-a-5-step-approach-to-optimized-performance/) blog has a 5-step approach to tuning Oracle.
+
+* [Oracle RAC](https://databaseinternalmechanism.com/oracle-rac/) is another good post on the concepts of RAC, Oracle’s Real Application Cluster software for database high availability.
+
+* The [Oracle Database Security](https://www.oracle.com/database/technologies/security.html) web page has lots of information on Oracle’s solutions for security called “defense in depth.”
+
+* This is a good post on the [Top 5 Reasons to choose Oracle](https://www.dbta.com/Editorial/News-Flashes/Top-5-Reasons-to-Use-an-Oracle-Database-144191.aspx) for a production database.
diff --git a/content/pages/meta/00-change-log.markdown b/content/pages/meta/00-change-log.markdown
index edff17e51..bf6137a13 100644
--- a/content/pages/meta/00-change-log.markdown
+++ b/content/pages/meta/00-change-log.markdown
@@ -13,7 +13,26 @@ view commit-level changes via the
[source repository's commit log](https://github.com/mattmakai/fullstackpython.com/commits/)
on GitHub.
+## 2022
+### October
+* Starting to get back into updating this site again! Note that I'll probably
+ spend most of my side project time on [Plushcap](https://www.plushcap.com/)
+ but I'm removing old resources and adding new good ones on here to keep the
+ site maintained.
+
+### March
+* I decided to go so minimal that I removed the logo to make the site load
+ faster, and also got rid of some unncessary CSS on front page.
+
+### February
+* Still on break, but updated the header and footer. Also made some website
+ tweaks to make it faster.
+
## 2021
+### October
+* Taking a break for a few months to recharge and work on a different coding
+ side project that I'm excited about. Be back in a few months with some updates.
+
### September
* Clean up continues across the site to remove link rot and replace
out-of-date links with newer ones where necessary.
diff --git a/content/posts/160518-install-postgresql-python-3-ubuntu-1604.markdown b/content/posts/160518-install-postgresql-python-3-ubuntu-1604.markdown
index e5d4338cc..baf38465d 100644
--- a/content/posts/160518-install-postgresql-python-3-ubuntu-1604.markdown
+++ b/content/posts/160518-install-postgresql-python-3-ubuntu-1604.markdown
@@ -12,7 +12,7 @@ headeralt: PostgreSQL and Ubuntu logos. Copyright their respective owners.
[PostgreSQL](/postgresql.html) is a powerful open source
[relational database](/databases.html) frequently used to create, read,
update and delete [Python web application](/web-frameworks.html) data.
-[Psycopg2](http://initd.org/psycopg/) is a PostgreSQL database
+[Psycopg2](https://www.psycopg.org/) is a PostgreSQL database
driver that serves as a Python client for access to the PostgreSQL server.
This post explains how to install PostgreSQL on [Ubuntu 16.04](/ubuntu.html)
and run a few basic SQL queries within a Python program.
@@ -110,7 +110,7 @@ found in the
## Installing psycopg2
Now that PostgreSQL is installed and we have a non-superuser account, we
-can install the [psycopg2](http://initd.org/psycopg/) package. Let's
+can install the [psycopg2](https://www.psycopg.org/) package. Let's
figure out where our `python3` executable is located, create a virtualenv
with `python3`, activate the virtualenv and then install the psycopg2 package
with `pip`. Find your `python3` executable using the `which` command.
diff --git a/content/posts/170723-monitor-flask-apps.markdown b/content/posts/170723-monitor-flask-apps.markdown
index b3cd8b760..4ef02bfc6 100644
--- a/content/posts/170723-monitor-flask-apps.markdown
+++ b/content/posts/170723-monitor-flask-apps.markdown
@@ -165,7 +165,7 @@ The above [Jinja2](/jinja2.html) template is basic HTML without any
[embedded template tags](http://jinja.pocoo.org/docs/latest/templates/).
The template creates a very plain page with a header description of
"PUBG so good" and a GIF from this
-[excellent computer game](http://store.steampowered.com/app/578080/PLAYERUNKNOWNS_BATTLEGROUNDS/).
+[excellent computer game](https://store.steampowered.com/app/578080/PUBG_BATTLEGROUNDS/).
Time to run and test our code. Change into the base directory of your
project where `app.py` file is located. Execute `app.py` using the `python`
diff --git a/content/posts/200308-financial-resources-developers.markdown b/content/posts/200308-financial-resources-developers.markdown
index fb0619334..80f2560d0 100644
--- a/content/posts/200308-financial-resources-developers.markdown
+++ b/content/posts/200308-financial-resources-developers.markdown
@@ -77,7 +77,7 @@ macroeconomic data trends.
is well-written, straightforward and accessible, particularly because
it clearly targets its software developer audience.
-* [Don't Quit Your Day Job](https://dqydj.com/) uses a ton of metrics
+* [Don't Quit Your Day Job](https://dqydj.com) uses a ton of metrics
and statistics to ground their articles on financial topics that
are often relevant specifically to software developers. For example,
the article on
diff --git a/static/img/fsp-fav.png b/static/img/fsp-fav.png
index 28a9f6cdb..3a2f75910 100644
Binary files a/static/img/fsp-fav.png and b/static/img/fsp-fav.png differ
diff --git a/static/img/logos/cloudflare.png b/static/img/logos/cloudflare.png
new file mode 100644
index 000000000..b6a18d47e
Binary files /dev/null and b/static/img/logos/cloudflare.png differ
diff --git a/static/img/logos/oracle.jpg b/static/img/logos/oracle.jpg
new file mode 100644
index 000000000..6e8fec361
Binary files /dev/null and b/static/img/logos/oracle.jpg differ
diff --git a/static/img/visuals/cx-oracle.jpg b/static/img/visuals/cx-oracle.jpg
new file mode 100644
index 000000000..878e7d285
Binary files /dev/null and b/static/img/visuals/cx-oracle.jpg differ
diff --git a/static/img/visuals/oracle-orm-examples.jpg b/static/img/visuals/oracle-orm-examples.jpg
new file mode 100644
index 000000000..adae67764
Binary files /dev/null and b/static/img/visuals/oracle-orm-examples.jpg differ
diff --git a/theme/templates/base.html b/theme/templates/base.html
index 6c14fbb83..93e3ad132 100644
--- a/theme/templates/base.html
+++ b/theme/templates/base.html
@@ -17,9 +17,8 @@
{% block content %}{% endblock %}