revamp the website
authorAmin Bandali <bandali@gnu.org>
Sat, 13 Mar 2021 02:53:29 +0000 (21:53 -0500)
committerAmin Bandali <bandali@gnu.org>
Sat, 13 Mar 2021 02:53:29 +0000 (21:53 -0500)
it is now served from shemshak.org/~bandali

29 files changed:
404.m4 [new file with mode: 0644]
GNUmakefile
arch-macbook-air.m4 [deleted file]
computing.m4
contact.m4
cv.m4
footer.html
fsf-internship-beyond.m4
fsf-internship-intro.m4
header.html
index.m4
license.m4
meta_defs.m4
meta_feed_atom.m4
meta_feed_rss.m4
projects.m4 [deleted file]
publications.m4
static/.htaccess
static/.htaccess-www [deleted file]
static/404.html [deleted file]
static/bandali-bib-partial.html
static/bandali-bib-sed.txt
static/feed-12x12.png [new file with mode: 0644]
static/gpl-3.0.html
static/icon-12px.png [deleted file]
static/icon-16px.png [deleted file]
static/publications-partial.html
static/publications-sed.txt
static/style.css

diff --git a/404.m4 b/404.m4
new file mode 100644 (file)
index 0000000..b44603e
--- /dev/null
+++ b/404.m4
@@ -0,0 +1,9 @@
+dnl -*- html -*-
+define(__title, `404 Not Found')dnl
+define(__slug, `404')dnl
+include(header.html)dnl
+
+<h1>__slug</h1>
+<p>Sorry, that page does not exist.</p>
+
+include(footer.html)dnl
index bbf2bb5..b8523fd 100644 (file)
@@ -1,3 +1,7 @@
+SITE_DOMAIN := 'https://shemshak.org'
+SITE_PREFIX := '/~bandali'
+SITE_URL := '$(SITE_DOMAIN)$(SITE_PREFIX)'
+
 SRC := $(filter-out $(wildcard meta_*), $(wildcard *.m4))
 OUTPUTS := $(patsubst %.m4,out/%.html, $(SRC))
 STATIC := $(patsubst static/%,out/%, $(filter-out static/GNUmakefile, $(wildcard static/* static/.*)))
 SRC := $(filter-out $(wildcard meta_*), $(wildcard *.m4))
 OUTPUTS := $(patsubst %.m4,out/%.html, $(SRC))
 STATIC := $(patsubst static/%,out/%, $(filter-out static/GNUmakefile, $(wildcard static/* static/.*)))
@@ -6,10 +10,10 @@ all: $(OUTPUTS) out/notes.atom out/notes.rss out/style.css out/GNUmakefile $(STA
 
 out/%.html: %.m4 header.html footer.html
        @mkdir -p $(@D)
 
 out/%.html: %.m4 header.html footer.html
        @mkdir -p $(@D)
-       m4 $< > $@
+       m4 -D__d=$(SITE_DOMAIN) -D__p=$(SITE_PREFIX) $< > $@
 out/notes.%: meta_feed_%.m4 $(SRC) header.html footer.html
 out/notes.%: meta_feed_%.m4 $(SRC) header.html footer.html
-       m4 $< > $@
-       sed -i 's|href="/\([^/]\)|href="https://bndl.org/\1|' $@
+       m4 -D__d=$(SITE_DOMAIN) -D__p=$(SITE_PREFIX) $< > $@
+       sed -i 's|href="/\([^/]\)|href="$(SITE_DOMAIN)/\1|' $@
 out/GNUmakefile: GNUmakefile ; ln -s $(PWD)/$< $@
 $(STATIC): ; ln -s $(PWD)/static/$(@F) $@
 
 out/GNUmakefile: GNUmakefile ; ln -s $(PWD)/$< $@
 $(STATIC): ; ln -s $(PWD)/static/$(@F) $@
 
@@ -25,8 +29,7 @@ clean:
        rm -rf out/
 
 deploy:
        rm -rf out/
 
 deploy:
-       rsync -avzLP out/ abandali@bndl.org:www/bndl.org/
-#      ssh abandali@bndl.org mv www/bndl.org/.htaccess-www www/.htaccess
+       rsync -avzLP out/ bandali@shemshak.org:~/public_html/
 
 watch:
        while true; do \
 
 watch:
        while true; do \
diff --git a/arch-macbook-air.m4 b/arch-macbook-air.m4
deleted file mode 100644 (file)
index d1991c8..0000000
+++ /dev/null
@@ -1,277 +0,0 @@
-dnl -*- html -*-
-define(__title, `Arch GNU/Linux on MacBook Air 2013')dnl
-define(__pub, 2016-11-01T12:00:00Z)dnl
-define(__upd, 2020-03-27T12:00:00Z)dnl
-define(__id, 1)dnl
-include(header.html)dnl
-
-<p>This post summarizes how I install and dual-boot Arch GNU/Linux
-with Full-Disk Encryption alongside macOS.  It is not meant to be a
-replacement for the
-<a href="https://wiki.archlinux.org/index.php/installation%5Fguide">Installation
-Guide</a> or the former
-<a href="https://csdietz.github.io/arch-beginner-guide/">Beginner's
-Guide</a>.  Rather, it mostly serves as a small summary with a few
-useful notes about the gotchas.</p>
-
-<p>So, make sure you understand what you type into your terminal.  If
-you don't, checking out the Arch wiki should probably be your first
-step.</p>
-
-<p><em>Note:</em> you will need internet access throughout the
-installation and the MacBook Air's WiFi doesn't work out of the box on
-Arch.  I recommend using an Ethernet-USB adapter or your phone's USB
-Tethering feature (if it does support it).</p>
-
-<h2>Shrinking the macOS partition</h2>
-<p>The first step I take is resizing the HFS+ macOS partition to make
-room for the new GNU/Linux installation.  There are plenty of
-tutorials on how to do this using macOS's Disk Utility, so do that and
-then come back!</p>
-
-<h2>Creating a bootable Arch Installer USB</h2>
-<p>There are different ways of creating a bootable Arch USB, all
-documented on the
-<a href="https://wiki.archlinux.org/index.php/USB%5Fflash%5Finstallation%5Fmedia">USB
-flash installation media</a> page on the Arch wiki, but the simplest
-one is using <code>dd</code> if you already have access to another
-UNIX system.</p>
-
-<p><strong class="warn">Warning:</strong> make sure you backup the
-data on your flash drive, as <code>dd</code> will irrevocably destroy
-all data on it.</p>
-
-<p>Use <code>lsblk</code> to find the name (block device) of your USB drive, then
-run <code>dd</code> (as root) as shown below:</p>
-
-<pre>
-dd bs=4M if=/path/to/archlinux.iso of=/dev/sdx status=progress && sync
-</pre>
-
-<p>Replace <code>/path/to/archlinux.iso</code> with the path to the
-Arch image you have downloaded, and <code>/dev/sdx</code> with your
-drive.</p>
-
-<h2>Booting up from the USB</h2>
-<p>After creating the install USB, reboot your laptop and hold the alt
-key and boot from the USB.</p>
-
-<p>When booting is complete and you're presented with the prompt, it's
-a good time to make sure you're connected to the internet (see the
-<em>note</em> at the top of this post).</p>
-
-<p>Use <code>ping</code> to verify that you have established a
-connection:</p>
-
-<pre>
-ping archlinux.org
-</pre>
-
-<h2>Updating the system clock</h2>
-<p>Once you're connected to the internet, make sure the system clock
-is accurate:</p>
-
-<pre>
-timedatectl set-ntp true  # start and enable systemd-timesyncd
-</pre>
-
-<p>You can check the service status using <code>timedatectl
-status</code>.</p>
-
-<h2>Partitioning</h2>
-<p>I won't dive into partitioning and instead, I will refer you to the
-<a href="https://wiki.archlinux.org/index.php/Partitioning">Partitioning</a>
-page of Arch wiki.  Of the available partitioning tools, I personally
-prefer <code>cfdisk</code>.</p>
-
-<h2>Setting up LVM &amp; LUKS</h2>
-<p>I use an
-<a href="https://wiki.archlinux.org/index.php/Dm-crypt/Encrypting%5Fan%5Fentire%5Fsystem#LVM%5Fon%5FLUKS">LVM
-on LUKS</a> setup, where I set up LVM on top of the encrypted
-partition.</p>
-
-<p>First, let's set up the underlying encrypted partition:</p>
-
-<pre>
-cryptsetup -v --cipher aes-xts-plain64 --key-size 512 --hash sha512 \
-           --iter-time 5000 --use-urandom -y luksFormat /dev/sdaX
-</pre>
-
-<p>where <code>/dev/sdaX</code> is the partition you created in the
-last step (e.g. <code>/dev/sda4</code>).  For more information about
-the <code>cryptsetup</code> options, see the
-<a href="https://wiki.archlinux.org/index.php/Dm-crypt/Device%5Fencryption#Encryption%5Foptions%5Ffor%5FLUKS%5Fmode">LUKS
-encryption options</a>.</p>
-
-<p>Then we open the container:</p>
-
-<pre>
-cryptsetup open --type luks /dev/sdaX lvm
-</pre>
-
-<p>Now it's time to use lvm and prepare the logical volume(s):</p>
-
-<pre>
-pvcreate /dev/mapper/lvm vgcreate vg /dev/mapper/lvm
-lvcreate --extents +100%FREE -n root vg
-</pre>
-
-<p>This will create a physical volume on the mapping we just opened,
-create a volume group named <code>vg</code> on the physical volume,
-and create a logical volume named <code>root</code> that spans the
-entire volume group.  More complex setups are possible thanks to the
-great flexibility of lvm.</p>
-
-<p>We now format the logical volume with <code>ext4</code>:</p>
-
-<pre>
-mkfs.ext4 /dev/mapper/vg-root
-</pre>
-
-<h2>Installing the base system</h2>
-<p>Let's mount the logical volume, make a directory for the mount
-point of the boot partition, and mount the boot partition
-(<code>/dev/sda1</code>):</p>
-
-<pre>
-mount /dev/mapper/vg-root /mnt
-mkdir /mnt/boot
-mount /dev/sda1 /mnt/boot
-</pre>
-
-<p>Finally, let's install the base system (and optionally
-<code>base-devel</code>):</p>
-
-<pre>
-pacstrap /mnt base base-devel
-</pre>
-
-<h2>Configuring the system</h2>
-<p>Let's generate the fstab:</p>
-
-<pre>
-genfstab -U /mnt >> /mnt/etc/fstab
-</pre>
-
-<p>Use your favorite terminal-based editor, edit the fstab file and
-add the <code>discard</code> option for the root partition to enable
-TRIM on the SSD.</p>
-
-<p>Now we change root into our newly installed system and will
-configure it.  Adjust these according to your own setup.</p>
-
-<pre>
-arch-chroot /mnt /bin/bash
-passwd # set the root password
-echo myhostname > /etc/hostname # set the hostname
-ln -s /usr/share/zoneinfo/Canada/Eastern /etc/localtime # time zone
-hwclock --systohc --utc # write system clock to hardware clock (UTC)
-useradd -m -G wheel -s /bin/bash myuser # create myuser
-passwd myuser # set the password for myuser
-echo "myuser ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers.d/myuser
-# uncomment en_US.UTF-8 UTF-8 and other needed locales in /etc/locale.gen
-locale-gen
-echo LANG=en_US.UTF-8 > /etc/locale.conf
-export LANG=en_US.UTF-8
-</pre>
-
-<p>Then adjust the initramfs hooks in
-<code>/etc/mkinitcpio.conf</code> and enable the
-<code>encrypt</code> and <code>lvm2</code> hooks, and make sure
-<code>keyboard</code> is available before <code>encrypt</code> so you
-can actually type in the LUKS password when booting.  Your
-<code>HOOKS</code> line should look similar to this:</p>
-
-<pre>
-HOOKS=(base udev autodetect keyboard keymap consolefont modconf block encrypt lvm2 filesystems fsck)
-</pre>
-
-<p>After adjusting the hooks, build the initramfs:</p>
-
-<pre>
-mkinitcpio -p linux
-</pre>
-
-<p>Create the <code>/boot/loader/loader.conf</code> with the following
-content (adjust the timeout to your liking):</p>
-
-<pre>
-default arch timeout 3
-</pre>
-
-<p>Then create the entry for Arch:</p>
-
-<pre>
-mkdir -p /boot/loader/entries
-touch /boot/loader/entries/arch.conf
-</pre>
-
-<p>Now edit <code>/boot/loader/entries/arch.conf</code> to specify the
-Arch entry:</p>
-
-<pre>
-title Arch GNU/Linux
-linux /vmlinuz-linux
-initrd /intel-ucode.img
-initrd /initramfs-linux.img
-options cryptdevice=/dev/sdaX:vg:allow-discards root=/dev/mapper/vg-root rw
-</pre>
-
-<p>Again, <code>/dev/sdaX</code> is the partition you created in the
-partitioning step earlier as the underlying encrypted partition.</p>
-
-<p>Finally, install the bootloader, exit the chroot, umount and
-reboot!</p>
-
-<pre>
-bootctl install
-exit
-umount -R /mnt
-reboot
-</pre>
-
-<h2>Post-installation recommendations</h2>
-<p>Congratulations!  You now have a minimal Arch installation.</p>
-
-<p>At this point, I usually install my favorite AUR helper,
-<a href="https://aur.archlinux.org/packages/pacaur/">pacaur</a>, then
-I install the
-<a href="https://aur.archlinux.org/packages/mba6x%5Fbl-dkms/">mba6x_bl-dkms</a>
-backlight driver to fix the post suspend/resume issue where there's no
-brightness after waking up from suspend, and the only available
-brightness would be 100%.</p>
-
-<pre>
-pacaur -S linux-headers dkms # linux-headers is required for dkms
-pacaur -S broadcom-wl-dkms
-pacaur -S mba6x_bl-dkms
-</pre>
-
-<p>Then, I'd like to install</p>
-<ul>
-<li>input, graphics, and sound drivers,</li>
-<li>a desktop environment (I prefer Xfce or LXQt),</li>
-<li>a display manager for login screen (lightdm or sddm), and</li>
-<li>a network manager (NetworkManager or ConnMan).</li>
-</ul>
-
-<p>Check out the
-<a href="https://wiki.archlinux.org/index.php/General%5Frecommendations">General
-recommendations</a> for more details.</p>
-
-<h2>References</h2>
-<p>Here are some resources I've come across each with lots of useful
-bits and pieces, about installing Arch on a MacBook:</p>
-
-<ul>
-<li><a href="https://github.com/pandeiro/arch-on-air">pandeiro/arch-on-air</a></li>
-<li><a href="https://loicpefferkorn.net/2015/01/arch-linux-on-macbook-pro-retina-2014-with-dm-crypt-lvm-and-suspend-to-disk/">Arch Linux on MacBook Pro Retina 2014 with DM-Crypt, LVM and suspend to disk</a></li>
-<li><a href="https://www.frankshin.com/2014/installing-archlinux-on-macbook-air-2013/">Installing Archlinux on Macbook Air 2013</a></li>
-<li><a href="http://panks.me/posts/2013/06/arch-linux-installation-with-os-x-on-macbook-air-dual-boot/">Arch Linux Installation with OS X on Macbook Air (Dual Boot)</a></li>
-<li><a href="https://alexeyzabelin.com/arch-on-mac">Installing Arch Linux on a MacBook Air 2013</a></li>
-<li><a href="https://medium.com/phils-thought-bubble-of-recent-stuff/arch-linux-running-on-my-macbook-2ea525ebefe3">Arch Linux running on my MacBook</a></li>
-<li><a href="http://codylittlewood.com/arch-linux-on-macbook-pro-installation/">Dual boot Arch Linux on MacBook Pro Installation</a></li>
-</ul>
-
-define(__copy, `2016, 2019, 2020')dnl
-include(footer.html)dnl
index 9b65cdd..8428af6 100644 (file)
@@ -1,12 +1,12 @@
 dnl -*- html -*-
 define(__title, `How I do my Computing')dnl
 define(__pub, 2019-09-14T12:00:00Z)dnl
 dnl -*- html -*-
 define(__title, `How I do my Computing')dnl
 define(__pub, 2019-09-14T12:00:00Z)dnl
-define(__upd, 2020-07-17T12:00:00Z)dnl
-define(__id, 2)dnl
+define(__upd, 2021-02-28T12:00:00Z)dnl
+define(__id, 1)dnl
 include(header.html)dnl
 
 include(header.html)dnl
 
-<p class="box">Inspired by the computing page of
-<a href="https://stallman.org/stallman-computing.html">rms</a>.</p>
+<p class="box">inspired by the computing page of
+<a href="https://stallman.org/stallman-computing.html">rms</a></p>
 
 <h2>Computers</h2>
 <p>My <a href="https://libreboot.org">librebooted</a> ThinkPad X200
 
 <h2>Computers</h2>
 <p>My <a href="https://libreboot.org">librebooted</a> ThinkPad X200
@@ -17,41 +17,35 @@ servers through our school's
 use for some more computationally intensive tasks every now and again,
 and also for hosting this very website.</p>
 
 use for some more computationally intensive tasks every now and again,
 and also for hosting this very website.</p>
 
-<h2>GNU/Linux distributions</h2>
-<p>I have used a wide variety of GNU/Linux distros over the years; but
-as of late, I find myself using
-<a href="https://trisquel.info">Trisquel</a>,
-<a href="https://guix.gnu.org">Guix System</a>, and
-<a href="https://www.debian.org">Debian</a> (with
-no <code>contrib</code> or <code>non-free</code>) almost exclusively.
-For the kernel, I mostly use
+<h2>GNU/Linux distribution</h2>
+<p>I used a wide variety of distros over the years; but I have since
+found <a href="https://trisquel.info">Trisquel</a> to be my favourite
+and it's put my "distro-hopping" days behind me.  Sometimes I pair it
+up with <a href="https://guix.gnu.org">GNU Guix</a>.  For the kernel,
+I usually use
 <a href="https://www.fsfla.org/ikiwiki/selibre/linux-libre/">GNU
 <a href="https://www.fsfla.org/ikiwiki/selibre/linux-libre/">GNU
-Linux-libre</a>.  Guix System comes with GNU Linux-libre out of the
-box, and on Debian-based distros I tend to install it from
-jxself's <a href="https://jxself.org/linux-libre/">APT
-repository</a>.</p>
+Linux-libre</a> from jxself's
+<a href="https://jxself.org/linux-libre/">APT repository</a>.</p>
 
 <h2>Actual computing</h2>
 <p>I spend most of my time in
 <a href="https://www.gnu.org/software/emacs/">GNU Emacs</a>.</p>
 <p>TODO: elaborate</p>
 
 
 <h2>Actual computing</h2>
 <p>I spend most of my time in
 <a href="https://www.gnu.org/software/emacs/">GNU Emacs</a>.</p>
 <p>TODO: elaborate</p>
 
-<h2 id="colophon">Maintaining this site</h2>
+<h2 id="colophon">Maintaining this site __anc(`colophon')</h2>
 <p>I took a great amount of inspiration
 <p>I took a great amount of inspiration
-from <a href="https://technomancy.us/colophon">Phil Hagelberg</a>'s
+from <a href="https://technomancy.us/colophon">technomancy</a>'s
 setup.  The pages of this site are written in plain HTML using GNU
 setup.  The pages of this site are written in plain HTML using GNU
-Emacs, with <a href="https://gnu.org/s/m4">GNU M4</a> acting as a
-full-featured template engine.
-A <a href="/GNUmakefile"><code>GNUmakefile</code></a> provides
+Emacs, with GNU M4 acting as a full-featured template engine.
+A <a href="__p/GNUmakefile"><code>GNUmakefile</code></a> provides
 convenient <code>make</code> rules to build and publish the site.  The
 convenient <code>make</code> rules to build and publish the site.  The
-bibliography of my <a href="/publications">publications</a> is
-generated from <a href="/bandali.bib"><code>bandali.bib</code></a>
+bibliography of my <a href="__p/publications.html">publications</a> is
+generated from <a href="__p/bandali.bib"><code>bandali.bib</code></a>
 using <a href="https://www.lri.fr/~filliatr/bibtex2html/">bibtex2html</a>,
 using <a href="https://www.lri.fr/~filliatr/bibtex2html/">bibtex2html</a>,
-and further processed and put together using
-<a href="https://gnu.org/s/sed">GNU sed</a> and
+and further processed and put together using GNU sed and
 another <code>GNUmakefile</code>.  The git repository containing all
 another <code>GNUmakefile</code>.  The git repository containing all
-the sources used to build this site is available
-<a href="https://git.emacsconf.org/bandali/bndl.org">here</a>.</p>
+the sources used to build this site are available
+<a href="https://git.shemshak.org/~bandali/site">here</a>.</p>
 
 define(__copy, `2019, 2020')dnl
 include(footer.html)dnl
 
 define(__copy, `2019, 2020')dnl
 include(footer.html)dnl
index ff68e4b..6f7986a 100644 (file)
@@ -1,67 +1,20 @@
 dnl -*- html -*-
 dnl -*- html -*-
-define(__title, `Contact Information')dnl
+define(__title, `contact information')dnl
 define(__slug, `contact')dnl
 include(header.html)dnl
 
 <article>
 define(__slug, `contact')dnl
 include(header.html)dnl
 
 <article>
-<h1>Contact information</h1>
-<p>Email is by far my preferred method of communication.  I may be
-contacted at any of the following addresses (choose the one most
-closely related):</p>
-
-<ul>
-<li>bandali@gnu.org</li>
-<li>bandali@uwaterloo.ca</li>
-dnl<li>bandali@csclub.uwaterloo.ca</li>
-</ul>
-
-<p>If you want to send me GPG-encrypted mail, you can use my
-<a href="bandali-pubkey.txt">public key</a> with the
-fingerprint&nbsp;<code>BE62 7373 8E61 6D6D 1B3A  08E8 A21A 0202 4881 6103</code>.</p>
-
-<table>
-<tbody>
-<tr>
-<td>IRC</td>
-<td>bandali on <a href="//freenode.net">freenode</a> and
-<a href="//www.oftc.net">oftc</a></td>
-</tr>
-
-<tr>
-<td>XMPP</td>
-<td><a href="xmpp:bandali@member.fsf.org">bandali@member.fsf.org</a></td>
-</tr>
-
-<tr>
-<td>Matrix</td>
-<td><a href="//matrix.to/#/@bandali:matrix.org">@bandali:matrix.org</a></td>
-</tr>
-
-<tr>
-<td>Fediverse</td>
-<td><a href="//pleroma.site/bandali">@bandali@pleroma.site</a></td>
-</tr>
-</tbody>
-</table>
-
-<h2>Elsewhere</h2>
-<p>You may also find me at a few other places online.  Stricken
-through accounts are those I don't use anymore, unless absolutely
-necessary.</p>
-
-<ul>
-<li><a href="//savannah.gnu.org/users/bandali">bandali</a> on GNU Savannah</li>
-<li><a href="//libreplanet.org/wiki/User:Bandali">bandali</a> on LibrePlanet</li>
-<li><a href="//emacsconf.org/bandali">bandali</a> on EmacsConf</li>
-<li><a href="//git.sr.ht/~bandali">bandali</a> on Sourcehut</li>
-<li><a href="//gitlab.com/bandali">bandali</a> on GitLab</li>
-<li><a href="//lobste.rs/u/bandali">bandali</a> on Lobsters</li>
-<li><a href="//hackage.haskell.org/user/bandali">bandali</a> on Hackage</li>
-<li><a href="//news.ycombinator.com/user?id=bandali">bandali</a> on HN</li>
-<li><a href="//www.reddit.com/u/bandali">bandali</a> on reddit</li>
-<li><del><a href="//github.com/notbandali">notbandali</a> on GitHub</del></li>
-<li><del><a href="//twitter.com/notbandali">notbandali</a> on Twitter</del></li>
-</ul>
-</article>
+<h1>__title</h1>
+<p>Email is by far my preferred method of communication, and you can
+write to me at bandali at gnu dot org.  For GPG-encrypted mail, you
+can use my <a href="bandali-pubkey.txt">public key</a> with the
+fingerprint
+<code>BE62 7373 8E61 6D6D 1B3A  08E8 A21A 0202 4881 6103</code>.</p>
+
+<p>Besides email, I can also usually be reached via IRC, particularly
+the <a href="https://freenode.net">freenode</a> and
+<a href="https://www.oftc.net">oftc</a> networks, where I idle
+as <code>bandali</code>.  For other means of communication, please
+send me an email and we can figure something out if needed.</p>
 
 include(footer.html)dnl
 
 include(footer.html)dnl
diff --git a/cv.m4 b/cv.m4
index 9d4d254..5a0e11b 100644 (file)
--- a/cv.m4
+++ b/cv.m4
@@ -9,11 +9,11 @@ include(header.html)dnl
 <tbody>
 <tr>
 <td>Site</td>
 <tbody>
 <tr>
 <td>Site</td>
-<td><a href="//bndl.org">bndl.org</a></td>
+<td><a href="//shemshak.org/~bandali">shemshak.org/~bandali</a></td>
 </tr>
 <tr>
 <td>Email</td>
 </tr>
 <tr>
 <td>Email</td>
-<td>bandali@uwaterloo.ca</td>
+<td>bandali@gnu</td>
 </tr>
 <tr>
 <td>Phone</td>
 </tr>
 <tr>
 <td>Phone</td>
index a7e7e7d..286a5c2 100644 (file)
@@ -2,14 +2,14 @@ ifdef(`__feed_atom', `</content></entry>',
 `ifdef(`__feed_rss', `</description></item>',
 `ifdef(`__pub',
 `<p class="muted inbox">Got a question or comment?  You can find my
 `ifdef(`__feed_rss', `</description></item>',
 `ifdef(`__pub',
 `<p class="muted inbox">Got a question or comment?  You can find my
-email address on my <a href="/contact">contact</a> page.  __smly</p>
+email address on my <a href="__p/contact.html">contact</a> page.  __smly</p>
 </article>
 ')dnl
 </main>
 ifdef(`__copy',
 `<footer>
 <p>Copyright &copy; __copy Amin Bandali.
 </article>
 ')dnl
 </main>
 ifdef(`__copy',
 `<footer>
 <p>Copyright &copy; __copy Amin Bandali.
-See the ifelse(__slug,`license',`above for license conditions',`<a href="/license">license conditions</a>').
+See the ifelse(__slug,`license',`above for license conditions',`<a href="__p/license.html">license conditions</a>').
 Please copy and share.</p>
 </footer>')
 </body>
 Please copy and share.</p>
 </footer>')
 </body>
index f878697..48eb683 100644 (file)
@@ -1,7 +1,7 @@
 dnl -*- html -*-
 define(__title, `My internship with the FSF tech team and beyond')dnl
 define(__pub, 2020-12-18T15:31:00-04:00)dnl
 dnl -*- html -*-
 define(__title, `My internship with the FSF tech team and beyond')dnl
 define(__pub, 2020-12-18T15:31:00-04:00)dnl
-define(__id, 4)dnl
+define(__id, 3)dnl
 include(header.html)dnl
 
 <p class="box">Originally published on the Free Software Foundation's
 include(header.html)dnl
 
 <p class="box">Originally published on the Free Software Foundation's
index 11d9339..79af930 100644 (file)
@@ -1,7 +1,7 @@
 dnl -*- html -*-
 define(__title, `Internship with the FSF tech team')dnl
 define(__pub, 2020-05-29T14:38:00-04:00)dnl
 dnl -*- html -*-
 define(__title, `Internship with the FSF tech team')dnl
 define(__pub, 2020-05-29T14:38:00-04:00)dnl
-define(__id, 3)dnl
+define(__id, 2)dnl
 include(header.html)dnl
 
 <p class="box">Originally published on the Free Software Foundation's
 include(header.html)dnl
 
 <p class="box">Originally published on the Free Software Foundation's
index 38326bc..fbc63f8 100644 (file)
@@ -1,19 +1,19 @@
 include(meta_defs.m4)dnl
 ifdef(`__slug',,`define(__slug, _get(`notes', __id))')dnl
 ifdef(`__feed_atom',
 include(meta_defs.m4)dnl
 ifdef(`__slug',,`define(__slug, _get(`notes', __id))')dnl
 ifdef(`__feed_atom',
-`<entry xml:base="https://bndl.org">
+`<entry xml:base="__d">
 <author><name>bandali</name></author>
 <author><name>bandali</name></author>
-<id>tag:bndl.org,2020:notes.atom:__slug</id>
+<id>tag:shemshak.org,2020:__p/notes.atom:__slug</id>
 <published>__pub</published>
 ifdef(`__upd',`<updated>__upd</updated>',`<updated>__pub</updated>')dnl
 <published>__pub</published>
 ifdef(`__upd',`<updated>__upd</updated>',`<updated>__pub</updated>')dnl
-<link href="https://bndl.org/__slug" rel="alternate" type="text/html"/>
+<link href="__d`'__p/__slug.html" rel="alternate" type="text/html"/>
 <title>__title</title>
 <content type="html">',
 `ifdef(`__feed_rss',
 `<item>
 <title>__title</title>
 <title>__title</title>
 <content type="html">',
 `ifdef(`__feed_rss',
 `<item>
 <title>__title</title>
-<link>https://bndl.org/__slug</link>
-<guid isPermaLink="false">tag:bndl.org,2020:notes.rss:__slug</guid>
+<link>__d`'__p/__slug.html</link>
+<guid isPermaLink="false">tag:shemshak.org,2020:__p/notes.rss:__slug</guid>
 <pubDate>syscmd(date "-uRd __pub" | tr -d \\n)</pubDate>
 ifdef(`__upd',`<atom:updated>__upd</atom:updated>')dnl
 <description>',
 <pubDate>syscmd(date "-uRd __pub" | tr -d \\n)</pubDate>
 ifdef(`__upd',`<atom:updated>__upd</atom:updated>')dnl
 <description>',
@@ -24,29 +24,28 @@ ifdef(`__upd',`<atom:updated>__upd</atom:updated>')dnl
 <meta name="author" content="bandali"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>__title`'ifdef(`__nts',,` &mdash; bandali')</title>
 <meta name="author" content="bandali"/>
 <meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>__title`'ifdef(`__nts',,` &mdash; bandali')</title>
-<link rel="alternate" href="/notes.atom" type="application/atom+xml"/>
-<link rel="alternate" href="/notes.rss" type="application/rss+xml"/>
-<link rel="icon" href="/gnu.ico"/>
-<link rel="stylesheet" href="/style.css"/>
-<link rel="index" href="/"/>
+<link rel="alternate" href="__p/notes.atom" type="application/atom+xml"/>
+<link rel="alternate" href="__p/notes.rss" type="application/rss+xml"/>
+<link rel="icon" href="__p/gnu.ico"/>
+<link rel="stylesheet" href="__p/style.css"/>
 ifdef(`__pub',
 define(__previd, `_get(`notes', decr(__id))')dnl
 define(__nextid, `_get(`notes', incr(__id))')dnl
 ifdef(`__pub',
 define(__previd, `_get(`notes', decr(__id))')dnl
 define(__nextid, `_get(`notes', incr(__id))')dnl
-`ifelse(__previd,,,`<link rel="prev" href="/__previd">')'dnl
-`ifelse(__nextid,,,`<link rel="next" href="/__nextid">')')dnl
+`ifelse(__previd,,,`<link rel="prev" href="__p/__previd.html">')'dnl
+`ifelse(__nextid,,,`<link rel="next" href="__p/__nextid.html">')')dnl
 </head>
 <body>
 <header>
 </head>
 <body>
 <header>
-ifelse(__slug,`home',`<h1>__title</h1>',
-`<strong><a href="/">Bandali</a>&apos;s Personal Site</strong>')
+ifelse(__slug,`home',`<h1>__site__title</h1>',
+`<strong><a href="__p/">__site__title</a></strong>')
 </header>
 <nav>
 <ul>
 </header>
 <nav>
 <ul>
-<li><a href="/#notes">Notes</a></li>
-<li><a href="/projects">Projects</a></li>
-<li><a href="/publications">Publications</a></li>
-<li><a href="/cv" title="curriculum vitae">CV</a></li>
-<li><a href="/contact">Contact</a></li>
+<li><a href="__p/#notes">notes</a></li>
+<li><a href="__p/publications.html">publications</a></li>
+<li><a href="__p/cv.html" title="curriculum vitae">cv</a></li>
+<li><a href="__p/contact.html">contact</a></li>
+dnl<li><a href="__p/fa/" title="Persian">فارسی</a></li>
 </ul>
 </nav>
 <main>
 </ul>
 </nav>
 <main>
index 1f8246e..c84dd75 100644 (file)
--- a/index.m4
+++ b/index.m4
@@ -1,88 +1,57 @@
 dnl -*- html -*-
 dnl -*- html -*-
-define(__title, `Bandali''`s Personal Site')dnl
+define(__title, __site__title)dnl
 define(__slug, `home')dnl
 define(__nts)dnl
 include(header.html)dnl
 
 define(__slug, `home')dnl
 define(__nts)dnl
 include(header.html)dnl
 
-<section id="intro" class="justify">
-<p>Hi, I'm bandali.  I am
-a <a href="https://www.gnu.org/philosophy/free-sw.html">free
-software</a> activist and a computing scientist.  I graduated from the
-University of Waterloo with a <a href="/mmath">Master of
-Mathematics</a> degree in Computer Science, where I did research in
-formal logic, model checking, and verification supervised
-by <a href="https://cs.uwaterloo.ca/~nday/">Prof. Nancy Day</a>, with
-the main goal of improving <strong>software and systems
-reliability</strong> through application of
-<a href="https://en.wikipedia.org/wiki/Formal_methods">formal
-methods</a>.  My research areas of interest include programming
-languages, proof assistants, and their type systems.</p>
-
-<p>I am currently employed
-by <a href="https://savoirfairelinux.com/en">Savoir-faire Linux</a> as
-a Free Software Consultant, where I get to hack on various parts
-of <a href="https://jami.net">Jami</a>, work with the maintainers of
-Jami packages in various GNU/Linux distributions like Debian and
-Trisquel to help keep up-to-date the version of Jami available in the
-official repositories of those distributions, and generally serve as a
-community liaison between the Jami core development team and the wider
-free software community around Jami.  To be sure, the views or
-opinions expressed on this site are solely my own, and do not
-necessarily represent those of my employer or anyone else.</p>
+<section id="intro">
+<p>I am a <a href="https://www.gnu.org/philosophy/free-sw.html">free
+software</a> activist and <a href="mmath.html">computing
+scientist</a>.  I'm a GNU maintainer
+of <a href="https://jami.net">Jami</a>
+and <a href="https://www.gnu.org/software/gnuzilla/">GNUzilla and
+IceCat</a>, and I wear a few other hats around GNU, like helping run
+the Savannah forge for GNU and non-GNU projects as a Savannah hacker.
+My current <code>$dayjob</code> is working on Jami as a Free Software
+Consultant, which includes hacking on various parts of Jami and its
+packaging for various GNU/Linux distributions.</p>
 
 <p>On the side, I enjoy
 
 <p>On the side, I enjoy
-<a href="https://stallman.org/articles/on-hacking.html">hacking</a> on
-<a href="https://www.gnu.org/software/emacs/manual/elisp.html">Emacs
-Lisp</a>.  I'm a GNU
-<a href="https://www.gnu.org/people/people.html#bandali">maintainer</a>,
-<a href="https://www.gnu.org/people/webmeisters.html#bandali">webmaster</a>,
-and <a href="https://savannah.gnu.org/maintenance/SavannahHacker/">Savannah
-hacker</a>; and an <a href="https://www.fsf.org/associate/">associate
-member</a> of the Free Software Foundation (FSF).  I'm currently the
-chief organizer of the <a href="https://emacsconf.org">EmacsConf</a>
-conference, and the co-host of the
-<a href="https://emacsel.com">Emacs.el</a> podcast with
-<a href="https://www.pygopar.com">Daniel Gopar</a>.  I am also a member of
-the Systems Committee of the
-<a href="https://csclub.uwaterloo.ca">Computer Science Club</a> of the
-University of Waterloo.</p>
+<a href="https://stallman.org/articles/on-hacking.html">hacking on</a>
+GNU Emacs and Emacs Lisp.  I'm the current maintainer of
+<a href="https://www.gnu.org/software/emacs/erc.html">ERC</a> the
+powerful and modular IRC client built into GNU Emacs, an organizer of
+the <a href="https://emacsconf.org">EmacsConf</a> conference, and
+co-host of the <a href="https://emacsel.com">Emacs.el</a> podcast with
+<a href="https://www.pygopar.com">Gopar</a>.</p>
 </section>
 
 </section>
 
-<section id="notes" class="justify">
-<h2>Notes</h2>
-<p>Here are notes about a variety of topics and issues I care about.
-They're also available via
-<a href="notes.atom">
-<img class="feed-icon" src="icon-12px.png"
-     alt="subscribe to Atom feed">Atom</a>
-and
-<a href="notes.rss">
-<img class="feed-icon" src="icon-12px.png"
-     alt="subscribe to RSS feed">RSS</a> feeds.</p>
+<section id="notes">
+<h2>notes __anc(`notes')</h2>
+<p>Here are notes about various topics or issues I care about.
+You can also read them via
+<a class="feed-icon" href="notes.atom">Atom</a> or
+<a class="feed-icon" href="notes.rss">RSS</a>.</p>
 
 <table class="post-list">
 <tbody>
 <tr>
 
 <table class="post-list">
 <tbody>
 <tr>
-<td><a href="fsf-internship-beyond">My internship with the FSF tech team and beyond</a>
-(concluding)</td>
+<td><a href="fsf-internship-beyond.html">My internship with the FSF
+tech team and beyond</a> (concluding)</td>
 <td><small>December 18, 2020</small></td>
 </tr>
 <tr>
 <td><small>December 18, 2020</small></td>
 </tr>
 <tr>
-<td><a href="fsf-internship-intro">Internship with the FSF tech team</a>
-(intro)</td>
+<td><a href="fsf-internship-intro.html">Internship with the FSF tech
+team</a> (intro)</td>
 <td><small>May 29, 2020</small></td>
 </tr>
 <tr>
 <td><small>May 29, 2020</small></td>
 </tr>
 <tr>
-<td><a href="computing">How I do my Computing</a></td>
+<td><a href="computing.html">How I do my Computing</a></td>
 <td><small>September 14, 2019</small></td>
 </tr>
 <td><small>September 14, 2019</small></td>
 </tr>
-<tr>
-<td><a href="arch-macbook-air">Arch GNU/Linux on MacBook Air 2013</a></td>
-<td><small>November 1, 2016</small></td>
-</tr>
 </tbody>
 </table>
 </section>
 
 </tbody>
 </table>
 </section>
 
-define(__copy, `2016&ndash;2020')dnl
+define(__copy, `2016&ndash;2021')dnl
 include(footer.html)dnl
 include(footer.html)dnl
index 8809dd6..6510179 100644 (file)
@@ -1,10 +1,10 @@
 dnl -*- html -*-
 dnl -*- html -*-
-define(__title, `Licensing Information')dnl
+define(__title, `licensing information')dnl
 define(__slug, `license')dnl
 include(header.html)dnl
 
 <article>
 define(__slug, `license')dnl
 include(header.html)dnl
 
 <article>
-<h1>License information for bndl.org</h1>
+<h1>__title</h1>
 <p>I strongly believe in
 <a href="//questioncopyright.org/what_is_free_culture">free culture</a>
 and that all creative works everywhere should be
 <p>I strongly believe in
 <a href="//questioncopyright.org/what_is_free_culture">free culture</a>
 and that all creative works everywhere should be
@@ -16,6 +16,12 @@ Foundation, either version 3 of the License, or (at your option) any
 later version.  A copy of the license is included at
 <a href="gpl-3.0.html">gpl-3.0.html</a>.</p>
 
 later version.  A copy of the license is included at
 <a href="gpl-3.0.html">gpl-3.0.html</a>.</p>
 
+<p>This website is statically generated using a series of GNU tools
+(<a href="computing.html#colophon">read more</a>), with the sources at
+<a href="//git.shemshak.org/~bandali/site">git.shemshak.org/~bandali/site</a>.
+The striped look was direct inspiration from iank's website,
+<a href="//iankelling.org">iankelling.org</a>.</p>
+
 <p>Some resources on free software and licenses:</p>
 <ul>
 <li><a href="//www.gnu.org/philosophy/free-sw.html">What is free software?</a></li>
 <p>Some resources on free software and licenses:</p>
 <ul>
 <li><a href="//www.gnu.org/philosophy/free-sw.html">What is free software?</a></li>
index ce6f68d..8245f49 100644 (file)
@@ -1,10 +1,11 @@
-define(`__latest', 4)dnl
+define(`__latest', 3)dnl
 define(`_put', `define(`$1[$2]', `$3')')dnl
 define(`_get', `defn(`$1[$2]')')dnl
 define(`_put', `define(`$1[$2]', `$3')')dnl
 define(`_get', `defn(`$1[$2]')')dnl
-_put(`notes', 1, `arch-macbook-air')dnl
-_put(`notes', 2, `computing')dnl
-_put(`notes', 3, `fsf-internship-intro')dnl
-_put(`notes', 4, `fsf-internship-beyond')dnl
+_put(`notes', 1, `computing')dnl
+_put(`notes', 2, `fsf-internship-intro')dnl
+_put(`notes', 3, `fsf-internship-beyond')dnl
 dnl
 dnl
-define(__latex, `<span class="t-logo">L<sup>a</sup>T<sub>e</sub>X</span>')dnl
-define(__smly, `<span class="smly">:-)</span>')dnl
+define(`__site__title', `bandali&apos;s personal site')dnl
+define(`__latex', `<span class="t-logo">L<sup>a</sup>T<sub>e</sub>X</span>')dnl
+define(`__smly', `<span class="smly">:-)</span>')dnl
+define(`__anc', `<a class="permalink" href="#$1" title="permalink">§</a>')dnl
index 9824118..04515a7 100644 (file)
@@ -3,14 +3,14 @@ include(meta_defs.m4)dnl
 <feed xml:lang="en-US" xmlns="http://www.w3.org/2005/Atom">
 <title>Amin Bandali's Personal Site</title>
 <subtitle>Notes and blog posts by Amin Bandali</subtitle>
 <feed xml:lang="en-US" xmlns="http://www.w3.org/2005/Atom">
 <title>Amin Bandali's Personal Site</title>
 <subtitle>Notes and blog posts by Amin Bandali</subtitle>
-<id>tag:bndl.org,2020:notes.atom</id>
-<link href="https://bndl.org/notes.atom" rel="self" type="application/atom+xml"/>
-<link href="https://bndl.org/notes.rss" rel="alternate" type="application/rss+xml" />
-<link href="https://bndl.org" rel="alternate" type="text/html"/>
+<id>tag:shemshak.org,2020:__p/notes.atom</id>
+<link href="__d`'__p/notes.atom" rel="self" type="application/atom+xml"/>
+<link href="__d`'__p/notes.rss" rel="alternate" type="application/rss+xml" />
+<link href="__d`'__p/" rel="alternate" type="text/html"/>
 <updated>syscmd(date -Iseconds -u | tr -d \\n)</updated>
 define(__feed_atom)dnl
 define(`fordown',`ifelse($#,0,``$0'',`ifelse(eval($2>=$3),1,
   `pushdef(`$1',$2)$4`'popdef(`$1')$0(`$1',decr($2),$3,`$4')')')')
 fordown(`__i',__latest,eval(__latest-10),`
 <updated>syscmd(date -Iseconds -u | tr -d \\n)</updated>
 define(__feed_atom)dnl
 define(`fordown',`ifelse($#,0,``$0'',`ifelse(eval($2>=$3),1,
   `pushdef(`$1',$2)$4`'popdef(`$1')$0(`$1',decr($2),$3,`$4')')')')
 fordown(`__i',__latest,eval(__latest-10),`
-  syscmd(sed "s/\&/\&amp;/g;s/>/\&gt;/g;s/</\&lt;/g" _get(`notes', __i).m4 | m4 -D__feed_atom)')
+  syscmd(sed "s/\&/\&amp;/g;s/>/\&gt;/g;s/</\&lt;/g" _get(`notes', __i).m4 | m4 -D__feed_atom -D__d=__d -D__p=__p)')
 </feed>
 </feed>
index a9feeb3..362a0e5 100644 (file)
@@ -4,17 +4,17 @@ include(meta_defs.m4)dnl
 <channel>
 <title>Amin Bandali's Personal Site</title>
 <description>Notes and blog posts by Amin Bandali</description>
 <channel>
 <title>Amin Bandali's Personal Site</title>
 <description>Notes and blog posts by Amin Bandali</description>
-<link>https://bndl.org</link>
+<link>__d`'__p/</link>
 <lastBuildDate>syscmd(date -uR | tr -d \\n)</lastBuildDate>
 <pubDate>syscmd(date -uR | tr -d \\n)</pubDate>
 <ttl>1800</ttl>
 <lastBuildDate>syscmd(date -uR | tr -d \\n)</lastBuildDate>
 <pubDate>syscmd(date -uR | tr -d \\n)</pubDate>
 <ttl>1800</ttl>
-<atom:link href="https://bndl.org/notes.rss" rel="self" type="application/rss+xml" />
-<atom:link href="https://bndl.org/notes.atom" rel="alternate" type="application/atom+xml" />
-<atom:link href="https://bndl.org" rel="alternate" type="text/html" />
+<atom:link href="__d`'__p/notes.rss" rel="self" type="application/rss+xml" />
+<atom:link href="__d`'__p/notes.atom" rel="alternate" type="application/atom+xml" />
+<atom:link href="__d`'__p/" rel="alternate" type="text/html" />
 define(__feed_rss)dnl
 define(`fordown',`ifelse($#,0,``$0'',`ifelse(eval($2>=$3),1,
   `pushdef(`$1',$2)$4`'popdef(`$1')$0(`$1',decr($2),$3,`$4')')')')
 fordown(`__i',__latest,eval(__latest-10),`
 define(__feed_rss)dnl
 define(`fordown',`ifelse($#,0,``$0'',`ifelse(eval($2>=$3),1,
   `pushdef(`$1',$2)$4`'popdef(`$1')$0(`$1',decr($2),$3,`$4')')')')
 fordown(`__i',__latest,eval(__latest-10),`
-  syscmd(sed "s/\&/\&amp;/g;s/>/\&gt;/g;s/</\&lt;/g" _get(`notes', __i).m4 | m4 -D__feed_rss)')
+  syscmd(sed "s/\&/\&amp;/g;s/>/\&gt;/g;s/</\&lt;/g" _get(`notes', __i).m4 | m4 -D__feed_rss -D__d=__d -D__p=__p)')
 </channel>
 </rss>
 </channel>
 </rss>
diff --git a/projects.m4 b/projects.m4
deleted file mode 100644 (file)
index b34ae41..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-dnl -*- html -*-
-define(__title, `Projects')dnl
-define(__slug, `projects')dnl
-include(header.html)dnl
-
-<article id="projects">
-<h1>Projects</h1>
-
-<dl>
-<dt><a href="//git.emacsconf.org/bandali/refinery-theme">refinery-theme</a></dt>
-<dd>A refined, minimalist, layered colour theme for GNU Emacs</dd>
-
-<dt><a href="//git.emacsconf.org/bandali/george-mode">george-mode</a></dt>
-<dd>Emacs major mode for editing George files</dd>
-
-<dt><a href="//git.emacsconf.org/bandali/alloy-catalyst">alloy-catalyst</a></dt>
-<dd>Framework for performance analysis of Alloy models</dd>
-
-<dt><a href="//github.com/unitb/unitb-web">unitb-web</a></dt>
-<dd>Web interface for Unit-B</dd>
-
-<dt><a href="//github.com/unitb/tex2png-hs">tex2png-hs</a></dt>
-<dd>Library and CLI for converting TeX and LaTeX to PNG images</dd>
-</dl>
-</article>
-
-define(__copy, `2020')dnl
-include(footer.html)dnl
index 4302e03..f8f4fab 100644 (file)
@@ -1,10 +1,10 @@
 dnl -*- html -*-
 dnl -*- html -*-
-define(__title, `Publications')dnl
+define(__title, `publications')dnl
 define(__slug, `publications')dnl
 include(header.html)dnl
 
 <article id="publications">
 define(__slug, `publications')dnl
 include(header.html)dnl
 
 <article id="publications">
-<h1>Publications</h1>
+<h1>__title</h1>
 
 include(static/publications-partial.html)
 
 
 include(static/publications-partial.html)
 
index c03a35b..0558c36 100644 (file)
@@ -1,3 +1,11 @@
+ErrorDocument 404 /~bandali/404.html
+
+AddCharset utf-8 .bib .org
+AddType text/plain .bib .org
+
+AddType application/atom+xml .atom
+AddType application/rss+xml .rss
+
 <IfModule mod_rewrite.c>
 # since we set Options -MultiViews in ../.htaccess, we now have to
 # explicitly tell apache that files with no extension are actually
 <IfModule mod_rewrite.c>
 # since we set Options -MultiViews in ../.htaccess, we now have to
 # explicitly tell apache that files with no extension are actually
@@ -5,5 +13,5 @@
 RewriteCond %{REQUEST_FILENAME}.html -f
 RewriteRule !.*\.html$ %{REQUEST_FILENAME}.html [L]
 
 RewriteCond %{REQUEST_FILENAME}.html -f
 RewriteRule !.*\.html$ %{REQUEST_FILENAME}.html [L]
 
-RewriteRule ^fsf-internship/intro$ /fsf-internship-intro [R]
+RewriteRule ^fsf-internship/intro$ /~bandali/fsf-internship-intro.html [R]
 </IfModule>
 </IfModule>
diff --git a/static/.htaccess-www b/static/.htaccess-www
deleted file mode 100644 (file)
index 35d52d1..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-<IfModule mod_rewrite.c>
-# don't add .html in the rewrite below
-Options -MultiViews
-
-RewriteEngine On
-RewriteBase /
-# if on csclub.uwaterloo.ca, redirect to bndl.org
-RewriteCond %{HTTP_HOST} ^csclub\.uwaterloo\.ca$
-RewriteRule ^(.*)$ https://bndl.org/$1 [R]
-</IfModule>
-
-AddType application/atom+xml .atom
-AddType application/rss+xml .rss
-
-AddType text/plain .bib .org
-AddCharset utf-8 .bib .org
diff --git a/static/404.html b/static/404.html
deleted file mode 100644 (file)
index 883067e..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-<!doctype html>
-<html lang="en">
-<head>
-<meta charset="utf-8"/>
-<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>404 Not Found</title>
-<link rel="icon" href="/gnu.ico"/>
-<link rel="stylesheet" href="/style.css"/>
-</head>
-<body>
-<nav><a href="/">bndl.org</a></nav>
-<main>
-<h1>404</h1>
-<p>Sorry, that page does not exist.</p>
-</main>
-</body>
-</html>
index 7723b56..6b0914c 100644 (file)
@@ -1,5 +1,5 @@
 <h1><a href="bandali.bib">bandali.bib</a></h1><a name="bandali2020"></a><pre>
 <h1><a href="bandali.bib">bandali.bib</a></h1><a name="bandali2020"></a><pre>
-@mastersthesis{<a href="publications#bandali2020">bandali2020</a>,
+@mastersthesis{<a href="publications.html#bandali2020">bandali2020</a>,
   type = {{MMath} thesis},
   author = {Amin Bandali},
   title = {{A Comprehensive Study of Declarative Modelling Languages}},
   type = {{MMath} thesis},
   author = {Amin Bandali},
   title = {{A Comprehensive Study of Declarative Modelling Languages}},
@@ -15,7 +15,7 @@
 </pre>
 
 <a name="DBLP:conf/re/AbbassiBDS18"></a><pre>
 </pre>
 
 <a name="DBLP:conf/re/AbbassiBDS18"></a><pre>
-@inproceedings{<a href="publications#DBLP:conf/re/AbbassiBDS18">DBLP:conf/re/AbbassiBDS18</a>,
+@inproceedings{<a href="publications.html#DBLP:conf/re/AbbassiBDS18">DBLP:conf/re/AbbassiBDS18</a>,
   author = {Ali Abbassi and
                Amin Bandali and
                Nancy A. Day and
   author = {Ali Abbassi and
                Amin Bandali and
                Nancy A. Day and
@@ -38,7 +38,7 @@
 </pre>
 
 <a name="DBLP:conf/re/2018modre"></a><pre>
 </pre>
 
 <a name="DBLP:conf/re/2018modre"></a><pre>
-@proceedings{<a href="publications#DBLP:conf/re/2018modre">DBLP:conf/re/2018modre</a>,
+@proceedings{<a href="publications.html#DBLP:conf/re/2018modre">DBLP:conf/re/2018modre</a>,
   editor = {Ana Moreira and
                Gunter Mussbacher and
                Jo{\~{a}}o Ara{\'{u}}jo and
   editor = {Ana Moreira and
                Gunter Mussbacher and
                Jo{\~{a}}o Ara{\'{u}}jo and
@@ -57,7 +57,7 @@
 </pre>
 
 <a name="bandali-magic-lassonde-2017"></a><pre>
 </pre>
 
 <a name="bandali-magic-lassonde-2017"></a><pre>
-@misc{<a href="publications#bandali-magic-lassonde-2017">bandali-magic-lassonde-2017</a>,
+@misc{<a href="publications.html#bandali-magic-lassonde-2017">bandali-magic-lassonde-2017</a>,
   author = {Amin Bandali and
                   Simon Hudon and
                   Jonathan S. Ostroff},
   author = {Amin Bandali and
                   Simon Hudon and
                   Jonathan S. Ostroff},
@@ -72,7 +72,7 @@
 </pre>
 
 <a name="bandali-magic-cucsc-2017"></a><pre>
 </pre>
 
 <a name="bandali-magic-cucsc-2017"></a><pre>
-@misc{<a href="publications#bandali-magic-cucsc-2017">bandali-magic-cucsc-2017</a>,
+@misc{<a href="publications.html#bandali-magic-cucsc-2017">bandali-magic-cucsc-2017</a>,
   author = {Amin Bandali and
                   Simon Hudon and
                   Jonathan S. Ostroff},
   author = {Amin Bandali and
                   Simon Hudon and
                   Jonathan S. Ostroff},
index 35b2f79..64ca551 100644 (file)
@@ -1,5 +1,2 @@
-# drop .html
-s/publications.html#/publications#/
-
 # linkify bandali.bib at the top
 s|bandali.bib|<a href="bandali.bib">&</a>|
 # linkify bandali.bib at the top
 s|bandali.bib|<a href="bandali.bib">&</a>|
diff --git a/static/feed-12x12.png b/static/feed-12x12.png
new file mode 100644 (file)
index 0000000..3fe8b0a
Binary files /dev/null and b/static/feed-12x12.png differ
index 3817471..1295136 100644 (file)
@@ -4,11 +4,10 @@
     <meta charset="utf-8"/>
     <meta name=viewport content="width=device-width, initial-scale=1"/>
     <title>GNU General Public License v3.0</title>
     <meta charset="utf-8"/>
     <meta name=viewport content="width=device-width, initial-scale=1"/>
     <title>GNU General Public License v3.0</title>
-    <link rel="stylesheet" href="/style.css"/>
+    <link rel="stylesheet" href="style.css"/>
   </head>
   <body>
     <main style="font-size: 0.92em;
   </head>
   <body>
     <main style="font-size: 0.92em;
-                 max-width: 55em;
                  line-height: 1.5;">
       <h3 style="text-align: center;">GNU GENERAL PUBLIC LICENSE</h3>
       <p style="text-align: center;">Version 3, 29 June 2007</p>
                  line-height: 1.5;">
       <h3 style="text-align: center;">GNU GENERAL PUBLIC LICENSE</h3>
       <p style="text-align: center;">Version 3, 29 June 2007</p>
diff --git a/static/icon-12px.png b/static/icon-12px.png
deleted file mode 100644 (file)
index 3fe8b0a..0000000
Binary files a/static/icon-12px.png and /dev/null differ
diff --git a/static/icon-16px.png b/static/icon-16px.png
deleted file mode 100644 (file)
index 1151f76..0000000
Binary files a/static/icon-16px.png and /dev/null differ
index 8d5cf21..bcf502a 100644 (file)
@@ -5,13 +5,13 @@
 [<a name="bandali2020">4</a>]
 </td>
 <td class="bibtexitem">
 [<a name="bandali2020">4</a>]
 </td>
 <td class="bibtexitem">
-<a href="https://bndl.org">Amin Bandali</a>.
+<a href="https://shemshak.org/~bandali/">Amin Bandali</a>.
  A Comprehensive Study of Declarative Modelling Languages.
  MMath thesis, University of Waterloo, David R. Cheriton School of
   Computer Science, July 2020.
  <a href="http://hdl.handle.net/10012/16059">http://hdl.handle.net/10012/16059</a> and
   <a href="https://bndl.org/mmath">https://bndl.org/mmath</a>.
  A Comprehensive Study of Declarative Modelling Languages.
  MMath thesis, University of Waterloo, David R. Cheriton School of
   Computer Science, July 2020.
  <a href="http://hdl.handle.net/10012/16059">http://hdl.handle.net/10012/16059</a> and
   <a href="https://bndl.org/mmath">https://bndl.org/mmath</a>.
-[&nbsp;<a href="bandali-bib#bandali2020">bib</a>&nbsp;| 
+[&nbsp;<a href="bandali-bib.html#bandali2020">bib</a>&nbsp;| 
 <a href="http://hdl.handle.net/10012/16059">http</a>&nbsp;| 
 <a href="https://p.bndl.org/bandali-mmath-thesis.pdf">.pdf</a>&nbsp;]
 
 <a href="http://hdl.handle.net/10012/16059">http</a>&nbsp;| 
 <a href="https://p.bndl.org/bandali-mmath-thesis.pdf">.pdf</a>&nbsp;]
 
 [<a name="DBLP:conf/re/AbbassiBDS18">3</a>]
 </td>
 <td class="bibtexitem">
 [<a name="DBLP:conf/re/AbbassiBDS18">3</a>]
 </td>
 <td class="bibtexitem">
-Ali Abbassi, <a href="https://bndl.org">Amin Bandali</a>, <a href="https://cs.uwaterloo.ca/~nday/">Nancy&nbsp;A. Day</a>, and Jos&eacute; Serna.
+Ali Abbassi, <a href="https://shemshak.org/~bandali/">Amin Bandali</a>, <a href="https://cs.uwaterloo.ca/~nday/">Nancy&nbsp;A. Day</a>, and Jos&eacute; Serna.
  A comparison of the declarative modelling languages B, Dash, and
   TLA<sup>+</sup>.
  In Ana Moreira, Gunter Mussbacher, Jo&atilde;o Ara&uacute;jo, and Pablo
   S&aacute;nchez, editors, <em>8th IEEE International Model-Driven
   Requirements Engineering Workshop, MoDRE@RE 2018, Banff, AB, Canada, August
   20, 2018</em>, pages 11&#x2013;20. IEEE Computer Society, 2018.
  A comparison of the declarative modelling languages B, Dash, and
   TLA<sup>+</sup>.
  In Ana Moreira, Gunter Mussbacher, Jo&atilde;o Ara&uacute;jo, and Pablo
   S&aacute;nchez, editors, <em>8th IEEE International Model-Driven
   Requirements Engineering Workshop, MoDRE@RE 2018, Banff, AB, Canada, August
   20, 2018</em>, pages 11&#x2013;20. IEEE Computer Society, 2018.
-[&nbsp;<a href="bandali-bib#DBLP:conf/re/AbbassiBDS18">bib</a>&nbsp;| 
+[&nbsp;<a href="bandali-bib.html#DBLP:conf/re/AbbassiBDS18">bib</a>&nbsp;| 
 <a href="https://doi.org/10.1109/MoDRE.2018.00008">http</a>&nbsp;| 
 <a href="https://p.bndl.org/modre2018-declarative.pdf">.pdf</a>&nbsp;]
 
 <a href="https://doi.org/10.1109/MoDRE.2018.00008">http</a>&nbsp;| 
 <a href="https://p.bndl.org/modre2018-declarative.pdf">.pdf</a>&nbsp;]
 
@@ -44,11 +44,11 @@ Ali Abbassi, <a href="https://bndl.org">Amin Bandali</a>, <a href="https://cs.uw
 [<a name="bandali-magic-lassonde-2017">2</a>]
 </td>
 <td class="bibtexitem">
 [<a name="bandali-magic-lassonde-2017">2</a>]
 </td>
 <td class="bibtexitem">
-<a href="https://bndl.org">Amin Bandali</a>, <a href="https://github.com/cipher1024">Simon Hudon</a>, and <a href="https://www.eecs.yorku.ca/~jonathan/">Jonathan&nbsp;S. Ostroff</a>.
+<a href="https://shemshak.org/~bandali/">Amin Bandali</a>, <a href="https://github.com/cipher1024">Simon Hudon</a>, and <a href="https://www.eecs.yorku.ca/~jonathan/">Jonathan&nbsp;S. Ostroff</a>.
  The magic of specifications and type systems.
  Presented at the 2017 Lassonde Undergraduate Summer Student Research
   Conference, York University, Toronto, Canada, August 2017.
  The magic of specifications and type systems.
  Presented at the 2017 Lassonde Undergraduate Summer Student Research
   Conference, York University, Toronto, Canada, August 2017.
-[&nbsp;<a href="bandali-bib#bandali-magic-lassonde-2017">bib</a>&nbsp;| 
+[&nbsp;<a href="bandali-bib.html#bandali-magic-lassonde-2017">bib</a>&nbsp;| 
 <a href="https://p.bndl.org/eecs4080-poster.pdf">poster</a>&nbsp;]
 
 </td>
 <a href="https://p.bndl.org/eecs4080-poster.pdf">poster</a>&nbsp;]
 
 </td>
@@ -60,13 +60,13 @@ Ali Abbassi, <a href="https://bndl.org">Amin Bandali</a>, <a href="https://cs.uw
 [<a name="bandali-magic-cucsc-2017">1</a>]
 </td>
 <td class="bibtexitem">
 [<a name="bandali-magic-cucsc-2017">1</a>]
 </td>
 <td class="bibtexitem">
-<a href="https://bndl.org">Amin Bandali</a>, <a href="https://github.com/cipher1024">Simon Hudon</a>, and <a href="https://www.eecs.yorku.ca/~jonathan/">Jonathan&nbsp;S. Ostroff</a>.
+<a href="https://shemshak.org/~bandali/">Amin Bandali</a>, <a href="https://github.com/cipher1024">Simon Hudon</a>, and <a href="https://www.eecs.yorku.ca/~jonathan/">Jonathan&nbsp;S. Ostroff</a>.
  The magic of specifications and type systems.
  Presented at the Canadian Undergraduate Computer Science Conference
   2017, University of Toronto, Canada, June 2017.
  The magic of specifications and type systems.
  Presented at the Canadian Undergraduate Computer Science Conference
   2017, University of Toronto, Canada, June 2017.
-[&nbsp;<a href="bandali-bib#bandali-magic-cucsc-2017">bib</a>&nbsp;| 
+[&nbsp;<a href="bandali-bib.html#bandali-magic-cucsc-2017">bib</a>&nbsp;| 
 <a href="https://p.bndl.org/cucsc-2017-slides.pdf">slides</a>&nbsp;]
 
 </td>
 </tr>
 <a href="https://p.bndl.org/cucsc-2017-slides.pdf">slides</a>&nbsp;]
 
 </td>
 </tr>
-</table>
\ No newline at end of file
+</table>
index 2d423bd..5e1b655 100644 (file)
@@ -3,14 +3,14 @@
 /./,$!d
 
 # take the rename into consideration
 /./,$!d
 
 # take the rename into consideration
-s/publications_bib.html#/bandali-bib#/
+s/publications_bib/bandali-bib/
 
 # delete <font size="-1"> and </font>
 # s|<font size="-1">||
 # s|</font>||
 
 # linkify author names
 
 # delete <font size="-1"> and </font>
 # s|<font size="-1">||
 # s|</font>||
 
 # linkify author names
-s|Amin Bandali|<a href="https://bndl.org">&</a>|
+s|Amin Bandali|<a href="https://shemshak.org/~bandali/">&</a>|
 s|Nancy&nbsp;A. Day|<a href="https://cs.uwaterloo.ca/~nday/">&</a>|
 s|Simon Hudon|<a href="https://github.com/cipher1024">&</a>|
 s|Jonathan&nbsp;S. Ostroff|<a href="https://www.eecs.yorku.ca/~jonathan/">&</a>|
 s|Nancy&nbsp;A. Day|<a href="https://cs.uwaterloo.ca/~nday/">&</a>|
 s|Simon Hudon|<a href="https://github.com/cipher1024">&</a>|
 s|Jonathan&nbsp;S. Ostroff|<a href="https://www.eecs.yorku.ca/~jonathan/">&</a>|
index af65a18..d54ddfe 100644 (file)
@@ -1,25 +1,26 @@
 body {
 body {
-  /* background: #fffffa; */
-  font-family: sans-serif;
-  line-height: 1.6;
-  padding: 2em;
+  background: #d9d8d1;
+  font: 18px/1.6 sans-serif;
+  margin: 0;
 }
 
 }
 
-header, nav, main, footer {
-  margin: auto;
-  max-width: 38rem;
+body > header, body > nav,  main, body > footer {
+  padding: 0 2em;
 }
 
 body > header {
 }
 
 body > header {
-  margin-bottom: 0.25em;
+  padding-top: 1em;
 }
 body > header h1 {
   margin: 0;
 }
 body > header h1 {
   margin: 0;
-  font-size: 100%;
+  font-size: 1em;
 }
 header a {
   color: inherit;
 }
 }
 header a {
   color: inherit;
 }
+nav {
+  margin-bottom: 1em;
+}
 nav ul {
   margin: 0;
   padding: 0;
 nav ul {
   margin: 0;
   padding: 0;
@@ -34,22 +35,24 @@ nav li + li {
 nav a {
   color: #333;
 }
 nav a {
   color: #333;
 }
-nav, main {
-  margin-bottom: 1.5em;
+main {
+  background: #ebeae4;
+  padding-top: 1em;
+  padding-bottom: 1em;
 }
 }
-header >:not(h1) {
+article header >:not(h1) {
   font-size: 0.875em;
 }
 header > h1 + p {
   margin-top: -1em;
 }
 footer {
   font-size: 0.875em;
 }
 header > h1 + p {
   margin-top: -1em;
 }
 footer {
-  border-top: 1px solid #bbb;
   font-size: 0.84em;
   font-size: 0.84em;
-  padding-top: 1em;
+  margin-left: 0.4em;
 }
 }
-footer p {
-  margin: 0;
+
+main > * {
+  max-width: 43rem;
 }
 
 h1 {
 }
 
 h1 {
@@ -73,9 +76,16 @@ a:hover, a:focus {
 a:active {
   outline-offset: 2px;
 }
 a:active {
   outline-offset: 2px;
 }
-
-h4 {
-  margin: 0.75em auto;
+a.permalink {
+  color: #ddd;
+  font: 1.2em/1 "TeX Gyre Termes", serif;
+  text-decoration: none;
+  transition: color 150ms linear;
+  user-select: none;
+}
+a.permalink:hover, :hover > a.permalink, :target a.permalink {
+  color: #999;
+  transition: color 150ms linear;
 }
 
 article h3 {
 }
 
 article h3 {
@@ -160,9 +170,6 @@ pre {
   min-width: 100%;
   padding: 1em;
 }
   min-width: 100%;
   padding: 1em;
 }
-pre:first-of-type {
-  margin-top: 0;
-}
 pre > code {
   padding: 0;
   background: initial;
 pre > code {
   padding: 0;
   background: initial;
@@ -171,10 +178,13 @@ code {
   text-transform: none;
   padding: .2em .3em;
 }
   text-transform: none;
   padding: .2em .3em;
 }
+pre, code {
+  font-size: smaller;
+}
 
 /* box effect */
 .box, details, pre, code {
 
 /* box effect */
 .box, details, pre, code {
-  background-color: #f8f8f8;
+  background-color: #f4f4f4;
   border: 1px solid #e6e6e6;
   border-radius: 4px;
   box-sizing: border-box;
   border: 1px solid #e6e6e6;
   border-radius: 4px;
   box-sizing: border-box;
@@ -184,7 +194,7 @@ details pre {
 }
 p.box {
   font-size: 0.95em;
 }
 p.box {
   font-size: 0.95em;
-  padding: 0.3em 0.6em;
+  padding: 0.6em 0.9em;
 }
 
 table td {
 }
 
 table td {
@@ -200,14 +210,11 @@ table td:first-child {
 table td:last-child {
   padding-right: 0
 }
 table td:last-child {
   padding-right: 0
 }
-#notes {
-  margin-top: 0.9em;
-}
 .post-list {
   width: 100%;
 }
 .post-list tr:hover {
 .post-list {
   width: 100%;
 }
 .post-list tr:hover {
-  background: #fafafa;
+  background: #efefe8;
 }
 .post-list td {
   padding: 0.25em 0;
 }
 .post-list td {
   padding: 0.25em 0;
@@ -231,12 +238,10 @@ li, dd {
 }
 
 .feed-icon {
 }
 
 .feed-icon {
-  margin-right: 3px
-}
-.feed-icon-h2 {
-  margin-left: 5px;
-  position: relative;
-  top: 2px
+  background-image: url(feed-12x12.png);
+  background-position: center right;
+  background-repeat: no-repeat;
+  padding-right: 15px;
 }
 .smly {
   display: inline-block;
 }
 .smly {
   display: inline-block;