Groundhog Day Resolutions - July 2016

February's goals went pretty well - I achieved everything I wanted and finally crossed off some items that have been on my list for far too long.

February's Goals

1. Rebuild

Not very exciting, but I finally got around to rebuilding my game site at The site is all static, using a mix of middleman and Jekyll, and also runs under SSL.

It took a while to get all the various parts working together, but I'm definitely happy with how the site looks and works now. There's still some work to be done (mostly polishing and removing dead content) but it's a good first step that I should have taken years ago.

2. Release a game

My second success was releasing my first game in over two years. And boy, was it terrible! You can read more about it here: "February's #1GAM Entry - Trip into the Future". It wasn't particularly complex to build, and it isn't much fun to play, but it was a good step to getting back into the groove.

3. Blog more

I'm still in the habit of leaving things to the last minute, but it's getting there.

The last few months have been a complete bust. But there's no point dwelling on the past. On to July!

Goals for this month

1. Redesign this site

This is another one of those "nice but not urgent" tasks that I've had in the works for years. Rebuilding the site to Jekyll was probably the hardest part, so the redesign should go smoother than the Sodaware one.

2. Build another game

I have plenty of ideas, it's just a matter of finding the most realistic ones to develop. I have a tendency to over-complicate them which doesn't help when there's only a few weeks to create them.

3. Blog more

A permanent goal that I frequently miss.

Groundhog Day Resolutions 2016

Last year I decided to start the year right by organizing all of my goals and ideas onto a Trello board. It seemed like a productive thing to do at the time.

However, when December rolled around there was still much that hadn't been touched. It wasn't that I didn't want to do things, they just got lost amongst everything else.

The lesson for me here: it's not much use having things written down if you don't look at them.

This year I'm trying something different: Dave Seah's Groundhog Day resolutions. Instead of a large list of resolutions at the start of the year, it's a smaller list made every month.

Here's February's (very short) list:

Release a game for #1GAM 2016

I wrote 4 games for #1GAM back in 2014 and had a great time. 2015 was not so good, but I want to get back on the game development wagon this year.

Finish the rebuild of Sodaware

This is something I've wanted to get done for a while but just kept pushing it back. Sodaware was my first "real" website, but sadly it's been left to gather dust over the last few years.

My original plan was to use Jekyll (which is what powers this site), but I've since decided to go with Middleman. I still like Jekyll, but Middleman felt like a better fit for a none-blog site.

Write one blog post a week

Every year I tell myself I'm going to start writing more. Why should 2016 be any different?

More to come next month (March 3rd).

Creating HTML faster with Emmet

A picture is worth a thousand words, so here's all you need to know about Emmet.

Emacs + Emmet = HAPPINESS

Emmet is available for a number of IDE's and editors, including Emacs. If you've ever written any CSS you'll feel right at home with how selectors and identifiers work.

Distraction free writing with Emacs

Emacs darkroom-mode

Emacs is a great platform for many things, and in just a few steps it can be setup for distraction free writing.

You'll need a copy of darkroom-mode, which can either be downloaded from the darkroom-mode homepage, or installed using M-x package-install darkroom.

Once installed it's good to go, but I prefer slightly different settings to the default.

I use use-package to manage my configuration, but the setup is pretty much the same without it (just use the contents of the progn expression). The following will set the font to be larger and will limit the page to 80 columns wide:

(use-package darkroom-mode
  :commands darkroom-mode
    (defvar darkroom-mode-face-foreground "Inconsolata")
    (defvar darkroom-mode-face-size 160)
    (defvar darkroom-mode-center-margin 80)
    (define-key global-map [f12] 'darkroom-mode)))

Once everything is configured, hitting <f12> will toggle darkroom mode.

To remove the title bar and go into full-screen mode, you'll need a little extra trickery:

(defun pn/full-screen-toggle ()
  "toggle full-screen mode"
  (shell-command "wmctrl -r :ACTIVE: -btoggle,fullscreen"))
(global-set-key (kbd "<f11>")  'pn/full-screen-toggle)

The code above will bind <f11> to toggle window decorations and go full-screen (linux/mac only).

Using Electric Indent with Org Mode

Recently I've been using electric indent mode to handle automatic indentation. It's very useful when writing code, as it indents blocks automatically when the enter key is pressed. But some of that behaviour isn't desirable when using other modes, such as org mode.

One thing I like about org-mode is the keyboard shortcuts for inserting new headlines and todo items. For example, ALT+ENTER will create a new headline beneath the current line at the correct depth.

Unfortunately, when using electric indent the headlines are indented:

Emacs org-mode with electric indentation

Thankfully the solution is relatively simple. The following code in your emacs intialization will disable electric indentation when working with org files.

(add-hook 'electric-indent-functions
	  (lambda (x) (when (eq 'org-mode major-mode) 'no-indent)))

So now you'll get the expected behaviour:

Emacs org-mode with electric indentation