Compare commits

..

1 Commits

Author SHA1 Message Date
David E. Perez Negron R b6436779a2 Adding the first version of my cypherpunk blog 2023-08-27 22:21:23 -06:00
196 changed files with 2208 additions and 4 deletions

7
LICENSE.md Normal file
View File

@ -0,0 +1,7 @@
Copyright (C) 2023 DAVID EUGENIO PEREZ NEGRON ROCHA.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
or any later version published by the Free Software Foundation;
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
A copy of the license is included in the section entitled "GNU
Free Documentation License".

61
README.md Normal file
View File

@ -0,0 +1,61 @@
# zerm
a minimalist and dark theme for [Zola](https://getzola.org).
![Screenshot](../master/zerm-preview.png?raw=true)
[**Live Preview!**](https://zerm.ejmg.now.sh/)
Largely a port of Radek Kozieł's [Terminal
Theme](https://github.com/panr/hugo-theme-terminal) for Hugo. 4/5ths of my way
through porting this theme, I discovered Paweł Romanowski own independent fork
for Zola, [Terminimal](https://github.com/pawroman/zola-theme-terminimal),
which helped me get the PostCSS to Sass styling conversion done more
quickly. My sincerest thanks to both of you!
## differences
This theme is largely true to the original by Radek, but there are some mild
differences. They are almost all stylistic in nature and are intended to
emphasize minimalism even more. Some of them are as follows:
- tags are now included in a post's meta data.
- no post image previews.
- categories are included in the taxonomy.
- bullet points have slightly more margin and different symbols for nesting.
- no social media or comment support.
Some of these might be added later and [PR's are always
welcomed](https://github.com/ejmg/zerm/pulls).
## configuration
Please follow the Zola documentation for [how to use a
theme](https://www.getzola.org/documentation/themes/installing-and-using-themes/#installing-a-theme).
In `config.toml`, you will find all values for customization that are supported
thus far have documentation explaining how they are used. If there is any confusion or something is not working as intended, [please open an issue](https://github.com/ejmg/zerm/issues)!
## math
You can use KaTeX for mathematical typesetting.
Assets are only available if you opt-in on a per-page level through
a single line (`math=true`) on the extra section of the page frontmatter.
``` md
# index.md
+++
title="this page title"
...
[extra]
math=true
+++
Content
```
Pages wich doesn't opt-in are not affected in any way, so you doesn't have
to worry about any performance hit.
## license
MIT. See `LICENSE.md` for more details.

View File

@ -1,16 +1,140 @@
# The URL the site will be built for # The URL the site will be built for
base_url = "https://nethunters.xyz" base_url = "https://nethunters.xyz"
# Used in RSS by default
title = "Computer Science Notes and Research"
description = "A Cypherpunk Free Knowledge Blog"
# The default language, used in RSS
# TODO: I would love to support more languages and make this easy to handle
# with other facets of the theme.
default_language = "en"
# Whether to generate a RSS feed automatically
generate_feed = true
# 'atom.xml' (default if unspecified) and 'rss.xml' are officially supported
# values for feed_filename in this theme. All other filenames will assume a
# link type of 'application/rss+xml'.
# feed_filename = "atom.xml"
# Theme name to use.
# NOTE: should not need to mess with this if you are using zerm directly, i.e. cloning the
# repository at root and not using as directed by the Zola docs via themes/ directory.
# theme = ""
# Whether to automatically compile all Sass files in the sass directory # Whether to automatically compile all Sass files in the sass directory
compile_sass = true compile_sass = true
# Whether to build a search index to be used later on by a JavaScript library # Whether to build a search index to be used later on by a JavaScript library
build_search_index = false build_search_index = false
[markdown] # Built in taxonomies of zerm.
# Whether to do syntax highlighting taxonomies = [
# Theme can be customised by setting the `highlight_theme` variable to a theme supported by Zola {name = "tags"},
highlight_code = false {name = "categories"},
]
[extra] [extra]
# Put all your custom variables here # Put all your custom variables here
#
# Many configurations are taken directly from Terminal's config.toml
# ---------------------------------------------------------
# Author name to be added to posts, if enabled.
author = "David E. Perez Negron Rocha (A.K.A P1R0)"
# Show author's name in blog post meta data.
show_author = false
# Show categories a blog post is marked with in its meta data.
show_categories = true
# Show tags a blog post is marked with in its meta data.
show_tags = true
# Theme color. You can have any color you want, so long as it's...
# ["orange", "blue", "red", "green", "pink"]
theme_color = "blue"
# Custom css to style over the defaults. This is useful when you only have a
# few small tweaks to make rather than a major rehaul to the theme.
# It would be best to make this a proper .sass or .scss file in sass/ rather
# than placing in static/
# custom_css = "custom.css"
# How many menu items to show on desktop. if you set this to 0, only submenu
# button will be visible.
show_menu_items = 2
# set theme to full screen width.
full_width = false
# center theme with default width.
center = false
# set a custom favicon. Must be placed in root of static/ directory...
# favicon = ""
# Set a custom preview image for your website when posted as a link.
# Must be placed in root of static/ directory...
# og_preview_img = ""
# Copyright notice if desired. Defaults to
#copyright = '''
#Copyright (C) 2023 DAVID EUGENIO PEREZ NEGRON ROCHA
#Permission is granted to copy, distribute and/or modify this document
#under the terms of the GNU Free Documentation License, Version 1.3
#or any later version published by the Free Software Foundation;
#with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
#A copy of the license is included in the section entitled "GNU
#Free Documentation License".
#'''
# What is displayed in the top left corner of the website. Default is zerm.
logo_text = "NetHunters"
# Link in logo. Default returns you to $BASE_URL.
logo_home_link = "/"
# Menu items to display. You define a url and the name of the menu item.
# NOTE: `$BASE_URL/` must be included in the url name.
main_menu = [
{url="/about_me/", name="about me"},
{url="/contact/", name="contact"},
{url="https://deca.eco", name="deca.eco", external=true},
]
# Displayed as title of drop-down menu when size of main_menu > show_menu_items.
menu_more = "show more"
# Displayed after teaser text for a blog post.
read_more = "read more"
# not currently used from previous theme, but leaving here for now in case I
# feel like adding it.
read_other_posts = "read other posts"
# Enable math typesetting with KaTeX
# Show math in pages with `math=true` in the TOML frontmatter
enable_katex = true
# Options for disqus
disqus = { enabled=false, short_name="" }
# generate Table of Contents for all articles
# Table of Contents can be generated for individual articles
# by adding `ToC = true` in [extra] section in frontmatter
# ToC = true
[markdown]
# Whether to do syntax highlighting
# Theme can be customised by setting the `highlight_theme` variable to a theme supported by Zola
highlight_code = true
# Syntax highlighting theme. See:
# https://www.getzola.org/documentation/getting-started/configuration/#syntax-highlighting
# for more information and themes built into Zola.
highlight_theme = "1337" # Other dark themes that work: "1337", "agola-dark",
# "visual-studio-dark"

6
content/_index.md Normal file
View File

@ -0,0 +1,6 @@
+++
sort_by = "date"
transparent = true
paginate_by = 3
insert_anchor_links = "right"
+++

145
content/about_me/_index.md Normal file
View File

@ -0,0 +1,145 @@
+++
title = "about me"
path = "about_me"
[extra]
date = 2023-08-27
+++
# David Eugenio Perez Negron Rocha
**Location and Time:** Morelia, Michoacan, Mexico CST (GMT/UTC -6 , NO DST).
**Emails:** [david@nethunters.xyz](mailto:david@nethunters.xyz), [daroperez_negron@esimez.mx](mailto:daroperez_negron@esimez.mx).
**Date of Birth:** 1988-02-03 (570906000)
**Blog:** [nethunters.xyz](https://nethunters.xyz)
----------------------------------
## Education
### National Polytechnic Institute (IPN)
> 2010-2015
Undergraduate as a Communications and Electronics Engineer with a specialty in Computing from the Superior School of Mechanical and Electrical Engineering (ESIME)
----------------------------------
## Courses and Bootcamps
### Solidity & Solidity Expert Bootcamps (Encode Club)
> 2023
A free, intensive, 8-week coding bootcamp to learn Solidity and blockchain from scratch + intensive 5-week coding bootcamp
to be a Solidity Expert.
### Open Source Mexico
> 2006
Computer Server Administration based on Debian GNU/Linux OS Course
### Electronic Processes and Capacitance Institute
> 2004-2005
Certified Computers Operator
----------------------------------
## Work Experience
### DECENTRALIZED CLIMATE FOUNDATION A.C.
> 2022-2023
Lead Blockchain Architect and Developer, Research and Developments in [Decentralized Autonomus Organizations](https://docs.decentralizedclimate.org/2023-04-06-DAOP0.html), Game Theory Models and UML Modeling for [DECA Protocol](https://docs.google.com/presentation/d/1H4V5X0X-9jnulwmmQBKk7PiStqKoPh_t_h7F0R3kLw0/edit#slide=id.p). Also managed social services students for further WEB3 development and DCF documentation.
### NEETSEC INTERNATIONAL INC.
> 2018-2022
Vice President and CTO, Blockchain Architect and Developer (smart contracts/DAPPs), tokenomics modeling, cybersecurity and general technologies behind the [DECA Token](www.deca.eco). Research and development on decentralized systems (IPFS, WEB3).
### National Polytechnic Institute and Energy Regulation Commission (IPN - CRE)
> 2017-2018
Data engineer (Hadoop, Hive, Jupyter), architecture modeler (Hardware, Debian, Xen, LVM, nginx, Azure) and developer (Python3, PANDAS, R) of the National Market Monitoring Unit. The source code is proprietary.
### National Polytechnic Institute and National Secretariat of Energy (IPN - SENER)
> 2016-2017
Data engineer (Hadoop, R), architecture modeler (Hardware, Debian, Xen, LVM, nginx) and developer (Python, jCharts, php5) of the National Market Monitoring Unit. The source code is proprietary.
### Center of Advanced Research and Studies of the IPN - CINVESTAV
> 2013-2015
Research Assistant in the Experimental Physics Area for Development of Thermoacoustic Engines for Cold Refrigeration that works on sound waves, under the guidance of Ph.D. Feliciano Sánchez Sinencio and Ph.D. Daniel Stolik. Also developed a free software project named [FreeMonoCrom](https://github.com/P1R/freeMonoCrom.git).
### Grupo Lanware, Communications Solutions Enterprise
> 2009-2010
Support for Network Infrastructure, Configuration, and Network Operations Training.
----------------------------------
## General Knowledge and Skills
> A: Advanced
> I: Intermediate
### Networks and Communications
* Networks(A): OSI, TCP/IP, LAN and WAN Design with VLSM and Route Summarization.
* Routing(A): Cisco and Enterasys Routers Configuration, with OSPF v3, SNMP, Loopback, IPV4 & IPV6.
* Services and Protocols(A): FTP, HTTP, SSL/TLS, SSH, SMTP, POP3, IMAP.
* Software Tools(A): Cisco Packet Tracer, GNS3, Wireshark, nmap and others.
* WEB3(A): IPFS, IPNS, DNSLink.
### Electronics
* Measurement(A): Oscilloscope operation, Signal Functions Generator operation, Multimeter operation and design.
* Microconotrles and devices (A): Semiconductor components, digital circuits, Microcontrollers, ESP32, PIC16, SMT32, ARM64.
* Software for Electronics Design and Testing (I): EAGLE, KiKAD, ALTIUM, GEDA.
* Power Electronics(I): Interfaces, Protections and high power devices.
### Systems Administration
* SysAdmin and user level(A): GNU/Linux (Arch, RedHat, Debian with 22 years of experience), Mac OS X, FreeBSD, OpenSolaris.
* Virtualization and containers(A): LXD-LXC, KVM, XEN, Docker.
* Databases (I): OrbitDB/MongoDB, postgreSQL, MySQL, liteSQL,and Hadoop/Hive,
* Services Management (A): apache, nginx, openssh, proftpd, MySQL, PHP5 and others.
### Software Development
* Programming languages (A): Solidity, Python3, ANSI C, Bash, PlantUML.
* Developmentlanguages (I): Typescript, Rust, C++, Matlab, HTML.
* Software Version Control: SVN (I), GIT(A).
* Software Management(A): Scrum, PlantUML
### Comunication Languages
* Spanish(A)
* English(A)
* Russian(I)
## Academic Projects
### Development of VoIP Software
Named NAGVOZ with a Glade Graphical Interface, associated with technologies such as Perl Language, NetCat and ALSA (Advanced Linux Sound Architecture). Third place in the Physics ESIME Awards (won while I was enrolled in third undergraduate semester).
### Implementation and Development of a Browser for searching books at The Science and Technology National Library (BNCT)
Team Development and Implementation of zKiosk Browser under the Modified Debian GNU/Linux OS that provides secure light terminal clients for searching books.
### Engineering Thesis Project
Real Time Sunlight Tracking System. With a distributed database, IoT API and real time measurement, plotting voltage vs time in a webpage developed with html5+javascript. The electronic architectures are STM32 ARM and Raspberry PI. Helpful in modeling and analysing Solar behavior (https://gitlab.com/p1r0/TESIS-pi)
## FOSS Projects
| Name | Description |
|:-----:|:-----------:|
| [DECA Smart Contract (Audited by Quanstamp)](https://gitlab.com/deca-currency/dcc) | Decentralized Carbon Credits in an ERC20 by neetsec. |
| [Carbon Credits Decentralized Backlog](https://gitlab.com/deca-currency/carboncreditsbacklog) | DECA's Carbon Credits OrbitDB Code and configs, everything you need for setting up a node. |
| [Simple Flask API with SSL support](https://gitlab.com/p1r0/sflaskapi) | simple REST flask API, integrates CORS ( dummy data ) with Example clients (Javascript, python3, others.) |
| [DECA Price Mechanism](https://gitlab.com/deca-currency/price-mechanism) | A Jupyter Semi-Stable Token Modeling and Research paper in Lyx. |

12
content/contact/_index.md Normal file
View File

@ -0,0 +1,12 @@
+++
title="contact"
description="In what Social Networks I am online"
[extra]
date=2019-03-26
+++
# Contact us
* [Telegram](https://t.me/TheNetHunters/1)
* [Matrix](https://matrix.to/#/#TheNetHunters:matrix.org)

7
package.json Normal file
View File

@ -0,0 +1,7 @@
{
"scripts":
{
"install": "curl -L -O https://github.com/getzola/zola/releases/download/v0.13.0/zola-v0.13.0-x86_64-unknown-linux-gnu.tar.gz && tar -xzf zola-v0.13.0-x86_64-unknown-linux-gnu.tar.gz",
"build": "./zola build"
}
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,93 @@
Copyright (c) 2014, The Fira Code Project Authors (https://github.com/tonsky/FiraCode)
This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
http://scripts.sil.org/OFL
-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.
The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).
"Original Version" refers to the collection of Font Software components as
distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to, deleting,
or substituting -- in part or in whole -- any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.
"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:
1) Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.
5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are
not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.

1
public/assets/js/main.js Normal file
View File

@ -0,0 +1 @@
!function(e){var t={};function n(o){if(t[o])return t[o].exports;var r=t[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,n),r.l=!0,r.exports}n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(o,r,function(t){return e[t]}.bind(null,r));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}([function(e,t,n){n(1),e.exports=n(2)},function(e,t){},function(e,t){var n=document.querySelector(".container"),o=document.querySelector(".menu"),r=document.querySelector(".menu-trigger"),i=(document.querySelector(".menu__inner--desktop"),document.querySelector(".menu__sub-inner-more-trigger")),u=document.querySelector(".menu__sub-inner-more"),c=getComputedStyle(document.body).getPropertyValue("--phoneWidth"),d=function(){return window.matchMedia(c).matches},s=function(){r&&r.classList.toggle("hidden",!d()),o&&o.classList.toggle("hidden",d()),u&&u.classList.toggle("hidden",!d())};o&&o.addEventListener("click",function(e){return e.stopPropagation()}),u&&u.addEventListener("click",function(e){return e.stopPropagation()}),s(),document.body.addEventListener("click",function(){d()||!u||u.classList.contains("hidden")?d()&&!o.classList.contains("hidden")&&o.classList.add("hidden"):u.classList.add("hidden")}),window.addEventListener("resize",s),r&&r.addEventListener("click",function(e){e.stopPropagation(),o&&o.classList.toggle("hidden")}),i&&i.addEventListener("click",function(e){e.stopPropagation(),u&&u.classList.toggle("hidden"),u.getBoundingClientRect().right>n.getBoundingClientRect().right&&(u.style.left="auto",u.style.right=0)})}]);

View File

@ -0,0 +1 @@
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("katex")):"function"==typeof define&&define.amd?define(["katex"],t):"object"==typeof exports?exports.renderMathInElement=t(require("katex")):e.renderMathInElement=t(e.katex)}("undefined"!=typeof self?self:this,function(e){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=1)}([function(t,r){t.exports=e},function(e,t,r){"use strict";r.r(t);var n=r(0),o=r.n(n),a=function(e,t,r){for(var n=r,o=0,a=e.length;n<t.length;){var i=t[n];if(o<=0&&t.slice(n,n+a)===e)return n;"\\"===i?n++:"{"===i?o++:"}"===i&&o--,n++}return-1},i=function(e,t,r,n){for(var o=[],i=0;i<e.length;i++)if("text"===e[i].type){var l=e[i].data,d=!0,s=0,f=void 0;for(-1!==(f=l.indexOf(t))&&(s=f,o.push({type:"text",data:l.slice(0,s)}),d=!1);;){if(d){if(-1===(f=l.indexOf(t,s)))break;o.push({type:"text",data:l.slice(s,f)}),s=f}else{if(-1===(f=a(r,l,s+t.length)))break;o.push({type:"math",data:l.slice(s+t.length,f),rawData:l.slice(s,f+r.length),display:n}),s=f+r.length}d=!d}o.push({type:"text",data:l.slice(s)})}else o.push(e[i]);return o},l=function(e,t){var r=function(e,t){for(var r=[{type:"text",data:e}],n=0;n<t.length;n++){var o=t[n];r=i(r,o.left,o.right,o.display||!1)}return r}(e,t.delimiters);if(1===r.length&&"text"===r[0].type)return null;for(var n=document.createDocumentFragment(),a=0;a<r.length;a++)if("text"===r[a].type)n.appendChild(document.createTextNode(r[a].data));else{var l=document.createElement("span"),d=r[a].data;t.displayMode=r[a].display;try{t.preProcess&&(d=t.preProcess(d)),o.a.render(d,l,t)}catch(e){if(!(e instanceof o.a.ParseError))throw e;t.errorCallback("KaTeX auto-render: Failed to parse `"+r[a].data+"` with ",e),n.appendChild(document.createTextNode(r[a].rawData));continue}n.appendChild(l)}return n};t.default=function(e,t){if(!e)throw new Error("No element provided to render");var r={};for(var n in t)t.hasOwnProperty(n)&&(r[n]=t[n]);r.delimiters=r.delimiters||[{left:"$$",right:"$$",display:!0},{left:"\\(",right:"\\)",display:!1},{left:"\\[",right:"\\]",display:!0}],r.ignoredTags=r.ignoredTags||["script","noscript","style","textarea","pre","code","option"],r.ignoredClasses=r.ignoredClasses||[],r.errorCallback=r.errorCallback||console.error,r.macros=r.macros||{},function e(t,r){for(var n=0;n<t.childNodes.length;n++){var o=t.childNodes[n];if(3===o.nodeType){var a=l(o.textContent,r);a&&(n+=a.childNodes.length-1,t.replaceChild(a,o))}else 1===o.nodeType&&function(){var t=" "+o.className+" ";-1===r.ignoredTags.indexOf(o.nodeName.toLowerCase())&&r.ignoredClasses.every(function(e){return-1===t.indexOf(" "+e+" ")})&&e(o,r)}()}}(e,r)}}]).default});

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

1
public/assets/katex/katex.min.css vendored Normal file

File diff suppressed because one or more lines are too long

1
public/assets/katex/katex.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t(require("katex"));else if("function"==typeof define&&define.amd)define(["katex"],t);else{var r="object"==typeof exports?t(require("katex")):t(e.katex);for(var n in r)("object"==typeof exports?exports:e)[n]=r[n]}}("undefined"!=typeof self?self:this,function(e){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=1)}([function(t,r){t.exports=e},function(e,t,r){"use strict";r.r(t);var n=r(0),o=r.n(n),u=document.body.getElementsByTagName("script");(u=Array.prototype.slice.call(u)).forEach(function(e){if(!e.type||!e.type.match(/math\/tex/i))return-1;var t=null!=e.type.match(/mode\s*=\s*display(;|\s|\n|$)/),r=document.createElement(t?"div":"span");r.setAttribute("class",t?"equation":"inline-equation");try{o.a.render(e.text,r,{displayMode:t})}catch(t){r.textContent=e.text}e.parentNode.replaceChild(r,e)})}]).default});

1
public/color/blue.css Normal file
View File

@ -0,0 +1 @@
:root{--accent: rgb(35,176,255);--accent-alpha-20: rgba(35,176,255,.2);--accent-alpha-70: rgba(35,176,255,.7);--background: #1D1E28;--color: whitesmoke;--border-color: rgba(255, 255, 255, .1);--footnote-color: rgba(255, 255, 255, .5)}

1
public/color/green.css Normal file
View File

@ -0,0 +1 @@
:root{--accent: rgb(72, 251, 53);--accent-alpha-20: rgba(72, 251, 53,.2);--accent-alpha-70: rgba(72, 251, 53,.7);--background: #1F222A;--color: whitesmoke;--border-color: rgba(255, 255, 255, .1);--footnote-color: rgba(255, 255, 255, .5)}

1
public/color/orange.css Normal file
View File

@ -0,0 +1 @@
:root{--accent: rgb(255,168,106);--accent-alpha-20: rgba(255, 168, 106, .2);--accent-alpha-70: rgba(255, 168, 106,.7);--background: #211f1a;--color: whitesmoke;--border-color: rgba(255, 255, 255, .1);--footnote-color: rgba(255, 255, 255, .5)}

1
public/color/pink.css Normal file
View File

@ -0,0 +1 @@
:root{--accent: rgb(238,114,241);--accent-alpha-20: rgba(238,114,241,.2);--accent-alpha-70: rgba(238,114,241,.7);--background: #21202C;--color: whitesmoke;--border-color: rgba(255, 255, 255, .1);--footnote-color: rgba(255, 255, 255, .5)}

1
public/color/red.css Normal file
View File

@ -0,0 +1 @@
:root{--accent: rgb(255,98,102);--accent-alpha-20: rgba(255,98,102,.2);--accent-alpha-70: rgba(255,98,102,.7);--background: #221F29;--color: whitesmoke;--border-color: rgba(255, 255, 255, .1);--footnote-color: rgba(255, 255, 255, .5)}

1
public/style.css Normal file

File diff suppressed because one or more lines are too long

29
sass/_buttons.scss Normal file
View File

@ -0,0 +1,29 @@
button,
.button,
a.button {
position: relative;
display: flex;
align-items: center;
justify-content: center;
padding: 8px 18px;
margin-bottom: 5px;
text-decoration: none;
text-align: center;
border-radius: 8px;
border: 1px solid transparent;
appearance: none;
cursor: pointer;
outline: none;
}
a.read-more,
a.read-more:hover,
a.read-more:active {
display: inline-flex;
background: none;
box-shadow: none;
padding: 0;
margin: 20px 0;
max-width: 100%;
}

15
sass/_font.scss Normal file
View File

@ -0,0 +1,15 @@
@font-face {
font-family: 'Fira Code';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url("assets/fonts/FiraCode-Regular.woff2") format("woff2"), url("assets/fonts/FiraCode-Regular.woff") format("woff");
}
@font-face {
font-family: 'Fira Code';
font-style: normal;
font-weight: 800;
font-display: swap;
src: url("assets/fonts/FiraCode-Bold.woff2") format("woff2"), url("assets/fonts/FiraCode-Bold.woff") format("woff");
}

67
sass/_footer.scss Normal file
View File

@ -0,0 +1,67 @@
@import "variables";
.footer {
padding: 40px 0;
flex-grow: 0;
opacity: .5;
&__inner {
display: flex;
align-items: center;
justify-content: space-between;
margin: 0;
width: 760px;
max-width: 100%;
@media (max-width: $tablet-max-width) {
flex-direction: column;
}
}
a {
color: inherit;
}
.copyright {
display: flex;
flex-direction: row;
align-items: center;
font-size: 1rem;
// so `--light-color-secondary` color exists no where else in the stylings
// color: var(--light-color-secondary);
// As a substitute, I'm going to use the alpha-70 version of accent.
color: var(--accent-alpha-70);
&--user {
margin: auto;
text-align: center;
}
& > *:first-child:not(:only-child) {
margin-right: 10px;
@media (max-width: $tablet-max-width) {
border: none;
padding: 0;
margin: 0;
}
}
@media (max-width: $tablet-max-width) {
flex-direction: column;
margin-top: 10px;
}
}
// .copyright-theme-sep {
// @media (max-width: $tablet-max-width) {
// display: none;
// }
// }
// .copyright-theme {
// @media (max-width: $tablet-max-width) {
// font-size: 0.75rem;
// }
// }
}

139
sass/_header.scss Normal file
View File

@ -0,0 +1,139 @@
@import "variables";
@mixin menu {
background: var(--background);
box-shadow: var(--shadow);
color: var(--color);
border: 2px solid;
margin: 0;
padding: 10px;
list-style: none;
z-index: 99;
}
.header {
display: flex;
flex-direction: column;
position: relative;
&__inner {
display: flex;
align-items: center;
justify-content: space-between;
}
&__logo {
display: flex;
flex: 1;
&:after {
content: '';
background: repeating-linear-gradient(90deg, var(--accent), var(--accent) 2px, transparent 0, transparent 10px);
display: block;
width: 100%;
right: 10px;
}
a {
flex: 0 0 auto;
max-width: 100%;
text-decoration: none;
}
}
.menu {
margin: 20px 0;
--shadow-color: var(--accent-alpha-70);
--shadow: 0 10px var(--shadow-color), -10px 10px var(--shadow-color), 10px 10px var(--shadow-color);
@media (max-width: $phone-max-width) {
@include menu;
position: absolute;
top: 50px;
right: 0;
}
&__inner {
// @include menu;
display: flex;
flex-wrap: wrap;
list-style: none;
margin: 0;
padding: 0;
&--desktop {
@media (max-width: $phone-max-width) {
display: none;
}
}
&--mobile {
display: none;
@media (max-width: $phone-max-width) {
display: block;
}
}
li {
// &.active {
// color: var(--accent-alpha-70);
// }
&:not(:last-of-type) {
margin-right: 20px;
margin-bottom: 10px;
flex: 0 0 auto;
}
}
@media (max-width: $phone-max-width) {
flex-direction: column;
align-items: flex-start;
padding: 0;
li {
margin: 0;
padding: 5px;
}
}
}
&__sub-inner {
position: relative;
list-style: none;
padding: 0;
margin: 0;
&:not(:only-child) {
margin-left: 20px;
}
&-more {
@include menu;
top: 35px;
left: 0;
&-trigger {
color: var(--accent);
user-select: none;
cursor: pointer;
}
li {
margin: 0;
padding: 5px;
white-space: nowrap;
}
}
}
&-trigger {
color: var(--accent);
border: 2px solid;
margin-left: 10px;
height: 100%;
padding: 3px 8px;
position: relative;
}
}
}

8
sass/_logo.scss Normal file
View File

@ -0,0 +1,8 @@
.logo {
display: flex;
align-items: center;
text-decoration: none;
background: var(--accent);
color: black;
padding: 5px 10px;
}

335
sass/_main.scss Normal file
View File

@ -0,0 +1,335 @@
@import "variables";
html {
box-sizing: border-box;
}
*,
*:before,
*:after {
box-sizing: inherit;
}
body {
margin: 0;
padding: 0;
font-family: 'Fira Code', Menlo, DejaVu Sans Mono, Monaco, Consolas, Ubuntu Mono, monospace;
font-size: 1rem;
line-height: 1.54;
background-color: var(--background);
color: var(--color);
text-rendering: optimizeLegibility;
-webkit-font-smoothing: antialiased;
-webkit-overflow-scrolling: touch;
-webkit-text-size-adjust: 100%;
font-feature-settings: "liga";
@media (max-width: $phone-max-width) {
font-size: 1rem;
}
}
h1, h2, h3, h4, h5, h6 {
line-height: 1.3;
&:not(first-child) {
margin-top: 40px;
}
.zola-anchor {
font-size: 1.5rem;
visibility: hidden;
margin-left: 0.5rem;
vertical-align: 1%;
text-decoration: none;
border-bottom-color: transparent;
cursor: pointer;
@media(max-width: $phone-max-width){
visibility: visible;
}
}
&:hover {
.zola-anchor {
visibility: visible;
}
}
}
// Actually keeping Pawroman's stylings here for font-size over h1-h6.
// I prefer differentiated header height.
// OLD
// ---------------------
// h1, h2, h3 {
// font-size: 1.4rem;
// }
// h4, h5, h6 {
// font-size: 1.2rem;
// }
// Pawroman's
// ---------------------
h1 {
font-size: 1.4rem;
}
h2 {
font-size: 1.3rem;
}
h3 {
font-size: 1.2rem;
}
h4, h5, h6 {
font-size: 1.15rem;
}
a {
color: inherit;
}
img {
display: block;
max-width: 100%;
&.left {
margin-right: auto;
}
&.center {
margin-left: auto;
margin-right: auto;
}
&.right {
margin-left: auto;
}
}
p {
margin-bottom: 20px;
}
figure {
display: table;
max-width: 100%;
margin: 25px 0;
&.left {
// img {
margin-right: auto;
// }
}
&.center {
// img {
margin-left: auto;
margin-right: auto;
// }
}
&.right {
// img {
margin-left: auto;
// }
}
figcaption {
font-size: 14px;
padding: 5px 10px;
margin-top: 5px;
background: var(--accent);
color: var(--background);
&.left {
text-align: left;
}
&.center {
text-align: center;
}
&.right {
text-align: right;
}
}
}
code {
font-family: 'Fira Code', Menlo, DejaVu Sans Mono, Monaco, Consolas, Ubuntu Mono, monospace;
font-feature-settings: normal;
background: var(--accent-alpha-20);
color: var(--accent);
padding: 1px 6px;
margin: 0 2px;
font-size: .95rem;
}
pre {
font-family: 'Fira Code', Menlo, DejaVu Sans Mono, Monaco, Consolas, Ubuntu Mono, monospace;
font-feature-settings: "liga";
padding: 20px 10px;
font-size: .95rem;
overflow: auto;
border-top: 1px solid rgba(255, 255, 255, .1);
border-bottom: 1px solid rgba(255, 255, 255, .1);
+ pre {
border-top: 0;
margin-top: -40px;
}
@media (max-width: $phone-max-width) {
white-space: pre-wrap;
word-wrap: break-word;
}
code {
background: none !important;
margin: 0;
padding: 0;
font-size: inherit;
border: none;
table {
table-layout: auto;
border-collapse: collapse;
box-sizing: border-box;
width: 100%;
margin: 00px 0;
}
table, th, td {
border: none;
padding: 0px;
}
table tr td:first-child {
padding-right: 10px;
}
}
}
blockquote {
border-top: 1px solid var(--accent);
border-bottom: 1px solid var(--accent);
margin: 40px 0;
padding: 25px;
@media (max-width: $phone-max-width) {
padding-right: 0;
}
&:before {
content: '';
font-family: Georgia, serif;
font-size: 3.875rem;
position: absolute;
left: -40px;
top: -20px;
}
p:first-of-type {
margin-top: 0;
}
p:last-of-type {
margin-bottom: 0;
}
p {
position: relative;
}
p:before {
content: '>';
display: block;
position: absolute;
left: -25px;
color: var(--accent);
}
}
table {
table-layout: fixed;
border-collapse: collapse;
width: 100%;
margin: 40px 0;
}
table, th, td {
border: 1px dashed var(--accent);
padding: 10px;
}
th {
color: var(--accent);
}
ul, ol {
margin-left: 30px;
padding: 0;
li {
position: relative;
margin-top: 5px;
margin-bottom: 5px;
}
@media (max-width: $phone-max-width) {
margin-left: 20px;
}
ul, ol {
margin-top: 10px;
margin-bottom: 10px;
}
}
ol ol {
list-style-type: lower-alpha;
}
.container {
display: flex;
flex-direction: column;
padding: 40px;
max-width: 864px;
min-height: 100vh;
border-right: 1px solid rgba(255, 255, 255, 0.1);
&.full,
&.center {
border: none;
margin: 0 auto;
}
&.full {
max-width: 100%;
}
@media (max-width: $phone-max-width) {
padding: 20px;
}
}
.content {
display: flex;
}
hr {
width: 100%;
border: none;
background: var(--border-color);
height: 1px;
}
.hidden {
display: none;
}

63
sass/_pagination.scss Normal file
View File

@ -0,0 +1,63 @@
@import 'variables';
.pagination {
margin-top: 50px;
&__buttons {
display: flex;
align-items: center;
justify-content: center;
// @media (max-width: $phone-max-width) {
// flex-direction: column;
// }
a {
text-decoration: none;
}
}
}
.button {
position: relative;
display: inline-flex;
align-items: center;
justify-content: center;
font-size: 1rem;
border-radius: 8px;
max-width: 40%;
padding: 0;
cursor: pointer;
appearance: none;
+ .button {
margin-left: 10px;
}
// @media (max-width: $phone-max-width) {
// max-width: 80%;
// }
a {
display: flex;
padding: 8px 16px;
text-decoration: none;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
}
&__text {
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
}
&.next .button__icon {
margin-left: 8px;
}
&.previous .button__icon {
margin-right: 8px;
}
}

114
sass/_post.scss Normal file
View File

@ -0,0 +1,114 @@
@import "variables";
// .posts {
// margin: 0 auto;
// }
.post {
width: 100%;
text-align: left;
margin: 20px auto;
padding: 20px 0;
@media (max-width: $tablet-max-width) {
max-width: 660px;
}
&:not(:last-of-type) {
border-bottom: 1px solid var(--border-color);
}
// %meta {
// font-size: 1rem;
// margin-bottom: 10px;
// color: var(--accent-alpha-70);
// }
// &-meta {
// @extend %meta;
// }
// &-meta-inline {
// @extend %meta;
// display: inline;
// }
&-meta {
font-size: 1rem;
margin-bottom: 10px;
color: var(--accent-alpha-70);
}
&-title {
--border: 3px dotted var(--accent);
position: relative;
color: var(--accent);
margin: 0 0 15px;
padding-bottom: 15px;
border-bottom: var(--border);
&:after {
content: '';
position: absolute;
bottom: 2px;
display: block;
width: 100%;
border-bottom: var(--border);
}
a {
text-decoration: none;
}
}
&-content {
margin-top: 30px;
}
ul {
list-style: none;
li:before {
content: '⦿';
position: absolute;
left: -20px;
color: var(--accent);
}
ul {
li:before {
content: '';
position: absolute;
left: -20px;
color: var(--accent);
}
ul {
li:before {
content: '';
position: absolute;
left: -20px;
color: var(--accent);
}
}
}
}
}
// TODO: try adapting this using a properly nested selector in the block above
// for ul items.
.tag-list {
@media(max-width: $phone-max-width) {
margin-left: 5%;
}
}
.footnote-definition {
color: var(--accent);
p {
display: inline;
color: var(--footnote-color);
}
}

3
sass/_semantic.scss Normal file
View File

@ -0,0 +1,3 @@
section, article, aside, footer, header, nav {
display: block;
}

6
sass/_toc.scss Normal file
View File

@ -0,0 +1,6 @@
div.toc {
--shadow-color: var(--accent-alpha-70);
--shadow: 10px 10px var(--shadow-color);
@include menu;
margin: 20px 0;
}

10
sass/_variables.scss Normal file
View File

@ -0,0 +1,10 @@
:root {
// *NOTE*:
// ------------------------------------------------
//Keep the same as the values in variables.scss!!!!!
--phoneWidth: (max-width: 684px);
--tabletWidth: (max-width: 900px);
}
$phone-max-width: 683px;
$tablet-max-width: 899px;

9
sass/color/blue.scss Normal file
View File

@ -0,0 +1,9 @@
:root {
--accent: rgb(35,176,255);
--accent-alpha-20: rgba(35,176,255,.2);
--accent-alpha-70: rgba(35,176,255,.7);
--background: #1D1E28;
--color: whitesmoke;
--border-color: rgba(255, 255, 255, .1);
--footnote-color: rgba(255, 255, 255, .5);
}

12
sass/color/green.scss Normal file
View File

@ -0,0 +1,12 @@
:root {
// --accent: rgb(120,226,160);
// --accent-alpha-20: rgba(120,226,160,.2);
// --accent-alpha-70: rgba(120,226,160,.7);
--accent: rgb(72, 251, 53);
--accent-alpha-20: rgba(72, 251, 53,.2);
--accent-alpha-70: rgba(72, 251, 53,.7);
--background: #1F222A;
--color: whitesmoke;
--border-color: rgba(255, 255, 255, .1);
--footnote-color: rgba(255, 255, 255, .5);
}

9
sass/color/orange.scss Normal file
View File

@ -0,0 +1,9 @@
:root {
--accent: rgb(255,168,106);
--accent-alpha-20: rgba(255, 168, 106, .2);
--accent-alpha-70: rgba(255, 168, 106,.7);
--background: #211f1a;
--color: whitesmoke;
--border-color: rgba(255, 255, 255, .1);
--footnote-color: rgba(255, 255, 255, .5);
}

9
sass/color/pink.scss Normal file
View File

@ -0,0 +1,9 @@
:root {
--accent: rgb(238,114,241);
--accent-alpha-20: rgba(238,114,241,.2);
--accent-alpha-70: rgba(238,114,241,.7);
--background: #21202C;
--color: whitesmoke;
--border-color: rgba(255, 255, 255, .1);
--footnote-color: rgba(255, 255, 255, .5);
}

9
sass/color/red.scss Normal file
View File

@ -0,0 +1,9 @@
:root {
--accent: rgb(255,98,102);
--accent-alpha-20: rgba(255,98,102,.2);
--accent-alpha-70: rgba(255,98,102,.7);
--background: #221F29;
--color: whitesmoke;
--border-color: rgba(255, 255, 255, .1);
--footnote-color: rgba(255, 255, 255, .5);
}

10
sass/style.scss Normal file
View File

@ -0,0 +1,10 @@
@import 'buttons';
@import 'font';
@import 'header';
@import 'logo';
@import 'main';
@import 'post';
@import 'pagination';
@import 'footer';
@import 'semantic';
@import 'toc';

Some files were not shown because too many files have changed in this diff Show More