From 4927af92d3b136436aa41a26369794443aa69b97 Mon Sep 17 00:00:00 2001 From: Amin Bandali Date: Fri, 27 Mar 2020 20:01:24 -0400 Subject: [PATCH 1/1] convert the site back into hand-written html --- 404.html | 16 + Makefile | 20 +- arch-macbook-air.html | 310 ++++++++++++++++++ .../bandali-pubkey.txt => bandali-pubkey.txt | 0 computing.html | 85 +++++ contact.html | 90 +++++ cv.html | 73 +++++ static/feed.svg => feed.svg | 0 static/gnu.ico => gnu.ico | Bin static/gpl-3.0.html => gpl-3.0.html | 6 +- static/icon-12px.png => icon-12px.png | Bin static/icon-16px.png => icon-16px.png | Bin index.html | 150 +++++++++ license.html | 50 +++ static/reset.css => reset.css | 0 .../se212-h02q04d-soln.grg | 0 .../se212-f19 => se212-f19}/se212-t01.html | 0 {static/se212-f19 => se212-f19}/se212-t01.org | 0 {static/se212-f19 => se212-f19}/se212-t05.org | 0 static/404.html | 18 - static/style.css => style.css | 109 +++--- 21 files changed, 821 insertions(+), 106 deletions(-) create mode 100644 404.html create mode 100644 arch-macbook-air.html rename static/bandali-pubkey.txt => bandali-pubkey.txt (100%) create mode 100644 computing.html create mode 100644 contact.html create mode 100644 cv.html rename static/feed.svg => feed.svg (100%) rename static/gnu.ico => gnu.ico (100%) rename static/gpl-3.0.html => gpl-3.0.html (99%) rename static/icon-12px.png => icon-12px.png (100%) rename static/icon-16px.png => icon-16px.png (100%) create mode 100644 index.html create mode 100644 license.html rename static/reset.css => reset.css (100%) rename {static/se212-f19 => se212-f19}/se212-h02q04d-soln.grg (100%) rename {static/se212-f19 => se212-f19}/se212-t01.html (100%) rename {static/se212-f19 => se212-f19}/se212-t01.org (100%) rename {static/se212-f19 => se212-f19}/se212-t05.org (100%) delete mode 100644 static/404.html rename static/style.css => style.css (62%) diff --git a/404.html b/404.html new file mode 100644 index 0000000..febc3ef --- /dev/null +++ b/404.html @@ -0,0 +1,16 @@ + + + + + +404 Not Found + + + + +
+

404

+

Sorry, that page does not exist.

+
+ + diff --git a/Makefile b/Makefile index 2dc6d78..96674b5 100644 --- a/Makefile +++ b/Makefile @@ -1,23 +1,13 @@ -BASE_DIR = $(CURDIR) -OUT_DIR = $(BASE_DIR)/site/ +SOURCE_DIR = $(CURDIR)/ RSYNC_PARAMS = --exclude-from='.rsync-exclude' --delete -avzP -SSH_USER = amin@shemshak.org +SSH_USER = amin@bandali.eu.org SSH_DEST = /var/www/bandali.eu.org/ -all: build - -build: - haunt build - -watch: build - haunt serve --watch +all: deploy deploy: - rsync $(RSYNC_PARAMS) $(OUT_DIR) $(SSH_USER):$(SSH_DEST) - -clean: - [ ! -d $(OUT_DIR) ] || rm -rf $(OUT_DIR) + rsync $(RSYNC_PARAMS) $(SOURCE_DIR) $(SSH_USER):$(SSH_DEST) -.PHONY: clean deploy +.PHONY: deploy diff --git a/arch-macbook-air.html b/arch-macbook-air.html new file mode 100644 index 0000000..0cdf75d --- /dev/null +++ b/arch-macbook-air.html @@ -0,0 +1,310 @@ + + + + + +Arch GNU/Linux on MacBook Air 2013 — Amin Bandali + + + + +
+Amin Bandali's Personal Site +
+ +
+
+
+

Arch GNU/Linux on MacBook Air 2013

+

Published on November 1, 2016
+Last updated on March 27, 2020

+
+ +

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 +Installation +Guide or the former +Beginner's +Guide. Rather, it mostly serves as a small summary with a few +useful notes about the gotchas.

+ +

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.

+ +

Note: 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).

+ +

Shrinking the macOS partition

+

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!

+ +

Creating a bootable Arch Installer USB

+

There are different ways of creating a bootable Arch USB, all +documented on the +USB +flash installation media page on the Arch wiki, but the simplest +one is using dd if you already have access to another +UNIX system.

+ +

Warning: make sure you backup the +data on your flash drive, as dd will irrevocably destroy +all data on it.

+ +

Use lsblk to find the name (block device) of your USB drive, then +run dd (as root) as shown below:

+ +
+dd bs=4M if=/path/to/archlinux.iso of=/dev/sdx status=progress && sync
+
+ +

Replace /path/to/archlinux.iso with the path to the +Arch image you have downloaded, and /dev/sdx with your +drive.

+ +

Booting up from the USB

+

After creating the install USB, reboot your laptop and hold the alt +key and boot from the USB.

+ +

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 +note at the top of this post).

+ +

Use ping to verify that you have established a +connection:

+ +
+ping archlinux.org
+
+ +

Updating the system clock

+

Once you're connected to the internet, make sure the system clock +is accurate:

+ +
+timedatectl set-ntp true  # start and enable systemd-timesyncd
+
+ +

You can check the service status using timedatectl +status.

+ +

Partitioning

+

I won't dive into partitioning and instead, I will refer you to the +Partitioning +page of Arch wiki. Of the available partitioning tools, I personally +prefer cfdisk.

+ +

Setting up LVM & LUKS

+

I use an +LVM +on LUKS setup, where I set up LVM on top of the encrypted +partition.

+ +

First, let's set up the underlying encrypted partition:

+ +
+cryptsetup -v --cipher aes-xts-plain64 --key-size 512 --hash sha512 \
+           --iter-time 5000 --use-urandom -y luksFormat /dev/sdaX
+
+ +

where /dev/sdaX is the partition you created in the +last step (e.g. /dev/sda4). For more information about +the cryptsetup options, see the +LUKS +encryption options.

+ +

Then we open the container:

+ +
+cryptsetup open --type luks /dev/sdaX lvm
+
+ +

Now it's time to use lvm and prepare the logical volume(s):

+ +
+pvcreate /dev/mapper/lvm vgcreate vg /dev/mapper/lvm
+lvcreate --extents +100%FREE -n root vg
+
+ +

This will create a physical volume on the mapping we just opened, +create a volume group named vg on the physical volume, +and create a logical volume named root that spans the +entire volume group. More complex setups are possible thanks to the +great flexibility of lvm.

+ +

We now format the logical volume with ext4:

+ +
+mkfs.ext4 /dev/mapper/vg-root
+
+ +

Installing the base system

+

Let's mount the logical volume, make a directory for the mount +point of the boot partition, and mount the boot partition +(/dev/sda1):

+ +
+mount /dev/mapper/vg-root /mnt
+mkdir /mnt/boot
+mount /dev/sda1 /mnt/boot
+
+ +

Finally, let's install the base system (and optionally +base-devel):

+ +
+pacstrap /mnt base base-devel
+
+ +

Configuring the system

+

Let's generate the fstab:

+ +
+genfstab -U /mnt >> /mnt/etc/fstab
+
+ +

Use your favorite terminal-based editor, edit the fstab file and +add the discard option for the root partition to enable +TRIM on the SSD.

+ +

Now we change root into our newly installed system and will +configure it. Adjust these according to your own setup.

+ +
+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
+
+ +

Then adjust the initramfs hooks in +/etc/mkinitcpio.conf and enable the +encrypt and lvm2 hooks, and make sure +keyboard is available before encrypt so you +can actually type in the LUKS password when booting. Your +HOOKS line should look similar to this:

+ +
+HOOKS=(base udev autodetect keyboard keymap consolefont modconf block encrypt lvm2 filesystems fsck)
+
+ +

After adjusting the hooks, build the initramfs:

+ +
+mkinitcpio -p linux
+
+ +

Create the /boot/loader/loader.conf with the following +content (adjust the timeout to your liking):

+ +
+default arch timeout 3
+
+ +

Then create the entry for Arch:

+ +
+mkdir -p /boot/loader/entries
+touch /boot/loader/entries/arch.conf
+
+ +

Now edit /boot/loader/entries/arch.conf to specify the +Arch entry:

+ +
+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
+
+ +

Again, /dev/sdaX is the partition you created in the +partitioning step earlier as the underlying encrypted partition.

+ +

Finally, install the bootloader, exit the chroot, umount and +reboot!

+ +
+bootctl install
+exit
+umount -R /mnt
+reboot
+
+ +

Post-installation recommendations

+

Congratulations! You now have a minimal Arch installation.

+ +

At this point, I usually install my favorite AUR helper, +pacaur, then I +install the +mba6x_bl-dkms +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%.

+ +
+pacaur -S linux-headers dkms # linux-headers is required for dkms
+pacaur -S broadcom-wl-dkms
+pacaur -S mba6x_bl-dkms
+
+ +

Then, I'd like to install

+
    +
  • input, graphics, and sound drivers,
  • +
  • a desktop environment (I prefer Xfce or LXQt),
  • +
  • a display manager for login screen (lightdm or sddm), and
  • +
  • a network manager (NetworkManager or ConnMan).
  • +
+ +

Check out the +General +recommendations for more details.

+ +

References

+

Here are some resources I've come across each with lots of useful +bits and pieces, about installing Arch on a MacBook:

+ + + +

Got a question or comment? You can find my +email address on my contact page. +:-)

+
+
+ + + diff --git a/static/bandali-pubkey.txt b/bandali-pubkey.txt similarity index 100% rename from static/bandali-pubkey.txt rename to bandali-pubkey.txt diff --git a/computing.html b/computing.html new file mode 100644 index 0000000..cbce706 --- /dev/null +++ b/computing.html @@ -0,0 +1,85 @@ + + + + + +How I do my Computing — Amin Bandali + + + + +
+Amin Bandali's Personal Site +
+ +
+
+
+

How I do my Computing

+

Published on September 14, 2019
+Last updated on November 30, 2019

+
+ +

(Inspired by computing pages of +rms and +Leah Rowe)

+ +

Computers

+

My main computer is a +soon-to-be-librebooted +ThinkPad X200. This is the machine I use the most in or out the +house. I also own and occasionally use a Dell XPS 15 more as a +“Desktop”, and a ThinkPad X220T tablet I use when reading +(and annotating) research papers.

+ +

I also have the privilege of having access to a fleet of beefy +servers through our school's +Computer Science Club, +which I use for some heavier computations every now and +again.

+ +

GNU/Linux distros

+

I've used a large number of GNU/Linux distributions throughout the +years, but as of late, my favourite distros are +Trisquel, +Guix System, and +Debian (with no contrib or +non-free). I mostly use the +GNU Linux-libre kernel. +Guix System comes with GNU Linux-libre out of the box, and on +Debian-based distros I install it from jxself's +APT repository.

+ +

Actual computing

+

I spend most of my time in +GNU Emacs.

+

TODO: elaborate

+ +

Cell phone

+

I have an old Nexus 5 I reluctantly use from time to time. It runs +LineageOS+microG without GApps. Sadly it still requires some blobs +for functioning. I can't wait for lxo's +0G to become a +reality fast enough. +:-)

+ +

Got a question or comment? You can find my +email address on my contact page. +:-)

+
+
+ + + diff --git a/contact.html b/contact.html new file mode 100644 index 0000000..f296182 --- /dev/null +++ b/contact.html @@ -0,0 +1,90 @@ + + + + + +Contact Information — Amin Bandali + + + + +
+Amin Bandali's Personal Site +
+ +
+
+

Contact information

+

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):

+ +
    +
  • bandali@gnu.org
  • +
  • bandali@uwaterloo.ca
  • +
  • bandali@csclub.uwaterloo.ca
  • +
+ +

If you want to send me GPG-encrypted mail, you can use my +public key with the +fingerprint BE62 7373 8E61 6D6D 1B3A 08E8 A21A 0202 4881 6103.

+ + + + + + + + + + + + + + + + + + + + + + + +
IRCbandali on freenode and +oftc
XMPPbandali@member.fsf.org
Matrix@bandali:matrix.org
Fediverse@bandali@pleroma.site
+ +

Elsewhere

+

You may also find me at a few other places online. Stricken +through accounts are those I don't use anymore, unless absolutely +necessary.

+ + +
+
+ + + diff --git a/cv.html b/cv.html new file mode 100644 index 0000000..69c90ed --- /dev/null +++ b/cv.html @@ -0,0 +1,73 @@ + + + + + +Curriculum vitae — Amin Bandali + + + + +
+

Curriculum vitae (PDF)

+ + + + + + + + + + + + + + + + +
Sitebandali.eu.org
Emailbandali@uwaterloo.ca
Phoneavailable upon request via email
+ +

Education

+ +

Master of Mathematics (Computer Science) | 2018–present

+

University of Waterloo, Canada

+

Supervised by Dr. Nancy Day | GPA: 3.7/4.0 | Expected completion: April 2020

+

Research focusing on formal logic, model checking, and verification.

+ +

B.Sc. Honours Computer Science | 2013–2017

+

York University, Toronto, Canada

+

GPA: 7.84/9.0

Relevant courses: System Specification & +Refinement, Software Requirements Eng., Software Design, Operating +Systems, Computational Complexity, Design & Analysis of Algorithms.

+

Finished first year (2013-14) at Carleton University with +a GPA of 11.0/12.0, then transferred to York University in +Fall 2014.

+ +

Publications

+ +

Listed on my homepage

+ +

Work & Research Experience

+ +

Cheriton School of Computer Science, University of Waterloo | 2018–present

+

Instructional Apprentice, Teaching Assistant, Research Assistant

+ + + +

EECS +Department, York University | Fall 2017

+

Teaching Assistant

+

EECS 1012: +TA in Fall 2017

+
+ + diff --git a/static/feed.svg b/feed.svg similarity index 100% rename from static/feed.svg rename to feed.svg diff --git a/static/gnu.ico b/gnu.ico similarity index 100% rename from static/gnu.ico rename to gnu.ico diff --git a/static/gpl-3.0.html b/gpl-3.0.html similarity index 99% rename from static/gpl-3.0.html rename to gpl-3.0.html index 30acfc3..3817471 100644 --- a/static/gpl-3.0.html +++ b/gpl-3.0.html @@ -1,10 +1,10 @@ - - + + GNU General Public License v3.0 - +
+ + + +Amin Bandali's Personal Site + + + + +
+

Amin Bandali's Personal Site

+
+ +
+
+

Hi, I'm Amin. I am currently a graduate student at the +Waterloo Formal Methods +group at the University of Waterloo, supervised by +Nancy Day. +The main goal of my research is +improving software and systems reliability +through application of +formal methods.

+ +

My research at WatForm focuses on formal logic, model checking, and +verification. I am also interested in programming languages, proof +assistants, and their type systems.

+ +

On the side, I enjoy +hacking on +elisp +and guile. +I am a GNU maintainer and +webmaster, +a free software +activist, and an associate member +of the Free Software Foundation. +I'm the co-host of the Emacs.el +podcast with Daniel Gopar, and +the chief organizer of the +EmacsConf conference. +I'm also a member of the Systems Committee of the +Computer Science Club of +the University of Waterloo.

+
+ +
+

Papers

+
+
A Comparison of the Declarative Modelling Languages B, DASH, and +TLA+ + +[ pdf +| bib +] + +
+
+Ali Abbassi, Amin Bandali, +Nancy A. Day, Jose Serna
+2018 IEEE 8th International Model-Driven Requirements Engineering +Workshop (MoDRE)
+Copyright © 2018 IEEE. All Rights Reserved. Sadly. +
+
+
+ +
+

Talks

+
+
The Magic of Specifications and Type Systems + +[ slides +| poster +] + +
+
+Amin Bandali, +Simon Hudon, +Jonathan S. Ostroff +
+
+
+ +
+

Projects

+

Below are a number of free software projects I have worked on:

+
+
george-mode
+
Emacs major mode for editing George files
+ +
alloy-catalyst
+
Framework for performance analysis of Alloy models
+ +
unitb-web
+
Web interface for Unit-B
+ +
tex2png-hs
+
Library and CLI for converting TeX and LaTeX to PNG images
+
+
+ +
+

Notes

+

Here are notes about a variety of topics and issues I care +about.

+ + + + + + + + + + + + + +
How I do my ComputingSeptember 14, 2019
Arch GNU/Linux on MacBook Air 2013November 1, 2016
+
+
+
+

Copyright © 2016–2019 Amin Bandali. See the +license conditions. Please copy and share.

+
+ + diff --git a/license.html b/license.html new file mode 100644 index 0000000..acd7d70 --- /dev/null +++ b/license.html @@ -0,0 +1,50 @@ + + + + + +Licensing Information — Amin Bandali + + + + +
+Amin Bandali's Personal Site +
+ +
+
+

License information for bandali.eu.org

+

I strongly believe in +free culture +and that all creative works everywhere should be +free.

+ +

Unless otherwise noted material on this site is licensed under the +GNU General Public License as published by the Free Software +Foundation, either version 3 of the License, or (at your option) any +later version. A copy of the license is included at +gpl-3.0.html.

+ +

Some resources on free software and licenses:

+ +
+
+
+

Copyright © 2019 Amin Bandali. See the above for license +conditions. Please copy and share.

+
+ + diff --git a/static/reset.css b/reset.css similarity index 100% rename from static/reset.css rename to reset.css diff --git a/static/se212-f19/se212-h02q04d-soln.grg b/se212-f19/se212-h02q04d-soln.grg similarity index 100% rename from static/se212-f19/se212-h02q04d-soln.grg rename to se212-f19/se212-h02q04d-soln.grg diff --git a/static/se212-f19/se212-t01.html b/se212-f19/se212-t01.html similarity index 100% rename from static/se212-f19/se212-t01.html rename to se212-f19/se212-t01.html diff --git a/static/se212-f19/se212-t01.org b/se212-f19/se212-t01.org similarity index 100% rename from static/se212-f19/se212-t01.org rename to se212-f19/se212-t01.org diff --git a/static/se212-f19/se212-t05.org b/se212-f19/se212-t05.org similarity index 100% rename from static/se212-f19/se212-t05.org rename to se212-f19/se212-t05.org diff --git a/static/404.html b/static/404.html deleted file mode 100644 index ca2de28..0000000 --- a/static/404.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - 404 Not Found - - - -
- -

404

-

- Sorry, that page doesn’t exist. -

-
- - diff --git a/static/style.css b/style.css similarity index 62% rename from static/style.css rename to style.css index f236c92..8d43f66 100644 --- a/static/style.css +++ b/style.css @@ -5,28 +5,43 @@ body { padding: 2em; } -nav, main, footer { +header, nav, main, footer { margin: auto; max-width: 38rem; } -nav { - font-size: 0.84em; +body > header { + margin-bottom: 0.25em; +} +body > header h1 { + margin: 0; + font-size: 100%; +} +header a { + color: inherit; +} +nav ul { + margin: 0; + padding: 0; +} +nav li { + display: inline; + text-transform: lowercase; } -main { - margin-bottom: 2em; +nav li + li { + margin-left: 0.5em; } -p { - margin: 1em 0; +nav a { + color: #333; } -header { +nav, main { margin-bottom: 1.5em; } header >:not(h1) { font-size: 0.875em; } -header > p { - margin: 0; +header > h1 + p { + margin-top: -1em; } footer { border-top: 1px solid #bbb; @@ -40,10 +55,6 @@ footer p { h1 { font-size: 1.5em; } -h1 + address { - margin-top: 0.75em; -} - h2 { font-size: 1.25em; } @@ -52,16 +63,15 @@ h3 { } a { - color: #004caa; - padding: 0.3em 0; - text-decoration: underline #ccc; + color: #036; } +/* a:hover, a:focus { - text-decoration: underline #666; + color: #005a6a; } +*/ a:active { - color: #a10029; - outline: 0; + outline-offset: 2px; } h4 { @@ -92,7 +102,8 @@ article h3 { } pre, code { - background: #f3f3f3; + background: #f6f6f6; + font: 1.15em monospace; padding: 1em; } pre > code { @@ -100,7 +111,6 @@ pre > code { background: initial; } code { - font: 1.15em monospace; text-transform: none; padding: .2em .3em; } @@ -136,18 +146,7 @@ table td:last-child { text-align: right; } -dt { - margin-bottom: 0.15em; -} -dd { - font-size: 0.875em; - margin-left: 1.5em; - margin-bottom: 0.75em; -} -dd:last-child { - margin-bottom: 1em; -} -small { +small, dd { font-size: 0.875em; } .muted { @@ -157,32 +156,10 @@ small { margin-top: 2em; } -ul, ol { - list-style: none; - padding-left: 1.5em; - position: relative; -} - -li { +li, dd { margin-bottom: 0.25em; } -ul > li::before { - content: '•'; - position: absolute; - left: 0.5em; -} - -h2 + ul, h2 + dl, h2 + table, h1 + table, pre + h2 { - margin-top: 1em; -} -table + h2, h2 + h3, ul + h3 { - margin-top: 0.7em; -} -p + table { - margin-top: -0.3em; -} - .feed-icon { margin-right: 3px } @@ -191,19 +168,11 @@ p + table { position: relative; top: 2px } - -.tag-list { - padding-left: 0; -} -.tag-list li { - margin-right: 0.75em; - white-space: nowrap; +.smly { display: inline-block; + transform: rotate(90deg); + margin-left: 0.2em; } -.tag-list > li::before { - content: ''; +.warn { + color: #a10029; } - -sup, sub { font-size: 0.85em; } -sup { vertical-align: super; } -sub { vertical-align: sub; } -- 2.20.1