\n"
-" Welcome to the home of Shifoo (previously That Computer "
-"Scientist). My name is @bobby, and "
-"this is my personal\n"
-" website. I aim to build a retro looking personal website, where I share "
-"my thoughts, ideas, and experiences through articles, and will showcase some "
-"cool nostalgic features and tools.\n"
-"
\n"
-"
\n"
-" Please note that I am continuously working on this site, and it is still "
-"under construction. So, not all features are available yet, and some "
-"features may not work as intended.\n"
-"
\n"
-"
\n"
-" There's also a some of fun stuff you can find "
-"in the sidebar, that you can play around with. I will be adding more in the "
-"not so distant future.\n"
-" Also, To participate around various sections of the site, you will need "
-"to register for an account. I hope you "
-"enjoy your stay here.\n"
-"
\n"
-" "
-msgstr ""
+msgid "Hello, %(username)s"
+msgstr "こんにちは、%(username)sさん"
-#: thatcomputerscientist/settings.py:231
-msgid "English"
-msgstr ""
+#: templates/_partials/left_sidebar.html:34
+msgid "Journals"
+msgstr "ジャーナル"
-#: thatcomputerscientist/settings.py:232
-msgid "Japanese"
-msgstr ""
+#: templates/_partials/left_sidebar.html:38
+msgid "The Pagoda Realm"
+msgstr "パゴダレルム"
+
+#: templates/_partials/left_sidebar.html:42
+msgid "My Page"
+msgstr "マイページ"
+#: templates/_partials/left_sidebar.html:46
+msgid "Logout"
+msgstr "ログアウト"
diff --git a/localegen.sh b/localegen.sh
new file mode 100644
index 00000000..ab7f0888
--- /dev/null
+++ b/localegen.sh
@@ -0,0 +1,88 @@
+#!/bin/bash
+
+# Colors
+CYAN='\033[0;36m'
+GREEN='\033[0;32m'
+YELLOW='\033[1;33m'
+BLUE='\033[0;34m'
+PURPLE='\033[0;35m'
+RED='\033[0;31m'
+NC='\033[0m' # No Color
+BOLD='\033[1m'
+
+clear
+
+# ASCII Art
+echo -e "${CYAN}
+ ████████╗██████╗ █████╗ ███╗ ██╗███████╗██╗ █████╗ ████████╗███████╗
+ ╚══██╔══╝██╔══██╗██╔══██╗████╗ ██║██╔════╝██║ ██╔══██╗╚══██╔══╝██╔════╝
+ ██║ ██████╔╝███████║██╔██╗ ██║███████╗██║ ███████║ ██║ █████╗
+ ██║ ██╔══██╗██╔══██║██║╚██╗██║╚════██║██║ ██╔══██║ ██║ ██╔══╝
+ ██║ ██║ ██║██║ ██║██║ ╚████║███████║███████╗██║ ██║ ██║ ███████╗
+ ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═══╝╚══════╝╚══════╝╚═╝ ╚═╝ ╚═╝ ╚══════╝
+ ${NC}"
+
+echo -e "${PURPLE} ᕕ(⌐■_■)ᕗ ${GREEN}Locale generation tool ${YELLOW}for Japanese templates${NC}\n"
+
+LANG_CODE="ja"
+
+generate_messages() {
+ echo -e "\n${BOLD}${YELLOW}Generating translation messages for ${LANG_CODE} (HTML templates only)...${NC}\n"
+
+ python manage.py makemessages -l ${LANG_CODE} -e html \
+ --ignore="templates.old/*" \
+ --ignore="venv/*"
+
+ echo -e "\n${GREEN}✓ Translation message files successfully generated!${NC}"
+ echo -e "${BLUE}You can now edit the .po files in locale/${LANG_CODE}/LC_MESSAGES/${NC}\n"
+}
+
+compile_messages() {
+ echo -e "\n${BOLD}${YELLOW}Compiling translation messages for ${LANG_CODE}...${NC}\n"
+
+ if [[ ! -d "locale/${LANG_CODE}/LC_MESSAGES" ]]; then
+ echo -e "${RED}Error: Could not find locale/${LANG_CODE}/LC_MESSAGES directory.${NC}"
+ exit 1
+ fi
+
+ cd locale/${LANG_CODE}/LC_MESSAGES || exit 1
+
+ if [[ ! -f "django.po" ]]; then
+ echo -e "${RED}Error: Could not find django.po file in locale/${LANG_CODE}/LC_MESSAGES directory.${NC}"
+ echo -e "${YELLOW}Tip: Run the generate option first to create translation files.${NC}"
+ cd - > /dev/null
+ exit 1
+ fi
+
+ echo -e "${BLUE}Compiling django.po...${NC}"
+ if msgfmt django.po -o django.mo; then
+ echo -e "${GREEN}✓ Compiled django.mo successfully.${NC}"
+ else
+ echo -e "${RED}Error: Failed to compile django.po${NC}"
+ cd - > /dev/null
+ exit 1
+ fi
+
+ cd - > /dev/null
+ echo -e "\n${GREEN}✓ Translation messages compilation complete!${NC}\n"
+}
+
+echo -e "${BOLD}${CYAN}What do you want to do?${NC}"
+echo -e " ${GREEN}g${NC} - Generate translation messages"
+echo -e " ${BLUE}c${NC} - Compile translation messages"
+echo -n -e "${YELLOW}Choose an option ${NC}[${GREEN}g${NC}]: "
+read -n 1 action
+echo ""
+
+case "$action" in
+ "g"|"")
+ generate_messages
+ ;;
+ "c")
+ compile_messages
+ ;;
+ *)
+ echo -e "\n${RED}Error: Invalid option. Use 'g' for generate or 'c' for compile.${NC}"
+ exit 1
+ ;;
+esac
\ No newline at end of file
diff --git a/middleware/userprofilemiddleware.py b/middleware/userprofilemiddleware.py
new file mode 100644
index 00000000..724f7f04
--- /dev/null
+++ b/middleware/userprofilemiddleware.py
@@ -0,0 +1,14 @@
+from django.utils.deprecation import MiddlewareMixin
+from users.models import UserProfile
+
+class UserProfileMiddleware(MiddlewareMixin):
+ def process_request(self, request):
+ if request.user.is_authenticated:
+ try:
+ user_profile = UserProfile.objects.get(user=request.user)
+ except UserProfile.DoesNotExist:
+ user_profile = UserProfile(user=request.user)
+ user_profile.save()
+ request.user.profile = user_profile
+ else:
+ request.user.profile = None
\ No newline at end of file
diff --git a/runserver.sh b/runserver.sh
deleted file mode 100755
index 5a84a06c..00000000
--- a/runserver.sh
+++ /dev/null
@@ -1,70 +0,0 @@
-#!/bin/bash
-
-# Function to check if mkcert is installed
-check_mkcert_installed() {
- if ! command -v mkcert &> /dev/null; then
- echo "mkcert is not installed. Installing mkcert..."
- brew install mkcert # Assuming you're using Homebrew to install mkcert
- fi
-}
-
-# Function to check if the mkcert local CA is installed and install it if not present
-check_and_install_local_ca() {
- if ! mkcert -CAROOT &> /dev/null; then
- echo "Installing mkcert local CA..."
- mkcert -install
- fi
-}
-
-# Function to set the DOMAIN value in the .env file
-set_domain_in_env() {
- domain=$1
- sed -i "" "s/^DOMAIN=.*/DOMAIN='.${domain}'/" .env
-}
-
-# Function to run the development server
-run_dev_server() {
- domain=$1
- cert_file="SSL/${domain}+1.pem"
- key_file="SSL/${domain}+1-key.pem"
-
- if [[ -f "$cert_file" && -f "$key_file" ]]; then
- set_domain_in_env "$domain"
- sudo python3 manage.py runsslserver 127.0.0.1:443 --certificate "$cert_file" --key "$key_file"
- else
- echo "Certificate files not found. Generating self-signed certificate..."
- mkdir -p SSL && cd SSL
- mkcert "${domain}" "*.${domain}"
- cd ..
- set_domain_in_env "$domain"
- sudo python3 manage.py runsslserver 127.0.0.1:443 --certificate "$cert_file" --key "$key_file"
- fi
-}
-
-# Main script
-
-# Check if mkcert is installed and install if not present
-check_mkcert_installed
-
-# Present options to the user
-echo "Choose an option:"
-echo "[1]: (*).[peek].shi.foo"
-echo "[2]: (*).[peek].thatcomputerscientist.com"
-read -p "Enter your choice (1 or 2): " choice
-
-case $choice in
- 1)
- domain="peek.shi.foo"
- check_and_install_local_ca
- run_dev_server "$domain"
- ;;
- 2)
- domain="peek.thatcomputerscientist.com"
- check_and_install_local_ca
- run_dev_server "$domain"
- ;;
- *)
- echo "Invalid choice. Exiting..."
- exit 1
- ;;
-esac
diff --git a/static/images/core/icons/anime.png b/static/images/core/icons/anime.png
new file mode 100644
index 00000000..27750e47
Binary files /dev/null and b/static/images/core/icons/anime.png differ
diff --git a/static/images/core/icons/calendar.png b/static/images/core/icons/calendar.png
new file mode 100644
index 00000000..fc024771
Binary files /dev/null and b/static/images/core/icons/calendar.png differ
diff --git a/static/images/core/icons/census.png b/static/images/core/icons/census.png
new file mode 100644
index 00000000..c13d25d4
Binary files /dev/null and b/static/images/core/icons/census.png differ
diff --git a/static/images/core/icons/changelanguage.png b/static/images/core/icons/changelanguage.png
new file mode 100644
index 00000000..d2f4df83
Binary files /dev/null and b/static/images/core/icons/changelanguage.png differ
diff --git a/static/images/core/icons/chatrooms.png b/static/images/core/icons/chatrooms.png
new file mode 100644
index 00000000..0641f621
Binary files /dev/null and b/static/images/core/icons/chatrooms.png differ
diff --git a/static/images/core/icons/coin.png b/static/images/core/icons/coin.png
new file mode 100644
index 00000000..4be6fe09
Binary files /dev/null and b/static/images/core/icons/coin.png differ
diff --git a/static/images/core/icons/discussions.png b/static/images/core/icons/discussions.png
new file mode 100644
index 00000000..0fb0bd5f
Binary files /dev/null and b/static/images/core/icons/discussions.png differ
diff --git a/static/images/core/icons/dvd.png b/static/images/core/icons/dvd.png
new file mode 100644
index 00000000..ee045037
Binary files /dev/null and b/static/images/core/icons/dvd.png differ
diff --git a/static/images/core/icons/folder.png b/static/images/core/icons/folder.png
new file mode 100644
index 00000000..807f1690
Binary files /dev/null and b/static/images/core/icons/folder.png differ
diff --git a/static/images/core/icons/games.png b/static/images/core/icons/games.png
new file mode 100644
index 00000000..1bd3fc2e
Binary files /dev/null and b/static/images/core/icons/games.png differ
diff --git a/static/images/core/icons/guestbook.png b/static/images/core/icons/guestbook.png
new file mode 100644
index 00000000..0cf514c4
Binary files /dev/null and b/static/images/core/icons/guestbook.png differ
diff --git a/static/images/core/icons/harlemshake.gif b/static/images/core/icons/harlemshake.gif
new file mode 100644
index 00000000..0ef493b0
Binary files /dev/null and b/static/images/core/icons/harlemshake.gif differ
diff --git a/static/images/core/icons/home.png b/static/images/core/icons/home.png
new file mode 100644
index 00000000..0bfbd03c
Binary files /dev/null and b/static/images/core/icons/home.png differ
diff --git a/static/images/core/icons/journalofrandomthoughts.png b/static/images/core/icons/journalofrandomthoughts.png
new file mode 100644
index 00000000..845863a2
Binary files /dev/null and b/static/images/core/icons/journalofrandomthoughts.png differ
diff --git a/static/images/core/icons/journals.png b/static/images/core/icons/journals.png
new file mode 100644
index 00000000..535e090e
Binary files /dev/null and b/static/images/core/icons/journals.png differ
diff --git a/static/images/core/icons/logout.png b/static/images/core/icons/logout.png
new file mode 100644
index 00000000..61b7b260
Binary files /dev/null and b/static/images/core/icons/logout.png differ
diff --git a/static/images/core/icons/marketplace.png b/static/images/core/icons/marketplace.png
new file mode 100644
index 00000000..c231f8f8
Binary files /dev/null and b/static/images/core/icons/marketplace.png differ
diff --git a/static/images/core/icons/matrix.png b/static/images/core/icons/matrix.png
new file mode 100644
index 00000000..d445aa1c
Binary files /dev/null and b/static/images/core/icons/matrix.png differ
diff --git a/static/images/core/icons/music.png b/static/images/core/icons/music.png
new file mode 100644
index 00000000..68bb414d
Binary files /dev/null and b/static/images/core/icons/music.png differ
diff --git a/static/images/core/icons/myanimelist.png b/static/images/core/icons/myanimelist.png
new file mode 100644
index 00000000..a079fb91
Binary files /dev/null and b/static/images/core/icons/myanimelist.png differ
diff --git a/static/images/core/icons/mypage.png b/static/images/core/icons/mypage.png
new file mode 100644
index 00000000..3e7c64f7
Binary files /dev/null and b/static/images/core/icons/mypage.png differ
diff --git a/static/images/core/icons/pagodarealm.png b/static/images/core/icons/pagodarealm.png
new file mode 100644
index 00000000..df1bcfab
Binary files /dev/null and b/static/images/core/icons/pagodarealm.png differ
diff --git a/static/images/core/icons/pamphlet.png b/static/images/core/icons/pamphlet.png
new file mode 100644
index 00000000..397063ef
Binary files /dev/null and b/static/images/core/icons/pamphlet.png differ
diff --git a/static/images/core/icons/preferences.png b/static/images/core/icons/preferences.png
new file mode 100644
index 00000000..5d977bfb
Binary files /dev/null and b/static/images/core/icons/preferences.png differ
diff --git a/static/images/core/icons/registeraccount.png b/static/images/core/icons/registeraccount.png
new file mode 100644
index 00000000..071ceff2
Binary files /dev/null and b/static/images/core/icons/registeraccount.png differ
diff --git a/static/images/core/icons/repositories.png b/static/images/core/icons/repositories.png
new file mode 100644
index 00000000..6c2f4bba
Binary files /dev/null and b/static/images/core/icons/repositories.png differ
diff --git a/static/images/core/icons/rss.png b/static/images/core/icons/rss.png
new file mode 100644
index 00000000..73d16e8a
Binary files /dev/null and b/static/images/core/icons/rss.png differ
diff --git a/static/images/core/icons/screenshots.png b/static/images/core/icons/screenshots.png
new file mode 100644
index 00000000..563dd621
Binary files /dev/null and b/static/images/core/icons/screenshots.png differ
diff --git a/static/images/core/icons/shrines.png b/static/images/core/icons/shrines.png
new file mode 100644
index 00000000..f0000eba
Binary files /dev/null and b/static/images/core/icons/shrines.png differ
diff --git a/static/images/core/icons/socialify.png b/static/images/core/icons/socialify.png
new file mode 100644
index 00000000..529d0cae
Binary files /dev/null and b/static/images/core/icons/socialify.png differ
diff --git a/static/images/core/icons/summon_oneko.gif b/static/images/core/icons/summon_oneko.gif
new file mode 100644
index 00000000..5f43a2ce
Binary files /dev/null and b/static/images/core/icons/summon_oneko.gif differ
diff --git a/static/images/core/icons/useraccount.png b/static/images/core/icons/useraccount.png
new file mode 100644
index 00000000..2938efb7
Binary files /dev/null and b/static/images/core/icons/useraccount.png differ
diff --git a/static/images/core/icons/weblog.gif b/static/images/core/icons/weblog.gif
new file mode 100644
index 00000000..53bb81db
Binary files /dev/null and b/static/images/core/icons/weblog.gif differ
diff --git a/static/images/core/icons/webring.png b/static/images/core/icons/webring.png
new file mode 100644
index 00000000..b89e422a
Binary files /dev/null and b/static/images/core/icons/webring.png differ
diff --git a/static/images/core/icons/withdraw_oneko.gif b/static/images/core/icons/withdraw_oneko.gif
new file mode 100644
index 00000000..b7cddb4c
Binary files /dev/null and b/static/images/core/icons/withdraw_oneko.gif differ
diff --git a/templates.old/400.html b/templates.old/400.html
new file mode 100644
index 00000000..41beaa4e
--- /dev/null
+++ b/templates.old/400.html
@@ -0,0 +1,10 @@
+{% extends 'blog/partials/base.html' %} {% block content %}
+{% load static %}
+
+
+
400 Bad Request
+
Unfortunately, something went wrong. The server could not understand your request.
Hey! Skippy here! I am the 404 Assistant Bot for this site. Looks like you are trying to search an article, but I couldn't find the page. {% if context.similar_posts %}Maybe you are looking for one of these?{% endif %}
Hey! Skippy here! I am the 404 Assistant Bot for this site. Looks like you are trying to search a user with username {{ context.username }} but I couldn't find any user with that username. {% if context.similar_users %}Maybe you are looking for one of these users?{% endif %}
Choose an avatar from the list below. The avatars are grouped by their theme.
+
+
+ {% elif request.GET.tab == 'blinkies' %}
+
+
Choose a blinkie to display on your public profile.
+
+
+
+ {% elif request.GET.tab == 'details' %}
+
+
Change your account details here. You can change your first name, last name, bio, email and activity visibility.
+
+
+ {% elif request.GET.tab == 'email' %}
+
+
Change your email address here. Your current registered email is {{ user.email }}. Please note that a verification email will be sent to the new email address in order to update the current email address. Please provide the new email address in the box below:
+
+
+ {% elif request.GET.tab == 'password' %}
+
+
+
+ {% elif request.GET.tab == 'delete' and not user.is_superuser %}
+
+
Deleting your account will remove all your posts, comments and other data from the website. Please note that this action is irreversible. If you wish to delete your account, please enter your password in the box below:
+
+
+ {% else %}
+
+
You can change account settings for {{ user.username }} here. If you wish to have additional support, please contact me at webmaster@thatcomputerscientist.com. Please take care of the following points before you submit your support request:
+
+
Please do not edit the subject line.
+
As an individual monitoring this email, I request you to refrain yourself from spamming.
+
Please do not include any sensitive information (like credit card numbers, passwords, etc.) in the email.
+
Allow me upto 48 hours to respond to your support request.
+
Do not send multiple support requests.
+
Please note that this is a support request related to your account. Please do not file any bugs here. If you have noticed a bug, please report it to the GitHub Issues page.
+ {% url 'blog:user_activity' 'bobby' as bobby_profile_url %}
+ {% url 'blog:register' as register_url %}
+ {% blocktrans %}
+
+ Welcome to the home of Shifoo (previously That Computer Scientist). My name is @bobby, and this is my personal
+ website. I aim to build a retro looking personal website, where I share my thoughts, ideas, and experiences through articles, and will showcase some cool nostalgic features and tools.
+
+
+ Please note that I am continuously working on this site, and it is still under construction. So, not all features are available yet, and some features may not work as intended.
+
+
+ There's also a some of fun stuff you can find in the sidebar, that you can play around with. I will be adding more in the not so distant future.
+ Also, To participate around various sections of the site, you will need to register for an account. I hope you enjoy your stay here.
+
+ {% endblocktrans %}
+
+
+
+
+
+
+
+
+ {% if announcements is not None %}
+
+ {% endif %}
+
+
+{% endfor %}
+
diff --git a/templates.old/blog/partials/search/post_list.html b/templates.old/blog/partials/search/post_list.html
new file mode 100644
index 00000000..811c417e
--- /dev/null
+++ b/templates.old/blog/partials/search/post_list.html
@@ -0,0 +1,23 @@
+{% load tz %}
+{% load static %}
+{% for post in posts %}
+ {% comment %} This is the plain small version for search list {% endcomment %}
+
+
+{% endfor %}
\ No newline at end of file
diff --git a/templates.old/blog/partials/search/user_list.html b/templates.old/blog/partials/search/user_list.html
new file mode 100644
index 00000000..3493508c
--- /dev/null
+++ b/templates.old/blog/partials/search/user_list.html
@@ -0,0 +1,13 @@
+{% load static %}
+{% for user in users %}
+
+{% endfor %}
\ No newline at end of file
diff --git a/templates.old/blog/partials/sidebar.html b/templates.old/blog/partials/sidebar.html
new file mode 100644
index 00000000..458ddbee
--- /dev/null
+++ b/templates.old/blog/partials/sidebar.html
@@ -0,0 +1,424 @@
+{% load static %}
+{% comment %} Login Area {% endcomment %}
+{% if not user.is_authenticated %}
+
+{% for message in messages %}
+{% if 'loginError' in message.tags %}
+ {% if message.message == "ENVERR" and request.GET.username %}
+
+ {% endif %}
+
+{% endif %}
+
+{% if anonymous_users or logged_in_users or admin_users %}
+
+
Who's Online?
+
+
In total, there {% if not anonymous_users|add:logged_in_users|add:admin_users == 1%}are{% else %}is{% endif %} {{ anonymous_users|add:logged_in_users|add:admin_users }} user{% if not anonymous_users|add:logged_in_users|add:admin_users == 1%}s{% endif %} online ::
+
+
{{ anonymous_users }} Guest{% if not anonymous_users == 1%}s{% endif %}
+
{{ logged_in_users }} Registered User{% if not logged_in_users == 1%}s{% endif %}
+
{{ admin_users }} Staff Member{% if not admin_users == 1%}s{% endif %}
+
+
(Based on users active over the past 5 minutes)
+
+
+{% endif %}
+
+
+
You are Visitor #
+
+ 0
+ 0
+ 6
+ 9
+ 4
+ 2
+ 0
+
+
____________________________________ This is just a nice random number!
+ {% endif %}
+ {% if comment.anonymous_user.name and comment.anonymous_user.email and comment.anonymous_user.token and comment.anonymous_user.token == request.COOKIES.anonymous_token|sha256 %}
+
+
+
+ {% endif %}
+
+
+
+
+ {% endfor %}
+
+{% else %}
+
+
Sadly, there are no comments yet. Be the first to leave one!
+
+{% endif %}
+
+{% if user.is_authenticated %}
+
+
Leave a Comment
+ {% if messages %}
+ {% for message in messages %}
+ {% if 'spam' in message.tags %}
+
Your comment was not allowed as it was marked as possible spam. If you think this is a mistake, please contact me at webmaster@thatcomputerscientist.com.
+ {% endif %}
+ {% endfor %}
+ {% endif %}
+
+
+
+{% else %}
+
+
Leave a Comment
+ {% if messages %}
+ {% for message in messages %}
+ {% if 'spam' in message.tags %}
+
Your comment was not allowed as it was marked as possible spam. If you think this is a mistake, please contact me at webmaster@thatcomputerscientist.com.
+ Register for an account to post your thoughts and get feedback from other
+ users.
+
+
+
+
+
+ By registering on this site, you agree to everything that's
+ written here.
+
+
+ Note: Upon registering, you will be sent an email with a link to
+ activate your account. If you don't activate your account within 72 hours,
+ your username will be released and you will have to register again.
+
+{% for message in messages %} {% if 'accountCreated' in message.tags %}
+
+ Forgot your password? No problem! Just enter your email address below, (the
+ email you registered with) and I will send you a link to reset your password.
+
+
+
+
+
Anonymous users cannot reset their password.
+{% for message in messages %} {% if 'passwordReset' in message.tags %}
+
Your search for "{{ request.GET.q }}" returned {{ search_results }} Result{% if search_results != 1 %}s{% endif %}.
+
+ {% if 'posts' in search_in %}
+
Posts
+ {% if posts|length != 0 %}
+ {% include 'blog/partials/search/post_list.html' %}
+ {% else %}
+
No matching posts found.
+ {% endif %}
+
+ {% endif %}
+
+ {% if 'users' in search_in %}
+
Users
+ {% if users|length != 0 %}
+ {% include 'blog/partials/search/user_list.html' %}
+ {% else %}
+
No matching users found.
+ {% endif %}
+ {% endif %}
+
+ {% if 'comments' in search_in %}
+
Comments
+ {% if comments|length != 0 %}
+ {% include 'blog/partials/search/comment_list.html' %}
+ {% else %}
+
No matching comments found.
+ {% endif %}
+ {% endif %}
+
+
+
+
+{% endblock %}
+{% block scripts %}
+{% include 'blog/partials/mathjax.html' %}
+{% endblock %}
\ No newline at end of file
diff --git a/templates.old/blog/site_policy.html b/templates.old/blog/site_policy.html
new file mode 100644
index 00000000..683e2c07
--- /dev/null
+++ b/templates.old/blog/site_policy.html
@@ -0,0 +1,87 @@
+{% extends 'blog/partials/base.html' %} {% block content %}
+
+
I see cookies! Wait, Do you track me?
+
This site uses cookies to store information on your computer. These cookies are required to enable the login functionality of the site. They are not used for tracking purposes.
+
Update: W.E.F May 27, 2023, this site will employ Google Analytics to track user activity. Also Cloudflare's Browser Insights will be used to track performance metrics. (Redacted! No tracking is involved. Enjoy your privacy!)
+
+
Also, do not sell my data!
+
Any personal information you provide here will be kept confidential and will not be sold, rented, loaned, or otherwise disclosed. Any information you provide will be held with the utmost care, and will not be used in ways that you have not consented to. If you have any questions, please feel free to contact me at webmaster@thatcomputerscientist.com.
+
+
What are these Advertisements?
+
As you know, one of the main goals to this site is to maintain a retro look. The advertisements are a part of that. The ads shown on this website are fake and purely for aesthetic purposes. They are just images of ads from the early days of the internet to spark the nostalgia. I do not make any money from these ads.
+
+
I wanna say something in the comments...
+
Not so fast! Before you post a comment, know that comments are moderated. I will employ general moderation tools to prevent spam and other undesirable content. I also reserve the right to edit or delete any comments submitted to this site without notice due to any of the following reasons:
+
+
Comments deemed to be spam or questionable spam
+
Comments including profanity
+
Comments containing language or concepts that could be deemed offensive
+
Comments that attack a group or individual
+
Comments that harass other posters
+
Comments that are off-topic
+
+
+
Comments are not for promoting your articles or other sites. Spam will be deleted and repeated offenses will result in a ban.
+
+
Comments are not for asking questions or help. I may open a forum soon, if I ever wanted to entend the features on the site. Also, remember that Stack Overflow and Reddit are your best friends.
+
+
+
Rules, you say? Anything else?
+
Yes, by using this site, you agree to the following terms and conditions:
+
+
You will not post any content that is illegal, obscene, defamatory, threatening, harassing, abusive, hateful, or embarrassing to any other person or entity as determined by us.
+
You will not post any content that infringes any patent, trademark, trade secret, copyright or other proprietary rights of any party.
+
You will not post any unsolicited or unauthorized advertising, promotional materials, junk mail, spam, chain letters, pyramid schemes, or any other form of solicitation.
+
You will not post any material that contains software viruses or any other computer code, files or programs designed to interrupt, destroy or limit the functionality of any computer software or hardware or telecommunications equipment.
+
You will not impersonate any person or entity, including, but not limited to, a blog author, forum leader, guide or host, or falsely state or otherwise misrepresent your affiliation with a person or entity.
+
You will not forge headers or otherwise manipulate identifiers in order to disguise the origin of any content transmitted through the blog.
+
You will not post any content that is knowingly false and/or defamatory, inaccurate, abusive, vulgar, hateful, harassing, obscene, profane, sexually oriented, threatening, invasive of a person's privacy, or otherwise violative of any law.
+
You will not post any content that may infringe any patent, trademark, trade secret, copyright or other proprietary rights of any party.
+
You will not post any content that contains personal information about another person without that person's explicit consent.
+
You will not use the blog to advertise or offer to sell or buy any goods or services for any business purpose, unless such blog specifically allows such messages.
+
+
+
Can I scrape, pretty please?
+
Scraping is allowed, but please be considerate. I don't want to have to block your IP address.
+
Also the site employs Cloudflare's Email Obfuscation feature to prevent email addresses from being scraped by bots. This means that email addresses are not visible in the source code of the page. If you are a bot and you are reading this, please don't scrape my email address(^v^)
You are free to use and share the content on this site as long as you give credit to the author and link back to the original content. You may not use the content for commercial purposes. If you remix, transform, or build upon the source code, you must distribute your contributions under the same license as the original.
+
+
Username Restrictions W.E.F May 27, 2023
+
A certain number of restrictions have been placed on usernames. Here's what you need to know:
Protected Usernames: Certain usernames like admin, administrator, root, moderator, etc. (non-exhaustive list) are protected and cannot be used for registering an account. (New)
+
Changing Username: Right now, this site does not allow username changes. (Unchanged) There are plans to allow username changes in the future, but it will be limited to once every 30 days. (New)
+
Username Purging: Accounts which have registered and haven't verified their email within 72 hours will be purged and the username will be available for registration again. (New) (Not yet implemented)Implemented; as of Jul 19, 2023.
+
+
+
+
Is all the information on this site accurate?
+
The information contained in this website is for general information purposes only. The information is provided by shi.foo and while I endeavour to keep the information up to date and correct, I make no representations or warranties of any kind, express or implied, about the completeness, accuracy, reliability, suitability or availability with respect to the website or the information, products, services, or related graphics contained on the website for any purpose. Any reliance you place on such information is therefore strictly at your own risk.
+
+
In no event will I be liable for any loss or damage including without limitation, indirect or consequential loss or damage, or any loss or damage whatsoever arising from loss of data or profits arising out of, or in connection with, the use of this website.
+
+
Links to external websites are provided as a convenience and for informational purposes only. They should not be construed as an endorsement by me of the content or views of the linked materials.
+
+
Through this website you are/will be able to link to other websites which are not under the control of shi.foo. I have no control over the nature, content and availability of those sites. The inclusion of any links does not necessarily imply a recommendation or endorse the views expressed within them.
+
+
Every effort is made to keep the website up and running smoothly. However, shi.foo takes no responsibility for, and will not be liable for, the website being temporarily unavailable due to technical issues beyond our control.
+
+
Who gets the final say?
+
Me! Okay! I am the supreme overlord of this site. All information on this site is subject to change without notice. I reserve the right to change the terms of service at any time. If you care too much about the terms of service, you should probably not use this site. Okay, all done now. Get out of here!
+
+
Update: July 13, 2023
+
The website's new URL is shi.foo. The old URL thatcomputerscientist.com will be redirected to the new URL. Please update your bookmarks.
Socialify is a image service that generates header images for your GitHub README.md files. Go ahead and try putting your GitHub repository URL in the input box below. A full React app is also available at https://socialify.thatcomputerscientist.com.
+
diff --git a/templates.old/blog_admin/partials/tags_topbar.html b/templates.old/blog_admin/partials/tags_topbar.html
new file mode 100644
index 00000000..c4a49ccf
--- /dev/null
+++ b/templates.old/blog_admin/partials/tags_topbar.html
@@ -0,0 +1,14 @@
+
+ Create New Tag
+ {% comment %} Search Users Box {% endcomment %}
+
+
+
{{ title }}
+
+
+{% for message in messages %}
+
{{ message }}
+{% endfor %}
\ No newline at end of file
diff --git a/templates.old/blog_admin/partials/users_topbar.html b/templates.old/blog_admin/partials/users_topbar.html
new file mode 100644
index 00000000..a0be6122
--- /dev/null
+++ b/templates.old/blog_admin/partials/users_topbar.html
@@ -0,0 +1,15 @@
+
+
+ Create New User
+ {% comment %} Search Users Box {% endcomment %}
+
+
+
{{ title }}
+
+
+{% for message in messages %}
+
{{ message }}
+{% endfor %}
\ No newline at end of file
diff --git a/templates.old/blog_admin/posts.html b/templates.old/blog_admin/posts.html
new file mode 100644
index 00000000..a8aac92c
--- /dev/null
+++ b/templates.old/blog_admin/posts.html
@@ -0,0 +1,89 @@
+{% extends 'blog/partials/base.html' %} {% block content %}
+{% load static %}
+
+
+ {% include 'blog_admin/partials/posts_topbar.html' %}
+
Hey! Skippy here! I am the 404 Assistant Bot for this site. Looks like you are trying to search an article, but I couldn't find the page. {% if context.similar_posts %}Maybe you are looking for one of these?{% endif %}
Hey! Skippy here! I am the 404 Assistant Bot for this site. Looks like you are trying to search a user with username {{ context.username }} but I couldn't find any user with that username. {% if context.similar_users %}Maybe you are looking for one of these users?{% endif %}
Choose an avatar from the list below. The avatars are grouped by their theme.
-
-
- {% elif request.GET.tab == 'blinkies' %}
-
-
Choose a blinkie to display on your public profile.
-
-
-
- {% elif request.GET.tab == 'details' %}
-
-
Change your account details here. You can change your first name, last name, bio, email and activity visibility.
-
-
- {% elif request.GET.tab == 'email' %}
-
-
Change your email address here. Your current registered email is {{ user.email }}. Please note that a verification email will be sent to the new email address in order to update the current email address. Please provide the new email address in the box below:
-
-
- {% elif request.GET.tab == 'password' %}
-
-
-
- {% elif request.GET.tab == 'delete' and not user.is_superuser %}
-
-
Deleting your account will remove all your posts, comments and other data from the website. Please note that this action is irreversible. If you wish to delete your account, please enter your password in the box below:
-
-
- {% else %}
-
-
You can change account settings for {{ user.username }} here. If you wish to have additional support, please contact me at webmaster@thatcomputerscientist.com. Please take care of the following points before you submit your support request:
-
-
Please do not edit the subject line.
-
As an individual monitoring this email, I request you to refrain yourself from spamming.
-
Please do not include any sensitive information (like credit card numbers, passwords, etc.) in the email.
-
Allow me upto 48 hours to respond to your support request.
-
Do not send multiple support requests.
-
Please note that this is a support request related to your account. Please do not file any bugs here. If you have noticed a bug, please report it to the GitHub Issues page.
- {% url 'blog:user_activity' 'bobby' as bobby_profile_url %}
- {% url 'blog:register' as register_url %}
- {% blocktrans %}
-
- Welcome to the home of Shifoo (previously That Computer Scientist). My name is @bobby, and this is my personal
- website. I aim to build a retro looking personal website, where I share my thoughts, ideas, and experiences through articles, and will showcase some cool nostalgic features and tools.
-
-
- Please note that I am continuously working on this site, and it is still under construction. So, not all features are available yet, and some features may not work as intended.
-
-
- There's also a some of fun stuff you can find in the sidebar, that you can play around with. I will be adding more in the not so distant future.
- Also, To participate around various sections of the site, you will need to register for an account. I hope you enjoy your stay here.
-
- {% endblocktrans %}
-
-
-
-
-
-
-
-
- {% if announcements is not None %}
-
- {% endif %}
-
diff --git a/templates/blog/partials/search/post_list.html b/templates/blog/partials/search/post_list.html
deleted file mode 100644
index 811c417e..00000000
--- a/templates/blog/partials/search/post_list.html
+++ /dev/null
@@ -1,23 +0,0 @@
-{% load tz %}
-{% load static %}
-{% for post in posts %}
- {% comment %} This is the plain small version for search list {% endcomment %}
-
-
-{% endfor %}
\ No newline at end of file
diff --git a/templates/blog/partials/search/user_list.html b/templates/blog/partials/search/user_list.html
deleted file mode 100644
index 3493508c..00000000
--- a/templates/blog/partials/search/user_list.html
+++ /dev/null
@@ -1,13 +0,0 @@
-{% load static %}
-{% for user in users %}
-
-{% endif %}
-
-{% if anonymous_users or logged_in_users or admin_users %}
-
-
Who's Online?
-
-
In total, there {% if not anonymous_users|add:logged_in_users|add:admin_users == 1%}are{% else %}is{% endif %} {{ anonymous_users|add:logged_in_users|add:admin_users }} user{% if not anonymous_users|add:logged_in_users|add:admin_users == 1%}s{% endif %} online ::
-
-
{{ anonymous_users }} Guest{% if not anonymous_users == 1%}s{% endif %}
-
{{ logged_in_users }} Registered User{% if not logged_in_users == 1%}s{% endif %}
-
{{ admin_users }} Staff Member{% if not admin_users == 1%}s{% endif %}
-
-
(Based on users active over the past 5 minutes)
-
-
-{% endif %}
-
-
-
You are Visitor #
-
- 0
- 0
- 6
- 9
- 4
- 2
- 0
-
-
____________________________________ This is just a nice random number!
- {% endif %}
- {% if comment.anonymous_user.name and comment.anonymous_user.email and comment.anonymous_user.token and comment.anonymous_user.token == request.COOKIES.anonymous_token|sha256 %}
-
-
-
- {% endif %}
-
-
-
-
- {% endfor %}
-
-{% else %}
-
-
Sadly, there are no comments yet. Be the first to leave one!
-
-{% endif %}
-
-{% if user.is_authenticated %}
-
-
Leave a Comment
- {% if messages %}
- {% for message in messages %}
- {% if 'spam' in message.tags %}
-
Your comment was not allowed as it was marked as possible spam. If you think this is a mistake, please contact me at webmaster@thatcomputerscientist.com.
- {% endif %}
- {% endfor %}
- {% endif %}
-
-
-
-{% else %}
-
-
Leave a Comment
- {% if messages %}
- {% for message in messages %}
- {% if 'spam' in message.tags %}
-
Your comment was not allowed as it was marked as possible spam. If you think this is a mistake, please contact me at webmaster@thatcomputerscientist.com.
- Register for an account to post your thoughts and get feedback from other
- users.
-
-
-
-
-
- By registering on this site, you agree to everything that's
- written here.
-
-
- Note: Upon registering, you will be sent an email with a link to
- activate your account. If you don't activate your account within 72 hours,
- your username will be released and you will have to register again.
-
-{% for message in messages %} {% if 'accountCreated' in message.tags %}
-
- Forgot your password? No problem! Just enter your email address below, (the
- email you registered with) and I will send you a link to reset your password.
-
-
-
-
-
Anonymous users cannot reset their password.
-{% for message in messages %} {% if 'passwordReset' in message.tags %}
-
Your search for "{{ request.GET.q }}" returned {{ search_results }} Result{% if search_results != 1 %}s{% endif %}.
-
- {% if 'posts' in search_in %}
-
Posts
- {% if posts|length != 0 %}
- {% include 'blog/partials/search/post_list.html' %}
- {% else %}
-
No matching posts found.
- {% endif %}
-
- {% endif %}
-
- {% if 'users' in search_in %}
-
Users
- {% if users|length != 0 %}
- {% include 'blog/partials/search/user_list.html' %}
- {% else %}
-
No matching users found.
- {% endif %}
- {% endif %}
-
- {% if 'comments' in search_in %}
-
Comments
- {% if comments|length != 0 %}
- {% include 'blog/partials/search/comment_list.html' %}
- {% else %}
-
No matching comments found.
- {% endif %}
- {% endif %}
-
-
-
-
-{% endblock %}
-{% block scripts %}
-{% include 'blog/partials/mathjax.html' %}
-{% endblock %}
\ No newline at end of file
diff --git a/templates/blog/site_policy.html b/templates/blog/site_policy.html
deleted file mode 100644
index 683e2c07..00000000
--- a/templates/blog/site_policy.html
+++ /dev/null
@@ -1,87 +0,0 @@
-{% extends 'blog/partials/base.html' %} {% block content %}
-
-
I see cookies! Wait, Do you track me?
-
This site uses cookies to store information on your computer. These cookies are required to enable the login functionality of the site. They are not used for tracking purposes.
-
Update: W.E.F May 27, 2023, this site will employ Google Analytics to track user activity. Also Cloudflare's Browser Insights will be used to track performance metrics. (Redacted! No tracking is involved. Enjoy your privacy!)
-
-
Also, do not sell my data!
-
Any personal information you provide here will be kept confidential and will not be sold, rented, loaned, or otherwise disclosed. Any information you provide will be held with the utmost care, and will not be used in ways that you have not consented to. If you have any questions, please feel free to contact me at webmaster@thatcomputerscientist.com.
-
-
What are these Advertisements?
-
As you know, one of the main goals to this site is to maintain a retro look. The advertisements are a part of that. The ads shown on this website are fake and purely for aesthetic purposes. They are just images of ads from the early days of the internet to spark the nostalgia. I do not make any money from these ads.
-
-
I wanna say something in the comments...
-
Not so fast! Before you post a comment, know that comments are moderated. I will employ general moderation tools to prevent spam and other undesirable content. I also reserve the right to edit or delete any comments submitted to this site without notice due to any of the following reasons:
-
-
Comments deemed to be spam or questionable spam
-
Comments including profanity
-
Comments containing language or concepts that could be deemed offensive
-
Comments that attack a group or individual
-
Comments that harass other posters
-
Comments that are off-topic
-
-
-
Comments are not for promoting your articles or other sites. Spam will be deleted and repeated offenses will result in a ban.
-
-
Comments are not for asking questions or help. I may open a forum soon, if I ever wanted to entend the features on the site. Also, remember that Stack Overflow and Reddit are your best friends.
-
-
-
Rules, you say? Anything else?
-
Yes, by using this site, you agree to the following terms and conditions:
-
-
You will not post any content that is illegal, obscene, defamatory, threatening, harassing, abusive, hateful, or embarrassing to any other person or entity as determined by us.
-
You will not post any content that infringes any patent, trademark, trade secret, copyright or other proprietary rights of any party.
-
You will not post any unsolicited or unauthorized advertising, promotional materials, junk mail, spam, chain letters, pyramid schemes, or any other form of solicitation.
-
You will not post any material that contains software viruses or any other computer code, files or programs designed to interrupt, destroy or limit the functionality of any computer software or hardware or telecommunications equipment.
-
You will not impersonate any person or entity, including, but not limited to, a blog author, forum leader, guide or host, or falsely state or otherwise misrepresent your affiliation with a person or entity.
-
You will not forge headers or otherwise manipulate identifiers in order to disguise the origin of any content transmitted through the blog.
-
You will not post any content that is knowingly false and/or defamatory, inaccurate, abusive, vulgar, hateful, harassing, obscene, profane, sexually oriented, threatening, invasive of a person's privacy, or otherwise violative of any law.
-
You will not post any content that may infringe any patent, trademark, trade secret, copyright or other proprietary rights of any party.
-
You will not post any content that contains personal information about another person without that person's explicit consent.
-
You will not use the blog to advertise or offer to sell or buy any goods or services for any business purpose, unless such blog specifically allows such messages.
-
-
-
Can I scrape, pretty please?
-
Scraping is allowed, but please be considerate. I don't want to have to block your IP address.
-
Also the site employs Cloudflare's Email Obfuscation feature to prevent email addresses from being scraped by bots. This means that email addresses are not visible in the source code of the page. If you are a bot and you are reading this, please don't scrape my email address(^v^)
You are free to use and share the content on this site as long as you give credit to the author and link back to the original content. You may not use the content for commercial purposes. If you remix, transform, or build upon the source code, you must distribute your contributions under the same license as the original.
-
-
Username Restrictions W.E.F May 27, 2023
-
A certain number of restrictions have been placed on usernames. Here's what you need to know:
Protected Usernames: Certain usernames like admin, administrator, root, moderator, etc. (non-exhaustive list) are protected and cannot be used for registering an account. (New)
-
Changing Username: Right now, this site does not allow username changes. (Unchanged) There are plans to allow username changes in the future, but it will be limited to once every 30 days. (New)
-
Username Purging: Accounts which have registered and haven't verified their email within 72 hours will be purged and the username will be available for registration again. (New) (Not yet implemented)Implemented; as of Jul 19, 2023.
-
-
-
-
Is all the information on this site accurate?
-
The information contained in this website is for general information purposes only. The information is provided by shi.foo and while I endeavour to keep the information up to date and correct, I make no representations or warranties of any kind, express or implied, about the completeness, accuracy, reliability, suitability or availability with respect to the website or the information, products, services, or related graphics contained on the website for any purpose. Any reliance you place on such information is therefore strictly at your own risk.
-
-
In no event will I be liable for any loss or damage including without limitation, indirect or consequential loss or damage, or any loss or damage whatsoever arising from loss of data or profits arising out of, or in connection with, the use of this website.
-
-
Links to external websites are provided as a convenience and for informational purposes only. They should not be construed as an endorsement by me of the content or views of the linked materials.
-
-
Through this website you are/will be able to link to other websites which are not under the control of shi.foo. I have no control over the nature, content and availability of those sites. The inclusion of any links does not necessarily imply a recommendation or endorse the views expressed within them.
-
-
Every effort is made to keep the website up and running smoothly. However, shi.foo takes no responsibility for, and will not be liable for, the website being temporarily unavailable due to technical issues beyond our control.
-
-
Who gets the final say?
-
Me! Okay! I am the supreme overlord of this site. All information on this site is subject to change without notice. I reserve the right to change the terms of service at any time. If you care too much about the terms of service, you should probably not use this site. Okay, all done now. Get out of here!
-
-
Update: July 13, 2023
-
The website's new URL is shi.foo. The old URL thatcomputerscientist.com will be redirected to the new URL. Please update your bookmarks.
Socialify is a image service that generates header images for your GitHub README.md files. Go ahead and try putting your GitHub repository URL in the input box below. A full React app is also available at https://socialify.thatcomputerscientist.com.
-