--- /dev/null
+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
+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/.*)))
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
- 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) $@
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 \
+++ /dev/null
-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 & 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
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
-<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
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
-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 id="colophon">Maintaining this site</h2>
+<h2 id="colophon">Maintaining this site __anc(`colophon')</h2>
<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
-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
-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>,
-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
-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
dnl -*- html -*-
-define(__title, `Contact Information')dnl
+define(__title, `contact information')dnl
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 <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
<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>
-<td>bandali@uwaterloo.ca</td>
+<td>bandali@gnu</td>
</tr>
<tr>
<td>Phone</td>
`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 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>
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
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(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>
-<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
-<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>
-<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>',
<meta name="author" content="bandali"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>__title`'ifdef(`__nts',,` — 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
-`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>
-ifelse(__slug,`home',`<h1>__title</h1>',
-`<strong><a href="/">Bandali</a>'s Personal Site</strong>')
+ifelse(__slug,`home',`<h1>__site__title</h1>',
+`<strong><a href="__p/">__site__title</a></strong>')
</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>
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
-<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
-<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 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>
-<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><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><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>
-<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>
-define(__copy, `2016–2020')dnl
+define(__copy, `2016–2021')dnl
include(footer.html)dnl
dnl -*- html -*-
-define(__title, `Licensing Information')dnl
+define(__title, `licensing information')dnl
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
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>
-define(`__latest', 4)dnl
+define(`__latest', 3)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
-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'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
<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),`
- syscmd(sed "s/\&/\&/g;s/>/\>/g;s/</\</g" _get(`notes', __i).m4 | m4 -D__feed_atom)')
+ syscmd(sed "s/\&/\&/g;s/>/\>/g;s/</\</g" _get(`notes', __i).m4 | m4 -D__feed_atom -D__d=__d -D__p=__p)')
</feed>
<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>
-<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),`
- syscmd(sed "s/\&/\&/g;s/>/\>/g;s/</\</g" _get(`notes', __i).m4 | m4 -D__feed_rss)')
+ syscmd(sed "s/\&/\&/g;s/>/\>/g;s/</\</g" _get(`notes', __i).m4 | m4 -D__feed_rss -D__d=__d -D__p=__p)')
</channel>
</rss>
+++ /dev/null
-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
dnl -*- html -*-
-define(__title, `Publications')dnl
+define(__title, `publications')dnl
define(__slug, `publications')dnl
include(header.html)dnl
<article id="publications">
-<h1>Publications</h1>
+<h1>__title</h1>
include(static/publications-partial.html)
+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
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>
+++ /dev/null
-<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
+++ /dev/null
-<!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>
<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}},
</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
</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
</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},
</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},
-# drop .html
-s/publications.html#/publications#/
-
# linkify bandali.bib at the top
s|bandali.bib|<a href="bandali.bib">&</a>|
<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;
- 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>
[<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 href="bandali-bib#bandali2020">bib</a> |
+[ <a href="bandali-bib.html#bandali2020">bib</a> |
<a href="http://hdl.handle.net/10012/16059">http</a> |
<a href="https://p.bndl.org/bandali-mmath-thesis.pdf">.pdf</a> ]
[<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 A. Day</a>, and José Serna.
+Ali Abbassi, <a href="https://shemshak.org/~bandali/">Amin Bandali</a>, <a href="https://cs.uwaterloo.ca/~nday/">Nancy A. Day</a>, and José Serna.
A comparison of the declarative modelling languages B, Dash, and
TLA<sup>+</sup>.
In Ana Moreira, Gunter Mussbacher, João Araújo, and Pablo
Sánchez, editors, <em>8th IEEE International Model-Driven
Requirements Engineering Workshop, MoDRE@RE 2018, Banff, AB, Canada, August
20, 2018</em>, pages 11–20. IEEE Computer Society, 2018.
-[ <a href="bandali-bib#DBLP:conf/re/AbbassiBDS18">bib</a> |
+[ <a href="bandali-bib.html#DBLP:conf/re/AbbassiBDS18">bib</a> |
<a href="https://doi.org/10.1109/MoDRE.2018.00008">http</a> |
<a href="https://p.bndl.org/modre2018-declarative.pdf">.pdf</a> ]
[<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 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 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.
-[ <a href="bandali-bib#bandali-magic-lassonde-2017">bib</a> |
+[ <a href="bandali-bib.html#bandali-magic-lassonde-2017">bib</a> |
<a href="https://p.bndl.org/eecs4080-poster.pdf">poster</a> ]
</td>
[<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 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 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.
-[ <a href="bandali-bib#bandali-magic-cucsc-2017">bib</a> |
+[ <a href="bandali-bib.html#bandali-magic-cucsc-2017">bib</a> |
<a href="https://p.bndl.org/cucsc-2017-slides.pdf">slides</a> ]
</td>
</tr>
-</table>
\ No newline at end of file
+</table>
/./,$!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
-s|Amin Bandali|<a href="https://bndl.org">&</a>|
+s|Amin Bandali|<a href="https://shemshak.org/~bandali/">&</a>|
s|Nancy A. Day|<a href="https://cs.uwaterloo.ca/~nday/">&</a>|
s|Simon Hudon|<a href="https://github.com/cipher1024">&</a>|
s|Jonathan S. Ostroff|<a href="https://www.eecs.yorku.ca/~jonathan/">&</a>|
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 {
- margin-bottom: 0.25em;
+ padding-top: 1em;
}
body > header h1 {
margin: 0;
- font-size: 100%;
+ font-size: 1em;
}
header a {
color: inherit;
}
+nav {
+ margin-bottom: 1em;
+}
nav ul {
margin: 0;
padding: 0;
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 {
- border-top: 1px solid #bbb;
font-size: 0.84em;
- padding-top: 1em;
+ margin-left: 0.4em;
}
-footer p {
- margin: 0;
+
+main > * {
+ max-width: 43rem;
}
h1 {
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 {
min-width: 100%;
padding: 1em;
}
-pre:first-of-type {
- margin-top: 0;
-}
pre > code {
padding: 0;
background: initial;
text-transform: none;
padding: .2em .3em;
}
+pre, code {
+ font-size: smaller;
+}
/* box effect */
.box, details, pre, code {
- background-color: #f8f8f8;
+ background-color: #f4f4f4;
border: 1px solid #e6e6e6;
border-radius: 4px;
box-sizing: border-box;
}
p.box {
font-size: 0.95em;
- padding: 0.3em 0.6em;
+ padding: 0.6em 0.9em;
}
table td {
table td:last-child {
padding-right: 0
}
-#notes {
- margin-top: 0.9em;
-}
.post-list {
width: 100%;
}
.post-list tr:hover {
- background: #fafafa;
+ background: #efefe8;
}
.post-list td {
padding: 0.25em 0;
}
.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;