From 1758fe1cb56a8d9ff465b92416016170415daee1 Mon Sep 17 00:00:00 2001 From: Akshay Date: Sat, 25 Jan 2020 19:16:16 +0530 Subject: rework site layout --- docs/index.html | 422 ++++++-------------------------------------------------- 1 file changed, 45 insertions(+), 377 deletions(-) (limited to 'docs/index.html') diff --git a/docs/index.html b/docs/index.html index 292f245..883a3a5 100644 --- a/docs/index.html +++ b/docs/index.html @@ -21,400 +21,68 @@
-
- -
31/12 2019
+
+
31/12 2019
+ Color Conundrum -
-
-

This piece aims to highlight (pun intended) some of the -reasons behind my color -free editor setup.

- -

Imagine highlighting an entire book because all of it is -important. That is exactly what (most) syntax highlighting -does. It is difficult for the human eye to filter out noise -in rainbow barf. Use color to draw attention, not diverge -it.

- -

At the same time, a book devoid of color is boring! What -is the takeaway from this 10 line paragraph? What are the -technical terms used?

- -

Prose and code are certainly different, but the fickle -minded human eye is the same. The eye constantly looks for a -frame of reference, a focal point. It grows tired when it -can’t find one.

- -

The following comparison does a better job of explaining -(none, ample and over-the-top highlighting, from left to -right):

- -

hi.png

- -

Without highlighting (far left), it is hard to differentiate -between comments and code! The florid color scheme (far -right) is no good either, it contains too many attention -grabbers. The center sample is a healthy balance of both. -Function calls and constants stand out, and repetitive -keywords and other noise (let, as) are mildly dimmed -out. Comments and non-code text (sign column, status text) -are dimmed further.

- -

I’ll stop myself before I rant about color contrast and -combinations.

-
-
-
+ +
-
- -
23/11 2019
+
+
23/11 2019
+ Static Sites With Bash -
-
-

After going through a bunch of static site generators -(pelican, -hugo, -vite), I decided to roll -my own. If you are more of the ‘show me the code’ kinda guy, -here you go.

- -

Text formatting: I chose to write in markdown, and convert -to html with lowdown.

- -

Directory structure: I host my site on GitHub pages, so -docs/ has to be the entry point. Markdown formatted posts -go into posts/, get converted into html, and end up in -docs/index.html, something like this:

- -
posts=$(ls -t ./posts)     # chronological order!
-for f in $posts; do
-    file="./posts/"$f      # `ls` mangled our file paths
-    echo "generating post $file"
-
-    html=$(lowdown "$file")
-    echo -e "html" >> docs/index.html
-done
-
- -

Assets: Most static site generators recommend dropping image -assets into the site source itself. That does have it’s -merits, but I prefer hosting images separately:

- -
# strip file extension
-ext="${1##*.}"
-
-# generate a random file name
-id=$( cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 2 | head -n 1 )
-id="$id.$ext"
-
-# copy to my file host
-scp -P 443 "$1" emerald:files/"$id" 
-echo "https://files.nerdypepper.tech/$id"
-
- -

Templating: -generate.sh -brings the above bits and pieces together (with some extra -cruft to avoid javascript). It uses sed to produce nice -titles from the file names (removes underscores, -title-case), and date(1) to add the date to each post -listing!

-
-
-
+ + -
- -
07/11 2019
+
+
07/11 2019
+ My Setup -
-
-

Decided to do one of these because everyone does one of -these.

- -

scrot

- -

My entire setup is managed with GNU stow, making it easier -to replicate on fresh installations. You can find my -configuration files on GitHub.

- -

I run Void Linux (glibc) on my -HP Envy 13" (2018). -To keep things simple, I run a raw X session with 2bwm as my -window manager, along with dunst (notification daemon) and -Sam’s compton -(compositor) fork.

- -

I am a fan of GNU tools, so I use bash as my shell, and -coreutils to manage files, archives, strings, paths etc. I -edit files with vim, chat with weechat, listen to music -with cmus, monitor processes with htop, manage sessions -with tmux, read pdfs in zathura. I rarely ever leave -the comfort of my terminal emulator, urxvt.

- -

Most of my academic typesetting is done with TeX, and -compiled with xelatex. Other fun documents are made with -GIMP :).

-
-
-
+ + -
- -
12/10 2019
+
+
12/10 2019
+ WPA Woes -
-
-

I finally got around to installing Void GNU/Linux on my main -computer. Rolling release, non-systemd, need I say more?

- -

As with all GNU/Linux distributions, wireless networks had -me in a fix. If you can see this post, it means I’ve managed -to get online. It turns out, wpa_supplicant was detecting the -wrong interface by default (does it ever select the right -one?). Let us fix that:

- -
$ sudo rm -r /var/service/wpa_supplicant
-$ sudo killall dhcpcd
-
- -

What is the right interface though?

- -
$ iw dev
-   ...
-   Interface wlp2s0
-   ...
-
- -

Aha! Let us run wpa_supplicant on that interface, as a -background process:

- -
$ sudo wpa_supplicant -B -i wlp2s0 -c /etc/wpa_supplicant/wpa_supplicant.conf
-$ sudo dhcpcd -B wlp2s0
-$ ping google.com
-PING ...
-
- -

Yay! Make those changes perpetual by enabling the service:

- -
------------------------------------------------------
-# Add these to /etc/wpa_supplicant/wpa_supplicant.conf
-OPTS="-B"
-WPA_INTERFACE="wlp2s0"
-------------------------------------------------------
-$ sudo ln -s /etc/sv/wpa_supplicant /var/service/
-$ sudo ln -s /etc/sv/dhcpcd /var/service/
-$ sudo sv restart wpa_supplicant
-$ sudo sv restart dhcpcd
-
-
-
-
+ + -
- -
07/08 2019
+
+
07/08 2019
+ Bye Bye BDFs -
-
-

Glyph Bitmap Distribution Format is no more, as the creators of -Pango, one of the most widely used text rendering -libraries, -announced -their plans for Pango 1.44.

- -

Until recently, Pango used FreeType to draw fonts. They will be moving over -to Harfbuzz, an evolution of FreeType.

- -

Why?

- -

In short, FreeType was hard to work with. It required complex logic, and -provided no advantage over Harfbuzz (other than being able to fetch -opentype metrics with ease).

- -

Upgrading to Pango v1.44 will break your GTK applications (if you use a -bdf/pcf bitmap font). Harfbuzz does support bitmap-only OpenType fonts, -otbs. Convert your existing fonts over to otbs using -FontForge. It is to be noted that applications -such as xterm and rxvt use xft (X FreeType) to render fonts, and will -remain unaffected by the update.

- -

Both scientifica and -curie will soon ship with bitmap-only -OpenType font formats.

-
-
-
+ + -
- -
02/08 2019
+
+
02/08 2019
+ Onivim Sucks -
-
-

Onivim is a ‘modern modal editor’, combining fancy -interface and language features with vim-style modal editing. What’s wrong you -ask?

- -

Apart from buggy syntax highlighting, -broken scrolling and -others, -Onivim is proprietary software. It is licensed under a commercial -end user agreement license, -which prohibits redistribution in both object code and source code formats.

- -

Onivim’s core editor logic (bits that belong to vim), have been separated from -the interface, into libvim. libvim is -licensed under MIT, which means, this ‘extension’ of vim is perfectly in -adherence to vim’s license text! -Outrun Labs are exploiting this loophole (distributing vim as a library) to -commercialize Onivim.

- -

Onivim’s source code is available on GitHub. -They do mention that the source code trickles down to the -oni2-mit repository, which (not yet) contains -MIT-licensed code, 18 months after each commit to the original repository.

- -

Want to contribute to Onivim? Don’t. They make a profit out of your contributions. -Currently, Onivim is priced at $19.99, ‘pre-alpha’ pricing which is 80% off the -final price! If you are on the lookout for an editor, I would suggest using -Vim, charity ware that actually works, and costs $100 lesser.

-
-
-
+ + -
- -
31/07 2019
+
+
31/07 2019
+ Bash Harder With Vim -
-
-

Bash is tricky, don’t let your editor get in your way. Here’s a couple of neat -additions you could make to your vimrc for a better shell programming -experience.

- -
- -

Man pages inside vim

- -

Source this script to get started:

- -
runtime ftplugin/man.vim
-
- -

Now, you can open manpages inside vim with :Man! It adds nicer syntax highlighting -and the ability to jump around with Ctrl-] and Ctrl-T.

- -

By default, the manpage is opened in a horizontal split, I prefer using a new tab:

- -
let g:ft_man_open_mode = 'tab'
-
- -
- -

Scratchpad to test your commands

- -

I often test my sed substitutions, here is -a sample from the script used to generate this site:

- -
# a substitution to convert snake_case to Title Case With Spaces
-echo "$1" | sed -E -e "s/\..+$//g"  -e "s/_(.)/ \u\1/g" -e "s/^(.)/\u\1/g"
-
- -

Instead of dropping into a new shell, just test it out directly from vim!

- -
    -
  • Yank the line into a register:

    - -
    yy
    -
  • -
  • Paste it into the command-line window:

    - -
    q:p
    -
  • -
  • Make edits as required:

    - -
    syntax off            # previously run commands
    -edit index.html       # in a buffer!
    -w | so %
    -!echo "new_post.md" | sed -E -e "s/\..+$//g"  --snip--
    -^--- note the use of '!'
    -
  • -
  • Hit enter with the cursor on the line containing your command!

    - -
    $ vim
    -New Post         # output
    -Press ENTER or type command to continue
    -
  • -
-
-
-
+ + -
- -
30/07 2019
+
+
30/07 2019
+ Hold Position! -
-
-

Often times, when I run a vim command that makes “big” changes to a file (a -macro or a :vimgrep command) I lose my original position and feel disoriented.

- -

Save position with winsaveview()!

- -

The winsaveview() command returns a Dictionary that contains information -about the view of the current window. This includes the cursor line number, -cursor coloumn, the top most line in the window and a couple of other values, -none of which concern us.

- -

Before running our command (one that jumps around the buffer, a lot), we save -our view, and restore it once its done, with winrestview.

- -
let view = winsaveview()
-s/\s\+$//gc              " find and (confirm) replace trailing blanks
-winrestview(view)        " restore our original view!
-
- -

It might seem a little overkill in the above example, just use “ (double -backticks) instead, but it comes in handy when you run your file through -heavier filtering.

-
-
-
+ + -
- -
29/07 2019
+
+
29/07 2019
+ Get Better At Yanking And Putting In Vim -
-
-
    -
  1. reselecting previously selected text (i use this to fix botched selections):

    - -
    gv  " :h gv for more
    -    " you can use `o` in visual mode to go to the `Other` end of the selection
    -    " use a motion to fix the selection
    -
  2. -
  3. reselecting previously yanked text:

    - -
    `[v`]
    -`[         " marks the beginning of the previously yanked text   :h `[
    -`]         " marks the end                                       :h `]
    - v         " visual select everything in between
    -
    -nnoremap gb `[v`]    " "a quick map to perform the above
    -
  4. -
  5. pasting and indenting text (in one go):

    - -
    ]p   " put (p) and adjust indent to current line
    -]P   " put the text before the cursor (P) and adjust indent to current line
    -
  6. -
-
-
-
+ + -- cgit v1.2.3