~comcloudway/pages

d204c6a77e0b98e3914f86fc993a7afd90ec2510 — Jakob Meier 1 year, 7 months ago 35fdcbc
Migrated scripts to use emacs lisp
- generators are now using elisp instead of bash
- build using: `./build.sh`
  (running emacs in batch mode)
- build outputs are now located in ./build
26 files changed, 149 insertions(+), 248 deletions(-)

A README.org
A build.sh
A el/get-feeds.el
A el/get-org-title.el
A el/get-posts.el
A el/pub.el
D feeds/coding/functional-programming.org
D feeds/coding/index.org
D feeds/handhelds/on-vacation-with-my-pinephone.org
D feeds/index.org
D feeds/projects/oomph.org
D feeds/queertopia/index.org
D index.org
D license.org
D pub.el
M res/base.css
D sitemap.org
R config.org => src/config.org
R feeds/handhelds/formatting-an-ipod.org => src/feeds/handhelds/formatting-an-ipod.org
R feeds/handhelds/index.org => src/feeds/handhelds/index.org
R feeds/handhelds/using-linux-mobile-for-1-month.org => src/feeds/handhelds/using-linux-mobile-for-1-month.org
A src/feeds/index.org
R feeds/projects/index.org => src/feeds/projects/index.org
R feeds/projects/polarplayer-studio.org => src/feeds/projects/polarplayer-studio.org
R README.org => src/index.org
A src/license.org
A README.org => README.org +1 -0
@@ 0,0 1,1 @@
./src/index.org
\ No newline at end of file

A build.sh => build.sh +2 -0
@@ 0,0 1,2 @@
#!/bin/bash
yes yes | emacs --batch -l ./el/pub.el

A el/get-feeds.el => el/get-feeds.el +9 -0
@@ 0,0 1,9 @@
(setq this (file-name-directory load-file-name))
(load-file
 (format "%s/%s" this "get-org-title.el"))

(defun extract (path)
  (format "[[file:%s/index.org][%s]]" path (get-org-title (format "%s/index.org" path))))

(defun get-feeds (path)
  (mapcar '(lambda (p) (extract (format "%s/%s" path p))) (directory-files path nil "^[^.]*$")))

A el/get-org-title.el => el/get-org-title.el +10 -0
@@ 0,0 1,10 @@
(defun get-org-title (file)
  (let (title)
    (when file
      (with-temp-buffer
          (insert-file-contents file)
        (pcase (org-collect-keywords '("TITLE"))
          (`(("TITLE" . ,val))
           (setq title (car val)))))
      title)))
(provide 'get-org-title)

A el/get-posts.el => el/get-posts.el +12 -0
@@ 0,0 1,12 @@
(setq this (file-name-directory load-file-name))
(load-file
 (format "%s/%s" this "get-org-title.el"))

(defun extract (path)
  (format "[[file:./%s][%s]]" path (get-org-title (format "%s" path))))

(require 'seq)
(defun get-posts (path)
  (mapcar
   '(lambda (p) (extract (format "%s/%s" path p)))
   (remove "index.org" (directory-files path nil "[.]org$"))))

A el/pub.el => el/pub.el +36 -0
@@ 0,0 1,36 @@
(require 'ox-publish)
;; function run before the website is generated
(defun before (n))
;; function run after website has been generated
(defun after (n))

;; configure the project
(setq org-publish-project-alist
      '(
        ;; build the blog source
        ("src"
         :base-directory "./src"
         :base-file "index.org"
         :recursive t
         :publishing-directory "./build"
         :auto-sitemap nil
         :preparation-function before
         :complete-function after)

        ;; bundle the assets
        ("res"
         :base-directory "./res"
         :base-extension "css\\|js\\|png\\|jpg"
         :publishing-directory "./build/res"
         :recursive t
         :publishing-function org-publish-attachment
         )

        ;; combine the individual components into one
        ("ccw.icu" :components ("src" "res"))
        ))

;; dynamic build
;; force rebuild if "build" does not exist
;; or updated changed files if build does exist
(org-publish "ccw.icu" (not (file-directory-p "./build/")))

D feeds/coding/functional-programming.org => feeds/coding/functional-programming.org +0 -19
@@ 1,19 0,0 @@
#+TITLE: Let's check out functional programming
#+DESCRIPTION: I've never really understood functional programming. Lets have a look at some languages
#+SETUPFILE: ../../config.org
#+OPTIONS: toc:nil num:nil


#+begin_src elisp :exports both
(defun suc (x) (+ x 1))
(defun add3 (x y z)
  (if (= y z) x
    (add3 (suc x) y (suc z))))
(defun add (x y)
  (add3 x y 0))

(print (add -3 5))
#+end_src

#+RESULTS:
: 2

D feeds/coding/index.org => feeds/coding/index.org +0 -26
@@ 1,26 0,0 @@
#+TITLE: Coding
#+DESCRIPTION: Are you up for a coding challenge? You can find some of my weird side projects here
#+SETUPFILE: ../../config.org
#+OPTIONS: toc:nil num:nil
#+DATE:<2023-01-29 Sun 16:20>

There is nothing I can say to explain this,
sometimes I just feel like writing some lines of code.
But instead of throwing them away like a normal person,
I hold onto them.

And this is how they end up here.

Test projects or challanges I try,
that I never finish

#+BEGIN_SRC bash :exports results
for dir in $(find . -name '*.org' -maxdepth 1 -mindepth 1); do
    stext="$(echo $dir | sed -e "s/\.\///g" | sed -e "s/\.org$//g")"
    echo [[file:conding/$dir][$stext]]
done
#+END_SRC

#+RESULTS:
| [[file:conding/./functional-programming.org][functional-programming]] |
| [[file:conding/./index.org][index]]                  |

D feeds/handhelds/on-vacation-with-my-pinephone.org => feeds/handhelds/on-vacation-with-my-pinephone.org +0 -14
@@ 1,14 0,0 @@
#+TITLE: Using the pinephone as a laptop replacement
#+DESCRIPTION: I left my laptop at home and took my pinephone instead
#+SETUPFILE: ../../config.org
#+DATE: <2022-11-16 Wed 14:00>

* What is a pine-phone
Although I doubt that you'd read this without having heard of the pinephone,
let me explain the concept in a couple of sentences:

* Why?
Looking at the title this might sound like a stupid idea,
but thing about it for a moment:
- apple uses arm processors as well[fn::I know their processors are faster]
- the pinephone is able to run a desktop linux operating system

D feeds/index.org => feeds/index.org +0 -35
@@ 1,35 0,0 @@
#+TITLE: Blog Posts
#+DESCRIPTION: Index page with all of my blog entries listed by category
#+SETUPFILE: ../config.org
#+OPTIONS: toc:nil num:nil
#+DATE:<2022-06-17 Fri 13:30>

Whoooaa you have found my blog-post index.

See below for a list of all of the posts I posted.
You can click on the folder name
if you want to see a list of all posts in that category.
Or click on the given file name if you want to read the post.

#+begin_src bash :exports results
for dir in $(find .// -type d -maxdepth 1 -mindepth 1); do
    for file in $(find $dir -name '*.org' -type f -maxdepth 1 -mindepth 1); do
        category="$(echo $dir | sed -e "s/\.\/\///g")"
        post="$(echo $file | sed -e "s/\.\/\/$category\///g")"
        stylized="$(echo $post |  sed -e "s/.org$//g")"
        echo [[file:$dir/index.org][$category]]/[[file:$file][$stylized]]
    done
done
#+end_src

#+RESULTS:
| [[file:.//projects/index.org][projects]]/[[file:.//projects/index.org][index]]                           |
| [[file:.//projects/index.org][projects]]/[[file:.//projects/polarplayer-studio.org][polarplayer-studio]]              |
| [[file:.//projects/index.org][projects]]/[[file:.//projects/oomph.org][oomph]]                           |
| [[file:.//handhelds/index.org][handhelds]]/[[file:.//handhelds/index.org][index]]                          |
| [[file:.//handhelds/index.org][handhelds]]/[[file:.//handhelds/using-linux-mobile-for-1-month.org][using-linux-mobile-for-1-month]] |
| [[file:.//handhelds/index.org][handhelds]]/[[file:.//handhelds/on-vacation-with-my-pinephone.org][on-vacation-with-my-pinephone]]  |
| [[file:.//handhelds/index.org][handhelds]]/[[file:.//handhelds/formatting-an-ipod.org][formatting-an-ipod]]             |
| [[file:.//coding/index.org][coding]]/[[file:.//coding/functional-programming.org][functional-programming]]            |
| [[file:.//coding/index.org][coding]]/[[file:.//coding/index.org][index]]                             |
| [[file:.//queertopia/index.org][queertopia]]/[[file:.//queertopia/index.org][index]]                         |

D feeds/projects/oomph.org => feeds/projects/oomph.org +0 -10
@@ 1,10 0,0 @@
#+TITLE: Oomph
#+DESCRIPTION: Introduction Oomph! A mastodon music-genre bot
#+SETUPFILE: ../../config.org
#+DATE:<2022-06-17 Fri 10:30>

* Why?

* About

* Follow Me

D feeds/queertopia/index.org => feeds/queertopia/index.org +0 -29
@@ 1,29 0,0 @@
#+TITLE: Queertopia
#+DESCRIPTION: Im Queer! And how could I not have a blog about queer-ness?
#+SETUPFILE: ../../config.org
#+OPTIONS: toc:nil num:nil
#+DATE:<2023-01-29 Sun 16:20>

You probably visited my [[../../index.org][homepage]] before,
but did you know that I identify as =trans/nonbinary=?

*Well now you do.*

* Welcome to Queertopia
May I say: =Welcome to queertopia=,
the place where I share my queer thoughts,
come up with weird proposals
and maybe I'm even able to teach you something.

Either way,
it is amazing to have you here.

#+BEGIN_SRC bash :exports results
for dir in $(find . -name '*.org' -maxdepth 1 -mindepth 1); do
    stext="$(echo $dir | sed -e "s/\.\///g" | sed -e "s/\.org$//g")"
    echo [[file:conding/$dir][$stext]]
done
#+END_SRC

#+RESULTS:
: [[file:conding/./index.org][index]]

D index.org => index.org +0 -1
@@ 1,1 0,0 @@
#+INCLUDE: ./README.org

D license.org => license.org +0 -1
@@ 1,1 0,0 @@
Content on this website and on the subsites is available under CC BY-SA.

D pub.el => pub.el +0 -31
@@ 1,31 0,0 @@
(require 'ox-publish)

; the assets and build directory pipeline
; creates the build folder (if needed)
; deleted the old asset folder (if needed)
; copies new asset version
(defun assets (n)
  (if (not (file-directory-p "./build"))
      (make-directory "./build" t))
  (delete-directory "./build/res" t)
  (copy-directory "./res" "./build/res"))

; configure the project
(setq org-publish-project-alist
      '(
        ("ccw.icu"
         :base-directory "."
         :base-file "index.org"
         :recursive t
         :publishing-directory "./build"
         :auto-sitemap nil
         :sitemap-filename "sitemap.org"
         :sitemap-title "Sitemap"
         :preparation-function assets
         )
        ))

; dynamic build
; force rebuild if "build" does not exist
; or updated changed files if build does exist
(org-publish "ccw.icu" (not (file-directory-p "./build/")))

M res/base.css => res/base.css +23 -6
@@ 53,7 53,8 @@ a:hover {
}
figure {
    margin: 0;
    padding: 0.4rem
    padding: 0.4rem;
    max-width: 80%;
}
img {
    border-radius: 1rem;


@@ 117,13 118,22 @@ table tr:nth-child(2n) {

.org-src-container {
    border-radius: 8px;
    padding-top: 1rem;
    background: var(--color-base);
    border: 4px solid var(--color-base);
    position: relative;
    overflow: hidden;
    max-height: 40vh;
}
.org-src-container > label {
    display: flex;
    opacity: 0.8;
    font-size: 0.8rem;
    justify-content: right;
    padding: 0.1rem;
}
.org-src-container > label > .listing-number {
    margin-right: 0.2rem
}
.src {
    background: var(--color-box-light);
    width: calc(100% - 2 * 0.4rem);


@@ 131,8 141,12 @@ table tr:nth-child(2n) {
    border: none;
    padding: 0.4rem;
    margin: 0;
    margin-top: 1rem;
    overflow: auto;
}
label ~ .src {
    margin-top: 0;
}
.example {
    background: var(--color-box-light);
    border-radius: 8px;


@@ 148,14 162,13 @@ table tr:nth-child(2n) {
    left: 0
}

.org-src-container, .example {
    transition: box-shadow .4s;
.org-src-container, .example, figure {
    position: relative !important;
    overflow: inherit;
}


.org-src-container::after,.example::after {
.org-src-container::after,.example::after, figure::after {
    --offset: 0.4rem;

    content: '';


@@ 177,7 190,11 @@ table tr:nth-child(2n) {
.example::after {
    --offset: 0.2rem;
}
.org-src-container:hover::after,.example:hover::after {
figure::after {
    --offset: 0.1rem;
    border-radius: 1rem;
}
.org-src-container:hover::after,.example:hover::after, figure:hover::after {
    opacity: 0.8;
    animation: trans-rotate 10s both 0s linear infinite;
}

D sitemap.org => sitemap.org +0 -20
@@ 1,20 0,0 @@
#+TITLE: Sitemap

- [[file:README.org][Jakob Meier]]
- [[file:config.org][config]]
- [[file:index.org][index]]
- [[file:license.org][license]]
- feeds
  - [[file:feeds/index.org][Blog Posts]]
  - announcements
    - [[file:feeds/announcements/index.org][Announcements]]
  - coding
    - [[file:feeds/coding/functional-programming.org][Let's check out functional programming]]
  - handhelds
    - [[file:feeds/handhelds/index.org][Smartphone related posts]]
    - [[file:feeds/handhelds/using-linux-mobile-for-1-month.org][Using Linux on my phone for 1 month]]
    - [[file:feeds/handhelds/on-vacation-with-my-pinephone.org][Using the pinephone as a laptop replacement]]
    - [[file:feeds/handhelds/formatting-an-ipod.org][iPod USB Key and going back to normal]]
  - projects
    - [[file:feeds/projects/polarplayer-studio.org][PolarPlayer-Studio]]
    - [[file:feeds/projects/index.org][Projects]]
\ No newline at end of file

R config.org => src/config.org +0 -0
R feeds/handhelds/formatting-an-ipod.org => src/feeds/handhelds/formatting-an-ipod.org +0 -0
R feeds/handhelds/index.org => src/feeds/handhelds/index.org +6 -10
@@ 26,15 26,11 @@ with a lot of elements strip away from it,
and a lot of binary blobs.
Additionally most phones are stuck on ~4.*~ kernels

#+BEGIN_SRC bash :exports results
for dir in $(find . -name '*.org' -maxdepth 1 -mindepth 1); do
    stext="$(echo $dir | sed -e "s/\.\///g" | sed -e "s/\.org$//g")"
    echo [[file:phones/$dir][$stext]]
done
#+END_SRC
#+begin_src elisp :exports results :results value list
(load-file "../../../el/get-posts.el")
(get-posts "../../feeds/handhelds")
#+end_src

#+RESULTS:
| [[file:phones/./index.org][index]]                          |
| [[file:phones/./using-linux-mobile-for-1-month.org][using-linux-mobile-for-1-month]] |
| [[file:phones/./on-vacation-with-my-pinephone.org][on-vacation-with-my-pinephone]]  |
| [[file:phones/./formatting-an-ipod.org][formatting-an-ipod]]             |
- [[file:./../../feeds/handhelds/formatting-an-ipod.org][iPod USB Key and going back to normal]]
- [[file:./../../feeds/handhelds/using-linux-mobile-for-1-month.org][Using Linux on my phone for 1 month]]

R feeds/handhelds/using-linux-mobile-for-1-month.org => src/feeds/handhelds/using-linux-mobile-for-1-month.org +0 -0
A src/feeds/index.org => src/feeds/index.org +23 -0
@@ 0,0 1,23 @@
#+TITLE: Blog Posts
#+DESCRIPTION: Index page with all of my blog entries listed by category
#+SETUPFILE: ../config.org
#+OPTIONS: toc:nil num:nil
#+DATE:<2022-06-17 Fri 13:30>

Whoooaa you have found my blog-post index.

See below for a list of all of the posts I posted.
You can click on the folder name
if you want to see a list of all posts in that category.
Or click on the given file name if you want to read the post.

#+begin_src elisp :exports results :results value list
(load-file "../../el/get-feeds.el")
(get-feeds "./")
#+end_src

#+RESULTS:
- [[file:.//coding/index.org][Coding]]
- [[file:.//handhelds/index.org][Smartphone related posts]]
- [[file:.//projects/index.org][Projects]]
- [[file:.//queertopia/index.org][Welcome to Queertopia]]

R feeds/projects/index.org => src/feeds/projects/index.org +6 -9
@@ 20,14 20,11 @@ Additionally I also have a [[https://github.com/comcloudway/][github]] account,
but I only ever mirror repos over there
and occasionally use it to fork other repos.

#+BEGIN_SRC bash :exports results
for dir in $(find . -name '*.org' -maxdepth 1 -mindepth 1); do
    stext="$(echo $dir | sed -e "s/\.\///g" | sed -e "s/\.org$//g")"
    echo [[file:projects/$dir][$stext]]
done
#+END_SRC
#+begin_src elisp :exports results :results value list
(load-file "../../../el/get-posts.el")
(get-posts "../../feeds/projects")
#+end_src

#+RESULTS:
| [[file:projects/./index.org][index]]              |
| [[file:projects/./polarplayer-studio.org][polarplayer-studio]] |
| [[file:projects/./oomph.org][oomph]]              |
- [[file:./../../feeds/projects/oomph.org][Oomph]]
- [[file:./../../feeds/projects/polarplayer-studio.org][PolarPlayer-Studio]]

R feeds/projects/polarplayer-studio.org => src/feeds/projects/polarplayer-studio.org +0 -0
R README.org => src/index.org +15 -37
@@ 29,48 29,26 @@ If you noticed that some of them are outdated,
please contact me (the alpine website has a button).

* Categories
#+BEGIN_EXPORT html
<i class="horizontal-table"></i>
#+END_EXPORT
#+begin_src bash :exports results
for dir in $(find ./feeds/ -type d -maxdepth 1 -mindepth 1); do
    title="$(echo $dir | sed -e "s/\.\/feeds\///g")"
    echo [[file:feeds/$dir/index.org][$title]]
done
#+end_src

#+RESULTS:
| [[file:feeds/./feeds/projects/index.org][projects]]   |
| [[file:feeds/./feeds/handhelds/index.org][handhelds]]  |
| [[file:feeds/./feeds/coding/index.org][coding]]     |
| [[file:feeds/./feeds/queertopia/index.org][queertopia]] |
To reduce the distance you have to scroll,
I removed the /All posts/ list.

If you are looking for something specific,
just check the appropriate category.
And if you are just here to spend some time reading,
pick a category that seems interestign to you


* All posts
#+begin_src bash :exports results
for dir in $(find ./feeds/ -type d -maxdepth 1 -mindepth 1); do
    for file in $(find $dir -name '*.org' -type f -maxdepth 1 -mindepth 1); do
        category="$(echo $dir | sed -e "s/\.\/feeds\///g")"
        post="$(echo $file | sed -e "s/\.\/feeds\/$category\///g")"
        stylized="$(echo $post |  sed -e "s/.org$//g")"
        echo [[file:$dir/index.org][$category]]/[[file:$file][$stylized]]
    done
done
#+begin_src elisp :exports results :results value list
(load-file "../el/get-feeds.el")
(get-feeds "./feeds")
#+end_src

#+RESULTS:
| [[file:./feeds/projects/index.org][projects]]/[[file:./feeds/projects/index.org][index]]                           |
| [[file:./feeds/projects/index.org][projects]]/[[file:./feeds/projects/polarplayer-studio.org][polarplayer-studio]]              |
| [[file:./feeds/projects/index.org][projects]]/[[file:./feeds/projects/oomph.org][oomph]]                           |
| [[file:./feeds/handhelds/index.org][handhelds]]/[[file:./feeds/handhelds/index.org][index]]                          |
| [[file:./feeds/handhelds/index.org][handhelds]]/[[file:./feeds/handhelds/using-linux-mobile-for-1-month.org][using-linux-mobile-for-1-month]] |
| [[file:./feeds/handhelds/index.org][handhelds]]/[[file:./feeds/handhelds/on-vacation-with-my-pinephone.org][on-vacation-with-my-pinephone]]  |
| [[file:./feeds/handhelds/index.org][handhelds]]/[[file:./feeds/handhelds/formatting-an-ipod.org][formatting-an-ipod]]             |
| [[file:./feeds/coding/index.org][coding]]/[[file:./feeds/coding/functional-programming.org][functional-programming]]            |
| [[file:./feeds/coding/index.org][coding]]/[[file:./feeds/coding/index.org][index]]                             |
| [[file:./feeds/queertopia/index.org][queertopia]]/[[file:./feeds/queertopia/index.org][index]]                         |
| [[file:./feeds/queertopia/index.org][queertopia]]/[[file:./feeds/queertopia/gay-walk.org][gay-walk]]                      |
| [[file:./feeds/queertopia/index.org][queertopia]]/[[file:./feeds/queertopia/gender-triangle.org][gender-triangle]]               |
| [[file:./feeds/queertopia/index.org][queertopia]]/[[file:./feeds/queertopia/gender-inclusivity-in-germany.org][gender-inclusivity-in-germany]] |
- [[file:../src/feeds/coding/index.org][Coding]]
- [[file:../src/feeds/handhelds/index.org][Smartphone related posts]]
- [[file:../src/feeds/projects/index.org][Projects]]
- [[file:../src/feeds/queertopia/index.org][Welcome to Queertopia]]

* Social
I occasionally post over on [[https://fosstodon.org/@comcloudway][Mastodon]],

A src/license.org => src/license.org +6 -0
@@ 0,0 1,6 @@
All written content on this website
and on the sub-sites is available under CC BY-SA,
unless stated otherwise.

For source-code you have to consult the project license,
if specified.