Tag: Cat
Lucky Bubba - the Little Prince
I’ve often referred to my cat, Lucky Bubba, as “natures most perfect cat”, or “a prince amount cats”.

Tag: Emacs
Test from dijkstra, my Framework laptop
Decided to test out setting up and enabling this wiki setup on my Fedora Linux laptop that I got from the good folks at Frame.Work. Have had it for a while now. I got the smaller laptop, the Framework Laptop 13 (AMD Ryzen™ 7040 Series).
It it light and handy. Has a decent keyboard for a laptop. Running the latest version of Fedora, as of the time of this post:
cat /etc/fedora-release
Fedora release 42 (Adams)
It’s a solid distro and is kept very up-to-date, which I like.
Emacs updates to support new hugo-powered blog
This has been an interesting day. After getting the updates to the blog repo all updated and working well, I wanted to also update my Emacs configuration to make it a smoother experience to add new posts.
So two main changes were required. The majority is in this one file, located in my `$HOME/.emacs.d/lisp` directory:
init-hugo.el
;;; init-hugo.el --- Blogging helpers for Hugo/ox-hugo -*- lexical-binding: t; -*-
;; Author: Gordon Owen Tillman <got@example.com>
;; Namespace: got/
;; Summary: Create date-prefixed Hugo posts with optional tag prompting
;;; Commentary:
;; This file provides a helper function to create a new blog post in
;; `got/blog-directory`, using the ox-hugo front-matter conventions.
;; All functions are namespaced with `got/` (Gordon Owen Tillman).
;;; Code:
(require 'subr-x) ;; for string-join
(defcustom got/blog-directory
"~/Projects/g/gordyt.github.io/source/blog/"
"Directory where blog posts are stored."
:type 'string
:group 'got)
(defun got--collect-existing-tags ()
"Collect all unique tags from existing blog posts."
(let ((tags '()))
(dolist (file (directory-files got/blog-directory t "\.org$"))
(with-temp-buffer
(insert-file-contents file)
(goto-char (point-min))
(when (re-search-forward "^#\\+HUGO_TAGS:\\s-*\\(.*\\)" nil t)
(let ((line-tags (split-string (match-string 1) "[ ,]+" t)))
(setq tags (append tags line-tags))))))
(delete-dups tags)))
(defun got/new-blog-post (title)
"Create a new org-mode blog post in `got/blog-directory` with TITLE.
Prompts for existing tags (with the option to add new ones)."
(interactive "sPost Title: ")
(let* ((date (format-time-string "%Y-%m-%d"))
(slug (replace-regexp-in-string
"[^a-z0-9-]" ""
(replace-regexp-in-string
" " "-" (downcase title))))
(filename (expand-file-name (format "%s-%s.org" date slug) got/blog-directory))
(existing-tags (got--collect-existing-tags))
(chosen-tags
(completing-read-multiple
"Select tags (or type new ones, space-separated): "
existing-tags nil nil)))
(find-file filename)
(insert (format "#+TITLE: %s\n" title))
(insert (format "#+DATE: %s\n" date))
(insert "#+HUGO_BASE_DIR: ../hugo-site/\n")
(insert "#+HUGO_SECTION: posts\n")
(insert (format "#+HUGO_TAGS: %s\n"
(string-join chosen-tags " ")))
(insert "#+HUGO_CATEGORIES: \n\n")
(message "New post created: %s" filename)))
(provide 'init-hugo)
;;; init-hugo.el ends here
Then just a minor update in `init.el` to load it:
Chromebook Performance Test - C720 vs C200
My buddy at work just got a new Acer C720-3404 Chromebook. I have the ASUS C200MA-EDU-4GB Chromebook. We decided to do a real-world performance comparison with a sample task that we have to perform all of the time.
Org-Octopress Notes
I’ve been trying to sort-out the details of what is required to be able to maintain a GitHub pages site via Octopress / org-octopress from multiple computers. The slight complicating factor is that the location of the git repository for the site is different on the two computers that I am using.
Building Emacs 24.4 on Ubuntu 14.04
I recently signed up for a Virtual Private Server (VPS) with vpsdime. The idea is to set-up a complete development environment for all of my work and personal projects that I can access from a low-end device like a Chromebook or an iPad (with a suitable SSH app installed).
Second Post: This Time with Org
Testing Org-Octopress
This is a test post using org-octopress…
Tag: Linux
Test from dijkstra, my Framework laptop
Decided to test out setting up and enabling this wiki setup on my Fedora Linux laptop that I got from the good folks at Frame.Work. Have had it for a while now. I got the smaller laptop, the Framework Laptop 13 (AMD Ryzen™ 7040 Series).
It it light and handy. Has a decent keyboard for a laptop. Running the latest version of Fedora, as of the time of this post:
cat /etc/fedora-release
Fedora release 42 (Adams)
It’s a solid distro and is kept very up-to-date, which I like.
Running Chrooted Desktop in Background
I made a post yesterday that covered the steps required to install Ubuntu on an ASUS C200 Chromebook. One thing I noticed was that, while you are running Ubuntu, it ties up your terminal window and makes it unavailable for doing other tasks.
Using a Chromebook as a Development Machine
Introduction
I have been interested in seeing if would be possible to set-up a Chromebook so that some serious development work with it. It’s a given that you won’t be running any virtual machines on a Chromebook. But at this point I think you can do pretty much any thing else you might need to do.
Tag: Hugo
Emacs updates to support new hugo-powered blog
This has been an interesting day. After getting the updates to the blog repo all updated and working well, I wanted to also update my Emacs configuration to make it a smoother experience to add new posts.
So two main changes were required. The majority is in this one file, located in my `$HOME/.emacs.d/lisp` directory:
init-hugo.el
;;; init-hugo.el --- Blogging helpers for Hugo/ox-hugo -*- lexical-binding: t; -*-
;; Author: Gordon Owen Tillman <got@example.com>
;; Namespace: got/
;; Summary: Create date-prefixed Hugo posts with optional tag prompting
;;; Commentary:
;; This file provides a helper function to create a new blog post in
;; `got/blog-directory`, using the ox-hugo front-matter conventions.
;; All functions are namespaced with `got/` (Gordon Owen Tillman).
;;; Code:
(require 'subr-x) ;; for string-join
(defcustom got/blog-directory
"~/Projects/g/gordyt.github.io/source/blog/"
"Directory where blog posts are stored."
:type 'string
:group 'got)
(defun got--collect-existing-tags ()
"Collect all unique tags from existing blog posts."
(let ((tags '()))
(dolist (file (directory-files got/blog-directory t "\.org$"))
(with-temp-buffer
(insert-file-contents file)
(goto-char (point-min))
(when (re-search-forward "^#\\+HUGO_TAGS:\\s-*\\(.*\\)" nil t)
(let ((line-tags (split-string (match-string 1) "[ ,]+" t)))
(setq tags (append tags line-tags))))))
(delete-dups tags)))
(defun got/new-blog-post (title)
"Create a new org-mode blog post in `got/blog-directory` with TITLE.
Prompts for existing tags (with the option to add new ones)."
(interactive "sPost Title: ")
(let* ((date (format-time-string "%Y-%m-%d"))
(slug (replace-regexp-in-string
"[^a-z0-9-]" ""
(replace-regexp-in-string
" " "-" (downcase title))))
(filename (expand-file-name (format "%s-%s.org" date slug) got/blog-directory))
(existing-tags (got--collect-existing-tags))
(chosen-tags
(completing-read-multiple
"Select tags (or type new ones, space-separated): "
existing-tags nil nil)))
(find-file filename)
(insert (format "#+TITLE: %s\n" title))
(insert (format "#+DATE: %s\n" date))
(insert "#+HUGO_BASE_DIR: ../hugo-site/\n")
(insert "#+HUGO_SECTION: posts\n")
(insert (format "#+HUGO_TAGS: %s\n"
(string-join chosen-tags " ")))
(insert "#+HUGO_CATEGORIES: \n\n")
(message "New post created: %s" filename)))
(provide 'init-hugo)
;;; init-hugo.el ends here
Then just a minor update in `init.el` to load it:
Tag: Org-Mode
Emacs updates to support new hugo-powered blog
This has been an interesting day. After getting the updates to the blog repo all updated and working well, I wanted to also update my Emacs configuration to make it a smoother experience to add new posts.
So two main changes were required. The majority is in this one file, located in my `$HOME/.emacs.d/lisp` directory:
init-hugo.el
;;; init-hugo.el --- Blogging helpers for Hugo/ox-hugo -*- lexical-binding: t; -*-
;; Author: Gordon Owen Tillman <got@example.com>
;; Namespace: got/
;; Summary: Create date-prefixed Hugo posts with optional tag prompting
;;; Commentary:
;; This file provides a helper function to create a new blog post in
;; `got/blog-directory`, using the ox-hugo front-matter conventions.
;; All functions are namespaced with `got/` (Gordon Owen Tillman).
;;; Code:
(require 'subr-x) ;; for string-join
(defcustom got/blog-directory
"~/Projects/g/gordyt.github.io/source/blog/"
"Directory where blog posts are stored."
:type 'string
:group 'got)
(defun got--collect-existing-tags ()
"Collect all unique tags from existing blog posts."
(let ((tags '()))
(dolist (file (directory-files got/blog-directory t "\.org$"))
(with-temp-buffer
(insert-file-contents file)
(goto-char (point-min))
(when (re-search-forward "^#\\+HUGO_TAGS:\\s-*\\(.*\\)" nil t)
(let ((line-tags (split-string (match-string 1) "[ ,]+" t)))
(setq tags (append tags line-tags))))))
(delete-dups tags)))
(defun got/new-blog-post (title)
"Create a new org-mode blog post in `got/blog-directory` with TITLE.
Prompts for existing tags (with the option to add new ones)."
(interactive "sPost Title: ")
(let* ((date (format-time-string "%Y-%m-%d"))
(slug (replace-regexp-in-string
"[^a-z0-9-]" ""
(replace-regexp-in-string
" " "-" (downcase title))))
(filename (expand-file-name (format "%s-%s.org" date slug) got/blog-directory))
(existing-tags (got--collect-existing-tags))
(chosen-tags
(completing-read-multiple
"Select tags (or type new ones, space-separated): "
existing-tags nil nil)))
(find-file filename)
(insert (format "#+TITLE: %s\n" title))
(insert (format "#+DATE: %s\n" date))
(insert "#+HUGO_BASE_DIR: ../hugo-site/\n")
(insert "#+HUGO_SECTION: posts\n")
(insert (format "#+HUGO_TAGS: %s\n"
(string-join chosen-tags " ")))
(insert "#+HUGO_CATEGORIES: \n\n")
(message "New post created: %s" filename)))
(provide 'init-hugo)
;;; init-hugo.el ends here
Then just a minor update in `init.el` to load it:
Liquid Exception: undefined method sort
I was getting this strange error when I tried to generate my site via
the rake generate
command:
## Generating Site with Jekyll
identical source/stylesheets/screen.css
Configuration file: /Users/gordy/Documents/Personal/gordyt.github.io/_config.yml
Source: source
Destination: public
Generating...
Liquid Exception: undefined method `sort!' for nil:NilClass in _includes/post/categories.html, included in _layouts/post.html
jekyll 2.5.2 | Error: undefined method `sort!' for nil:NilClass
Second Post: This Time with Org
Testing Org-Octopress
This is a test post using org-octopress…
Tag: Tags
Hugo Conversion is Working!
I have finally gotten around to resurrecting my old test blog
blog.gordontillman.info
. I was originally using org-octopress
which I like. But after it was no longer supported/available I just
quit maintaining this blog.
As of today it is now a Hugo blog, currently using the ananke
theme.
Checkout the source
branch of this repo for details.
Tag: Clojure
Fun with Clojure Macros
It all started innocently enough. I had a deftype
that was
implementing several protocols. I had written all of the protocol
functions inside the body of the deftype
. And even though each
function, by itself, wasn’t overly large, the entire blob of code was
getting out of hand.
Here is a tiny little example with some made-up protocols and a type
that embedded the protocol implementation inside the deftype
. In
the actual code there were many more methods that needed to be
implemented.
(defprotocol Proto1
(p11 [this])
(p12 [this foo bar]))
(defprotocol Proto2
(p21 [this])
(p22 [this baz bin]))
(deftype MyType [item1 item2 item3 item4]
Proto1
(p11 [this] ...)
(p12 [this foo bar] ...)
Proto2
(p21 [this] ...)
(p22 [this baz bin] ...))
Tag: Lisp
Fun with Clojure Macros
It all started innocently enough. I had a deftype
that was
implementing several protocols. I had written all of the protocol
functions inside the body of the deftype
. And even though each
function, by itself, wasn’t overly large, the entire blob of code was
getting out of hand.
Here is a tiny little example with some made-up protocols and a type
that embedded the protocol implementation inside the deftype
. In
the actual code there were many more methods that needed to be
implemented.
(defprotocol Proto1
(p11 [this])
(p12 [this foo bar]))
(defprotocol Proto2
(p21 [this])
(p22 [this baz bin]))
(deftype MyType [item1 item2 item3 item4]
Proto1
(p11 [this] ...)
(p12 [this foo bar] ...)
Proto2
(p21 [this] ...)
(p22 [this baz bin] ...))
Tag: Chromebook
Installing Ubuntu 14.04 LTS with i3 Window Manager on Chromebook
In this post I document the steps required to install and configure Ubuntu 14.04 LTS (Trusty Tahr) on an ASUS C200MA-EDU-4GB Chromebook.
Chromebook Performance Test - C720 vs C200
My buddy at work just got a new Acer C720-3404 Chromebook. I have the ASUS C200MA-EDU-4GB Chromebook. We decided to do a real-world performance comparison with a sample task that we have to perform all of the time.
Mounting External Drives - Ubuntu 14.04 and Chromebook
OK, this post is part of my continuing experiments with an ASUS C200 Chromebook. I have installed Ubuntu 14.04 using crouton.
I had created two partitions on a Micro SD Card, one as Fat32 (EsFat actually) and the other as ext4.
The FAT32 partition mounts at /media/removeable/share
and the ext4
partition mounts at /media/removeable/gordy
. I tried storing
various projects on the ext4 partition but when I tried to build from
that partition I would get a permissions error.
Fixing Scrolling on ASUS C200MA-EDU-4GB
One thing that really bugged me with my new ASUS C22MA Chromebook was the way that track-pad scrolling worked. By default it is exactly the opposite of my MacBook Pro.
Running Chrooted Desktop in Background
I made a post yesterday that covered the steps required to install Ubuntu on an ASUS C200 Chromebook. One thing I noticed was that, while you are running Ubuntu, it ties up your terminal window and makes it unavailable for doing other tasks.
Using a Chromebook as a Development Machine
Introduction
I have been interested in seeing if would be possible to set-up a Chromebook so that some serious development work with it. It’s a given that you won’t be running any virtual machines on a Chromebook. But at this point I think you can do pretty much any thing else you might need to do.
Tag: Ubuntu
Installing Ubuntu 14.04 LTS with i3 Window Manager on Chromebook
In this post I document the steps required to install and configure Ubuntu 14.04 LTS (Trusty Tahr) on an ASUS C200MA-EDU-4GB Chromebook.
Installing xmonad on Ubuntu 14.04 LTS
After seeing with my own eyes how rapidly the very minimal the xmonad windowing manager starts up after logging in, I decided to upgrade an old Linux box I have at the office that is running Ubuntu 14.04 LTS (Trusy Tahr).
Mounting External Drives - Ubuntu 14.04 and Chromebook
OK, this post is part of my continuing experiments with an ASUS C200 Chromebook. I have installed Ubuntu 14.04 using crouton.
I had created two partitions on a Micro SD Card, one as Fat32 (EsFat actually) and the other as ext4.
The FAT32 partition mounts at /media/removeable/share
and the ext4
partition mounts at /media/removeable/gordy
. I tried storing
various projects on the ext4 partition but when I tried to build from
that partition I would get a permissions error.
Running Chrooted Desktop in Background
I made a post yesterday that covered the steps required to install Ubuntu on an ASUS C200 Chromebook. One thing I noticed was that, while you are running Ubuntu, it ties up your terminal window and makes it unavailable for doing other tasks.
SBCL and Slime on Ubuntu 14.04
This post describes how to install and configure Steel Bank Common Lisp (SBCL) with SLIME (Superior Lisp Interaction Mode) that is installed via Quicklisp on Ubuntu 14.04 LTS (Trusty Tahr).
Using a Chromebook as a Development Machine
Introduction
I have been interested in seeing if would be possible to set-up a Chromebook so that some serious development work with it. It’s a given that you won’t be running any virtual machines on a Chromebook. But at this point I think you can do pretty much any thing else you might need to do.
Building Emacs 24.4 on Ubuntu 14.04
I recently signed up for a Virtual Private Server (VPS) with vpsdime. The idea is to set-up a complete development environment for all of my work and personal projects that I can access from a low-end device like a Chromebook or an iPad (with a suitable SSH app installed).
Tag: Github
Org-Octopress Notes
I’ve been trying to sort-out the details of what is required to be able to maintain a GitHub pages site via Octopress / org-octopress from multiple computers. The slight complicating factor is that the location of the git repository for the site is different on the two computers that I am using.
Tag: Octopress
Org-Octopress Notes
I’ve been trying to sort-out the details of what is required to be able to maintain a GitHub pages site via Octopress / org-octopress from multiple computers. The slight complicating factor is that the location of the git repository for the site is different on the two computers that I am using.
Tag: Sbcl
SBCL and Slime on Ubuntu 14.04
This post describes how to install and configure Steel Bank Common Lisp (SBCL) with SLIME (Superior Lisp Interaction Mode) that is installed via Quicklisp on Ubuntu 14.04 LTS (Trusty Tahr).
Tag: Slime
SBCL and Slime on Ubuntu 14.04
This post describes how to install and configure Steel Bank Common Lisp (SBCL) with SLIME (Superior Lisp Interaction Mode) that is installed via Quicklisp on Ubuntu 14.04 LTS (Trusty Tahr).
Tag: Journal
BulletJournal Updates
I have been using Ryder Carroll’s BulletJournal techniques for organizing my analog journal for about 6 months now. There are several things I really like about this system.
- It is easy to maintain
- It lets you carry around just one paper journal that you can use for everything; e.g., to-do lists, project notes, work and activity tracking, study notes, etc.
- It is very easy to customize to fit your needs.
Regarding that last point, I would like to share my current setup.
Tag: Recipe
Layered Garden Salad
This is a great recipe from page 105 of ¡Delicioso! Cooking South
Texas Style, compiled by the Junior League of Corpus Christi, Inc.,
ISBN 0-9609144-0-4
.