Compare commits
5 commits
075b22d411
...
0ac61aa115
Author | SHA1 | Date | |
---|---|---|---|
0ac61aa115 | |||
7c61f33833 | |||
ea7b5be1a1 | |||
810c77cd6e | |||
b44d3be2e9 |
20 changed files with 241 additions and 0 deletions
3
.vscode/settings.json
vendored
Normal file
3
.vscode/settings.json
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"python.pythonPath": "/mnt/code/web/pecha.red/venv/bin/python3.8"
|
||||
}
|
24
app.py
Executable file
24
app.py
Executable file
|
@ -0,0 +1,24 @@
|
|||
from flask import Flask, render_template, json
|
||||
from flask_misaka import markdown
|
||||
|
||||
import glob
|
||||
|
||||
app = Flask(__name__)
|
||||
contact_data = json.load(open("data/contact.json"))
|
||||
writings = []
|
||||
|
||||
for filename in glob.iglob("writings/**/*.md", recursive = True):
|
||||
# TODO: split into parent dir and filename
|
||||
writings.append(filename)
|
||||
|
||||
@app.route("/")
|
||||
def render_home():
|
||||
return render_template("home.html", big_header = True)
|
||||
|
||||
@app.route("/contact")
|
||||
def render_contact():
|
||||
return render_template("contact.html", data = contact_data)
|
||||
|
||||
@app.route("/writings")
|
||||
def render_writings():
|
||||
return render_template("writings.html", writings = writings)
|
0
config.py
Normal file
0
config.py
Normal file
13
data/contact.json
Normal file
13
data/contact.json
Normal file
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"Social": [
|
||||
["pech@bune.city (Email)", "mailto:pech@bune.city"],
|
||||
["Fediverse", "https://fedi.lynnesbian.space/@Petra_fied"],
|
||||
["Petra-fied#1528 (Discord)", null]
|
||||
],
|
||||
"Other": [
|
||||
["Keybase", "https://keybase.io/pecha"],
|
||||
["Git", "https://git.bune.city/petra-fied"],
|
||||
["SW-0502-8685-4802 (Switch)", null],
|
||||
["My blog (to be rehosted)", "https://petra.press/"]
|
||||
]
|
||||
}
|
3
requirements.txt
Normal file
3
requirements.txt
Normal file
|
@ -0,0 +1,3 @@
|
|||
Flask==1.1.2
|
||||
Flask-Misaka==1.0.0
|
||||
python-frontmatter==0.5.0
|
BIN
static/fonts/Cozette.woff
Normal file
BIN
static/fonts/Cozette.woff
Normal file
Binary file not shown.
BIN
static/fonts/Cozette.woff2
Normal file
BIN
static/fonts/Cozette.woff2
Normal file
Binary file not shown.
BIN
static/fonts/TOMMYHILFIGERAF.woff
Normal file
BIN
static/fonts/TOMMYHILFIGERAF.woff
Normal file
Binary file not shown.
BIN
static/fonts/TOMMYHILFIGERAF.woff2
Normal file
BIN
static/fonts/TOMMYHILFIGERAF.woff2
Normal file
Binary file not shown.
BIN
static/fonts/VCROSDMono.woff
Normal file
BIN
static/fonts/VCROSDMono.woff
Normal file
Binary file not shown.
BIN
static/fonts/VCROSDMono.woff2
Normal file
BIN
static/fonts/VCROSDMono.woff2
Normal file
Binary file not shown.
24
static/fonts/style.css
Normal file
24
static/fonts/style.css
Normal file
|
@ -0,0 +1,24 @@
|
|||
@font-face {
|
||||
font-family: 'TOMMY HILFIGER AF';
|
||||
src: local('TOMMY HILFIGER AF'), local('TOMMYHILFIGERAF'),
|
||||
url('TOMMYHILFIGERAF.woff2') format('woff2'),
|
||||
url('TOMMYHILFIGERAF.woff') format('woff');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'VCR OSD Mono';
|
||||
src: local('VCR OSD Mono'), local('VCROSDMono'),
|
||||
url('VCROSDMono.woff2') format('woff2'),
|
||||
url('VCROSDMono.woff') format('woff');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Cozette';
|
||||
src: local('Cozette'),
|
||||
url('Cozette.woff2') format('woff2'),
|
||||
url('Cozette.woff') format('woff');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
BIN
static/images/worst.jpg
Normal file
BIN
static/images/worst.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 817 KiB |
76
static/style.css
Normal file
76
static/style.css
Normal file
|
@ -0,0 +1,76 @@
|
|||
body {
|
||||
margin: 0;
|
||||
background-color: #1E3942;
|
||||
background-image: url("/static/images/worst.jpg");
|
||||
background-attachment: fixed;
|
||||
background-size: cover;
|
||||
color: #cc9ba8;
|
||||
font-family: sans-serif;
|
||||
}
|
||||
|
||||
#big-header {
|
||||
font-size: 2em;
|
||||
font-family: 'VCR OSD Mono', monospace;
|
||||
}
|
||||
#big-header h1 {
|
||||
font-size: 2.75em;
|
||||
font-family: 'Montserrat', sans-serif;
|
||||
margin: 0;
|
||||
color: #6E2638;
|
||||
}
|
||||
#subtitle {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
header {
|
||||
text-align: center;
|
||||
background: #0E111380;
|
||||
padding: 40px 0;
|
||||
}
|
||||
nav {
|
||||
width: 80%;
|
||||
margin: 0 auto;
|
||||
display: flex;
|
||||
}
|
||||
nav a {
|
||||
font-family: 'VCR OSD Mono', monospace;
|
||||
color: #90243A;
|
||||
text-decoration: none;
|
||||
padding: 5px 10px;
|
||||
margin: 0;
|
||||
height: 1.2em;
|
||||
border-right: 2px red solid;
|
||||
padding-right: 12px;
|
||||
flex-basis: 100%;
|
||||
user-select: none;
|
||||
transition: 0.5s all;
|
||||
}
|
||||
nav a:first-of-type {
|
||||
border-left: 2px red solid;
|
||||
padding-left: 12px;
|
||||
}
|
||||
nav a:hover {
|
||||
background-color:black;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-family: 'VCR OSD Mono', monospace;
|
||||
}
|
||||
|
||||
main {
|
||||
font-size: 1.25em;
|
||||
padding: 10px;
|
||||
margin: 30px auto;
|
||||
width: 80%;
|
||||
max-width: max-content;
|
||||
background: #0E111380;
|
||||
font-family: 'VCR OSD Mono', monospace; /*???*/
|
||||
}
|
||||
main.centred {
|
||||
text-align: center;
|
||||
}
|
||||
main a {
|
||||
color: #81a1a8;
|
||||
}
|
||||
main ul {
|
||||
padding-left: 30px;
|
||||
}
|
34
templates/base.html
Normal file
34
templates/base.html
Normal file
|
@ -0,0 +1,34 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>{% block title %}{% endblock %} - pecha.red</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<!-- <link rel="stylesheet" href="https://kit-free.fontawesome.com/releases/latest/css/free.min.css"> -->
|
||||
<link rel='stylesheet' type='text/css' href="{{ url_for('static', filename='style.css') }}" />
|
||||
<!-- <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,700&display=swap"> -->
|
||||
<!-- <script src="{{ url_for('static', filename='script.js') }}"></script> -->
|
||||
<link href="https://fonts.googleapis.com/css2?family=Montserrat&display=swap" rel="stylesheet">
|
||||
<link rel='stylesheet' type='text/css' href="{{ url_for('static', filename='fonts/style.css') }}" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<header>
|
||||
{% if big_header %}
|
||||
<div id='big-header'>
|
||||
<h1>PECHA.RED</h1>
|
||||
<div id='subtitle'>THE WORST IS YET TO COME</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
<nav>
|
||||
<a href="/">HOME</a>
|
||||
<a href="/writings">WRITINGS</a>
|
||||
<a href="/library">LIBRARY</a>
|
||||
<a href="https://petra.press">BLOG</a>
|
||||
<a href="https://git.bune.city/petra-fied">GIT</a>
|
||||
<a href="/contact">CONTACT</a>
|
||||
</nav>
|
||||
</header>
|
||||
{% block content %}{% endblock %}
|
||||
</body>
|
||||
</html>
|
15
templates/contact.html
Normal file
15
templates/contact.html
Normal file
|
@ -0,0 +1,15 @@
|
|||
{% extends 'base.html' %}
|
||||
{% block title %}contact{% endblock %}
|
||||
{% block content %}
|
||||
<main>
|
||||
<h1>Contact</h1>
|
||||
{% for heading, entries in data.items() %}
|
||||
<h2>{{ heading }}</h2>
|
||||
<ul>
|
||||
{% for entry in entries %}
|
||||
<li>{% if entry[1] %}<a href='{{ entry[1] }}'>{% endif %}{{ entry[0] }}{% if entry[1] %}</a>{% endif %}</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endfor %}
|
||||
</main>
|
||||
{% endblock %}
|
10
templates/home.html
Normal file
10
templates/home.html
Normal file
|
@ -0,0 +1,10 @@
|
|||
{% extends 'base.html' %}
|
||||
{% block title %}home{% endblock %}
|
||||
{% block content %}
|
||||
<main class='centred'>
|
||||
<h1>Henlo! 0u0</h1>
|
||||
<p>My name is Petra, but Pet, Pech, Pecha etc are all fine =w=</p>
|
||||
<p>I'm an aspiring Political Economist, but I'm broadly interested in the social sciences and philosophy pretty generally.</p>
|
||||
<p>This is meant as a landing page for stuff I've created or am interested in.</p>
|
||||
</main>
|
||||
{% endblock %}
|
13
templates/writings.html
Normal file
13
templates/writings.html
Normal file
|
@ -0,0 +1,13 @@
|
|||
{% extends 'base.html' %}
|
||||
{% block title %}writings{% endblock %}
|
||||
{% block content %}
|
||||
<main>
|
||||
<h1>My writings</h1>
|
||||
<div id='sidebar'>
|
||||
{% for writing in writings %}
|
||||
{{ writing }}
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
</main>
|
||||
{% endblock %}
|
6
writings/article/test.md
Normal file
6
writings/article/test.md
Normal file
|
@ -0,0 +1,6 @@
|
|||
---
|
||||
title: Test
|
||||
categories: [C, D]
|
||||
---
|
||||
|
||||
henlo henlo testing!
|
20
writings/intro/essentialism and constructionism.md
Normal file
20
writings/intro/essentialism and constructionism.md
Normal file
|
@ -0,0 +1,20 @@
|
|||
---
|
||||
title: Identity, Essentalism and Constructionism
|
||||
categories: [A, B]
|
||||
---
|
||||
|
||||
Identity is distinct from "self," which is the pure, subjective experience of one's being. Identity, while about individuals, is fundamentally social. HOW it is social however is debated- two broad theories of identity are essentialism and social constructionism.
|
||||
|
||||
Essentialism, broadly, is the idea that identity (or some aspect of identity) is inherent, unchanging and set. The explanation of why is extraneous to the fundamental definition of essentialism, but common explanations are biology, or, frequently, some higher ontological or metaphysical definition of identity.
|
||||
|
||||
For example, essentialist conceptions of race suggest that races naturally and fundamentally are more or less intelligent, more or less physically able et cetera than others, and this can be expressed in various ways. These include, for instance, the (awful) 19th century """scientific racism""" movement that aimed to measure race through things like phrenology, but also ideas like Julius Evola's "spiritual racism."
|
||||
|
||||
Social constructionism, as the name implies, states that identity is constructed socially (ie, built by humans through the social world, attitudes and interactions). This is distinct from truly subjectivist ontologies where meaning is purely imposed on the object by the subject- social constructivism believes in identities that, while constructed, still partially emerge from biology or other "deep" facts of our natures.
|
||||
|
||||
A good example might be gender. Even though gender roles, performances and our ideas of gender vary hugely from culture to culture, sex (and its multitude variations) are an omnipresent factor in human societies. This has created a situation whereby there have been no societies discovered without any evidence of (some form of) sexed or gendered conceptions and roles, even though what those conceptions and roles *actually are* are highly varied and in large part disconnected from any "biological reality."
|
||||
|
||||
In other words, there is an underlying reality, spark or impulse towards these sorts of categories, and these "trends" are usually strongly associated with the concepts more broadly even when the specifics of those categories are socially constructed.
|
||||
|
||||
Put another way, just as Simone de Beauvoir says "one is not born a woman, but rather one becomes one" and Julia Kristeva says "strictly speaking, 'women' cannot be said to exist," nevertheless the social constructs of womanhood and femininity in our society are strongly associated with things like menstruation and motherhood. And this association exists despite the logical, categorical separation and lack of universality of those experiences amongst women.
|
||||
|
||||
Most essentialist thinking in a society aligns with the ideas of that society on identity, sex, gender or whatever else category is in question. Thus, most of the time the operational difference between social constructionism and essentialism is whether or not a society's beliefs and collective constructs are taken as a face-value truth or not.
|
Loading…
Reference in a new issue