diff --git a/css/default.css b/css/default.css new file mode 100644 index 0000000..36edc12 --- /dev/null +++ b/css/default.css @@ -0,0 +1,35 @@ +html, body { + font-size: 16px; + font-family: monospace; + background: #000000; + color: #00FF66; + line-height: 1.25; +} + +a { + color: #ACFFBD; + text-decoration: none; + font-weight: bold; +} + +a:hover { + text-decoration: underline; +} + +header { + text-align: center; +} + +footer { + text-align: center; +} + +#code { + background: #1c1c1c; + color: #FF8C00; +} + +#block { + margin: auto; + max-width: 640px; +} diff --git a/haunt.scm b/haunt.scm new file mode 100644 index 0000000..32f66dd --- /dev/null +++ b/haunt.scm @@ -0,0 +1,106 @@ +;;; -*- coding: utf-8 -*- +;;; +;;; This program is free software; you can redistribute it and/or +;;; modify it under the terms of the GNU General Public License as +;;; published by the Free Software Foundation; either version 3 of the +;;; License, or (at your option) any later version. +;;; +;;; This program is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;;; General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with this program. If not, see +;;; . + +(use-modules (haunt builder blog) + (haunt builder assets) + (haunt post) + (haunt site) + (haunt config) + (useful)) + +;; Static "Home" +(define home-page + (static-page + "Home" + "index.html" + `(,(centered-image "images/mainframe_256x256.gif")))) + +;; Static "About" page +(define about-page + (static-page + "About" + "about.html" + `((h1 "About") + (p "This is the personal website of Cristian Cezar Moisés." + " I am a student. (Pronouns: " + (i "he, him, his") + ").") + ,(centered-image "images/profile.png") + (p "Learning about cybersec,infosec and hacking." + "Information Security Graduate" + ,(link* "Ftec" + "https://www.ftec.com.br/") + ". My research focused on the " + "Linux Servers Security." + "I'm a free software enthusiast.") + (br) + (p " I like code and i like to mix many projects like threejs + react " + "Check my awesome interactive portfolio " + ,(link* "here" + "https://live-one.vercel.app") + ". Outside of work, I'm a computerphile — " + "I enjoy learning about and using programming languages " + ".This " + "site was written in the LISP dialect Scheme (GNU Guile, version " + ,(version) + ") and built with the Haunt library (version " + ,%haunt-version + ") on " + ,(strftime "%c" (localtime (current-time))) + ". The source code can be found on " + ,(link* "GitHub" + "https://github.com/cristiancmoises/hauntweb") + ". Check my YouTube channel " + ,(link* "SecurityOps" "https://youtube.com/@securityops") + ".")))) + +(define not-found + (static-page + "404" + "404.html" + `((h1 "404 Page Not Found") + (p "Unfortunately the page you've tried to access doesn't exist!") + (br) + (h2 "Return " + ,(link* "Home" + "https://cristiancmoises.github.io") + "?")))) + +;; Collection of miscellaneous posts +(define %misc + `(("Recent Posts" "misc.html" ,misc-posts))) + +;; Collection of research-related posts +(define %research + `(("Published Work" "research.html" ,research-posts))) + +;; Build site +(site #:title + "C.C.M. Homepage" + #:domain + "cristiancmoises.github.io" + #:default-metadata + '((author . "Cristian Cezar Moisés")) + #:readers + (list commonmark-reader*) + #:builders + (list (blog #:theme default-theme #:collections %misc) + (blog #:theme default-theme #:collections %research) + home-page + about-page + not-found + (static-directory "css") + (static-directory "images"))) diff --git a/images/galaxy_256x256.png b/images/galaxy_256x256.png new file mode 100644 index 0000000..8234ce1 Binary files /dev/null and b/images/galaxy_256x256.png differ diff --git a/images/github_profile.png b/images/github_profile.png new file mode 100644 index 0000000..127bd91 Binary files /dev/null and b/images/github_profile.png differ diff --git a/images/logo_256x256.gif b/images/logo_256x256.gif new file mode 100644 index 0000000..3dd9385 Binary files /dev/null and b/images/logo_256x256.gif differ diff --git a/images/mainframe_256x256.gif b/images/mainframe_256x256.gif new file mode 100644 index 0000000..3fa55f1 Binary files /dev/null and b/images/mainframe_256x256.gif differ diff --git a/images/profile.png b/images/profile.png new file mode 100644 index 0000000..f85c673 Binary files /dev/null and b/images/profile.png differ diff --git a/images/using_RFE.png b/images/using_RFE.png new file mode 100644 index 0000000..5cbaa53 Binary files /dev/null and b/images/using_RFE.png differ diff --git a/posts/fasteros.md b/posts/fasteros.md new file mode 100644 index 0000000..eeac2a6 --- /dev/null +++ b/posts/fasteros.md @@ -0,0 +1,15 @@ +title: Faster⚡OS +date: 2024-02-12 19:00 +tags: research +summary: My Web Operating System +--- +Web Operating System +--- +### Free. +A web operating system for you! + +### Easy. +Just click [here](https://fasteros.vercel.app) and visit now. + +### Nice. +All files are running on your local computer. Convert, play music, and more with this. diff --git a/posts/guix.md b/posts/guix.md new file mode 100644 index 0000000..69ffa10 --- /dev/null +++ b/posts/guix.md @@ -0,0 +1,16 @@ +title: Ok. That's All +date: 2024-02-12 19:00 +tags: misc +summary: Guix - The best! +--- +Why Guix?..." +--- +### Liberating. +Guix is a distribution of the GNU operating system developed by the GNU Project—which respects the freedom of computer users. + +### Dependable. +Guix supports transactional upgrades and roll-backs, unprivileged package management, and more. When used as a standalone distribution, Guix supports declarative system configuration for transparent and reproducible operating systems. + +### Hackable. +It provides Guile Scheme APIs, including high-level embedded domain-specific languages (EDSLs) to define packages and whole-system configurations. + diff --git a/site/404.html b/site/404.html new file mode 100644 index 0000000..9901708 --- /dev/null +++ b/site/404.html @@ -0,0 +1 @@ +404 — C.C.M. Homepage

+>---------------------------<+

[About]--[Research]--[Miscellany]

+>---------------------------<+


404 Page Not Found

Unfortunately the page you've tried to access doesn't exist!


Return [Home]?

\ No newline at end of file diff --git a/site/about.html b/site/about.html new file mode 100644 index 0000000..d43b968 --- /dev/null +++ b/site/about.html @@ -0,0 +1 @@ +About — C.C.M. Homepage

+>---------------------------<+

[About]--[Research]--[Miscellany]

+>---------------------------<+


About

This is the personal website of Cristian Cezar Moisés. I am a student. (Pronouns: he, him, his).

Learning about cybersec,infosec and hacking.Information Security Graduate[Ftec]. My research focused on the Linux Servers Security.I'm a free software enthusiast.


I like code and i like to mix many projects like threejs + react Check my awesome interactive portfolio [here]. Outside of work, I'm a computerphile — I enjoy learning about and using programming languages .This site was written in the LISP dialect Scheme (GNU Guile, version 3.0.9) and built with the Haunt library (version 0.2.6) on Mon 12 Feb 2024 10:40:07 PM -03. The source code can be found on [GitHub]. Check my YouTube channel [SecurityOps].

\ No newline at end of file diff --git a/site/css/default.css b/site/css/default.css new file mode 100644 index 0000000..36edc12 --- /dev/null +++ b/site/css/default.css @@ -0,0 +1,35 @@ +html, body { + font-size: 16px; + font-family: monospace; + background: #000000; + color: #00FF66; + line-height: 1.25; +} + +a { + color: #ACFFBD; + text-decoration: none; + font-weight: bold; +} + +a:hover { + text-decoration: underline; +} + +header { + text-align: center; +} + +footer { + text-align: center; +} + +#code { + background: #1c1c1c; + color: #FF8C00; +} + +#block { + margin: auto; + max-width: 640px; +} diff --git a/site/fasteros.html b/site/fasteros.html new file mode 100644 index 0000000..f0ccb59 --- /dev/null +++ b/site/fasteros.html @@ -0,0 +1 @@ +Faster⚡OS — C.C.M. Homepage

+>---------------------------<+

[About]--[Research]--[Miscellany]

+>---------------------------<+


Faster⚡OS

February 12, 2024

Web Operating System

Free.

A web operating system for you!

Easy.

Just click [here] and visit now.

Nice.

All files are running on your local computer. Convert, play music, and more with this.

\ No newline at end of file diff --git a/site/images/IBM_3033_with_users.jpg b/site/images/IBM_3033_with_users.jpg new file mode 100644 index 0000000..2753440 Binary files /dev/null and b/site/images/IBM_3033_with_users.jpg differ diff --git a/site/images/galaxy_256x256.png b/site/images/galaxy_256x256.png new file mode 100644 index 0000000..8234ce1 Binary files /dev/null and b/site/images/galaxy_256x256.png differ diff --git a/site/images/github_profile.png b/site/images/github_profile.png new file mode 100644 index 0000000..127bd91 Binary files /dev/null and b/site/images/github_profile.png differ diff --git a/site/images/logo_256x256.gif b/site/images/logo_256x256.gif new file mode 100644 index 0000000..3dd9385 Binary files /dev/null and b/site/images/logo_256x256.gif differ diff --git a/site/images/mainframe_256x256.gif b/site/images/mainframe_256x256.gif new file mode 100644 index 0000000..3fa55f1 Binary files /dev/null and b/site/images/mainframe_256x256.gif differ diff --git a/site/images/profile.png b/site/images/profile.png new file mode 100644 index 0000000..f85c673 Binary files /dev/null and b/site/images/profile.png differ diff --git a/site/images/using_RFE.png b/site/images/using_RFE.png new file mode 100644 index 0000000..5cbaa53 Binary files /dev/null and b/site/images/using_RFE.png differ diff --git a/site/index.html b/site/index.html new file mode 100644 index 0000000..fe42c7d --- /dev/null +++ b/site/index.html @@ -0,0 +1 @@ +Home — C.C.M. Homepage

+>---------------------------<+

[About]--[Research]--[Miscellany]

+>---------------------------<+


\ No newline at end of file diff --git a/site/misc.html b/site/misc.html new file mode 100644 index 0000000..6a4130f --- /dev/null +++ b/site/misc.html @@ -0,0 +1 @@ +Recent Posts — C.C.M. Homepage

+>---------------------------<+

[About]--[Research]--[Miscellany]

+>---------------------------<+


Recent Posts

Ok. That's All

February 12, 2024

Why Guix?..."

[read more...]

-->--<--

\ No newline at end of file diff --git a/site/ok-thats-all.html b/site/ok-thats-all.html new file mode 100644 index 0000000..5de74a9 --- /dev/null +++ b/site/ok-thats-all.html @@ -0,0 +1 @@ +Ok. That's All — C.C.M. Homepage

+>---------------------------<+

[About]--[Research]--[Miscellany]

+>---------------------------<+


Ok. That's All

February 12, 2024

Why Guix?..."

Liberating.

Guix is a distribution of the GNU operating system developed by the GNU Project—which respects the freedom of computer users.

Dependable.

Guix supports transactional upgrades and roll-backs, unprivileged package management, and more. When used as a standalone distribution, Guix supports declarative system configuration for transparent and reproducible operating systems.

Hackable.

It provides Guile Scheme APIs, including high-level embedded domain-specific languages (EDSLs) to define packages and whole-system configurations.

\ No newline at end of file diff --git a/site/research.html b/site/research.html new file mode 100644 index 0000000..d09f23f --- /dev/null +++ b/site/research.html @@ -0,0 +1 @@ +Published Work — C.C.M. Homepage

+>---------------------------<+

[About]--[Research]--[Miscellany]

+>---------------------------<+


Published Work

Faster⚡OS

February 12, 2024

Web Operating System

[read more...]

-->--<--

\ No newline at end of file diff --git a/useful.scm b/useful.scm new file mode 100644 index 0000000..f108ea4 --- /dev/null +++ b/useful.scm @@ -0,0 +1,247 @@ +;;; -*- coding: utf-8 -*- +;;; +;;; This program is free software; you can redistribute it and/or +;;; modify it under the terms of the GNU General Public License as +;;; published by the Free Software Foundation; either version 3 of the +;;; License, or (at your option) any later version. +;;; +;;; This program is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;;; General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with this program. If not, see +;;; . + +(define-module (useful) + #:use-module (haunt html) + #:use-module (haunt reader) + #:use-module (haunt utils) + #:use-module (haunt asset) + #:use-module (haunt builder blog) + #:use-module (haunt page) + #:use-module (haunt post) + #:use-module (haunt site) + #:use-module (srfi srfi-1) + #:use-module (srfi srfi-19) + #:use-module (web uri) + #:use-module (ice-9 match) + #:use-module (sxml match) + #:use-module (sxml transform) + #:use-module (commonmark) + #:export (link* + default-theme + static-page + research-posts + misc-posts + centered-image + commonmark-reader* + date)) + +;;; HTML utilities --------------------------------------------------- + +(define (link* name uri) + "Create a link with NAME to url URI." + `("[" (a (@ (href ,uri)) ,name) "]")) + +(define (stylesheet name) + "Use the stylesheet NAME.css saved locally in css/." + `(link (@ (rel "stylesheet") + (href ,(string-append "/css/" name ".css"))))) + +(define (centered-image image) + "Create a centered image from source IMAGE." + `((div (@ (style "text-align: center")) (img (@ (src ,image)))))) + +;;; Post processing utilities ---------------------------------------- + +(define (date year month day) + "Create a SRFI-19 date for the given YEAR, MONTH, DAY" + (let ((tzoffset + (tm:gmtoff + (localtime (time-second (current-time)))))) + (make-date 0 0 0 0 day month year tzoffset))) + +(define (first-paragraph post) + "Extract the first paragraph from POST." + (let loop ((sxml (post-sxml post)) (result '())) + (match sxml + (() (reverse result)) + ((or (('p ...) _ ...) (paragraph _ ...)) + (reverse (cons paragraph result))) + ((head . tail) (loop tail (cons head result)))))) + +(define (contains? l m) + "Check if LIST contains MEMBER." + (if (null? l) + #f + (or (equal? (first l) m) + (contains? (drop l 1) m)))) + +(define (research? post) + "Check if POST has a research tag." + (contains? (post-ref post 'tags) "research")) + +(define (misc? post) + "Check if POST has a misc tag." + (contains? (post-ref post 'tags) "misc")) + +(define (research-posts posts) + "Returns POSTS that contain research tag in reverse chronological order." + (posts/reverse-chronological + (filter research? posts))) + +(define (misc-posts posts) + "Returns POSTS that contain misc tag in reverse chronological order." + (posts/reverse-chronological + (filter misc? posts))) + +;;; Links ------------------------------------------------------------ + +(define (github) + (link* "GitHub" "https://github.com/cristiancmoises")) + +(define (linkedin) + (link* "LinkedIn" "https://www.linkedin.com/in/cristiancezarmoises")) + +(define (orcid) + (link* "ORCID" "https://orcid.org/0000-0001-9533-4916")) + +(define (arxiv) + (link* "ArXiv" "https://arxiv.org/search/?")) + +(define (ads) + (link* "Youtube" "https://youtube.com/@securityops")) + +(define (cc-by-sa) + (link* "CC BY-SA 4.0" "https://creativecommons.org/licenses/by-sa/4.0/")) + +;;; Website layout --------------------------------------------------- + +(define (header-box) + `(div (@ (id "block")) + (p "+>---------------------------<+") + (p ,(link* "About" "/about.html")-- + ,(link* "Research" "/research.html")-- + ,(link* "Miscellany" "/misc.html")) + (p "+>---------------------------<+") + (br))) + +(define (footer-box) + `(div (@ (id "block")) + (br) + (p "+>---------------------------<+") + (div ,(github)-- + ,(linkedin)) + (div ,(orcid)-- + ,(arxiv)-- + ,(ads)) + (p "© 2024 Cristian Cezar Moises") + (p ,(cc-by-sa)) + (p "Built with " + ,(link* "Haunt" "http://haunt.dthompson.us") + " in " + ,(link* "Scheme" "https://www.gnu.org/software/guile/guile.html")) + (p "+>---------------------------<+"))) + +(define default-theme + (theme #:name + "default-theme" + #:layout + (lambda (site title body) + `((doctype "html") + (head (meta (@ (charset "utf-8"))) + (meta (@ (name "description") + (content "C.C.M. personal website"))) + (meta (@ (name "viewport") + (content "width=device-width, initial-scale=1"))) + (title ,(string-append title " — " (site-title site))) + ,(stylesheet "default")) + (body (header ,(header-box)) + (div (@ (id "block")) ,body) + (footer ,(footer-box))))) + #:post-template + (lambda (post) + `((h1 ,(post-ref post 'title)) + (div ,(date->string (post-date post) "~B ~d, ~Y")) + (div ,(post-sxml post)))) + #:collection-template + (lambda (site title posts prefix) + (define (post-uri post) + (string-append + "/" + (or prefix "") + (site-post-slug site post) + ".html")) + `((h1 ,title) + ,(map (lambda (post) + (let ((uri (string-append + "/" + (site-post-slug site post) + ".html"))) + `(div (h2 (a (@ (href ,uri) + (style "text-decoration: none;")) + ,(post-ref post 'title))) + (div ,(date->string (post-date post) "~B ~d, ~Y")) + (div ,(first-paragraph post)) + ,(link* "read more..." uri) + (br) + (p (@ (style "text-align: center;")) "-->--<--")))) + posts))))) + +(define (static-page title file-name body) + "Create a static page with TITLE at html file FILENAME using page BODY." + (lambda (site posts) + (make-page + file-name + (with-layout default-theme site title body) + sxml->html))) + +;;; Custom markdown reader -------------------------------------------------- + +(define (sxml-identity . args) args) + +;; Code block +(define (code-block . tree) + (sxml-match + tree + ((pre (code ,source)) + `(div (@ (id "code")) + (pre (@ (style "overflow: auto")) (code ,source)))) + (,other other))) + +;; Convert hrefs to custom hoverable link +(define (hover-link . tree) + (sxml-match + tree + ((a (@ (href ,uri) unquote _) unquote name) + `(,(link* name uri))))) + +;; Center all images +(define (center-images . tree) + (sxml-match + tree + ((img (@ (src ,uri) unquote _)) + `(,(centered-image uri))))) + +(define %commonmark-rules + `((pre unquote code-block) + (a unquote hover-link) + (img unquote center-images) + (*text* unquote (lambda (tag str) str)) + (*default* unquote sxml-identity))) + +(define (post-process-commonmark sxml) + (pre-post-order sxml %commonmark-rules)) + +(define commonmark-reader* + (make-reader + (make-file-extension-matcher "md") + (lambda (file) + (call-with-input-file + file + (lambda (port) + (values + (read-metadata-headers port) + (post-process-commonmark (commonmark->sxml port))))))))