Building an Org-mode Workflow: Scheduling and Deadlines

by Jeff Bradberry

As I mentioned at the end of part 2, I want to schedule things I need to do on the calendar. So, this week I explored the deadlines and scheduling features.

Usage

There are two types of these timestamps that you can give to your agenda items — schedules and deadlines. Schedules are for events that happen at a particular time, or for when you want to set aside time to work on something particular. Deadlines are exactly what they sound like — a date and/or time something is due by. Both of these seem to behave nearly identically, and you can apply either type or both at the same time to an item.

In order to apply one of these timestamps to an item, use C-c C-s for a schedule, or C-c C-d for a deadline. This will open up a little calendar frame, and will request input in the mini-buffer.

Org-mode schedule input calendar frame and mini-buffer

This prompt is fairly intelligent about what date and time specifications it will take.

When complete, the result will show up as an all-caps keyword immediately under the headline. It must be the next line, with no other lines between it and …

Continue reading

Building an Org-mode Workflow: Multiple Files and Archiving

by Jeff Bradberry

As I mentioned at the end of part 1, I quickly began to feel the need to break things up into multiple files to make things more manageable. So, this week I explored the refile and archiving features.

Usage

To begin with I wanted to break up my items into categories, one category per file. After some waffling, the categories I settled upon for work were:

  • devel.org: Every item that is going to involve me personally writing code.
  • reviews.org: Coding work owned by other developers, that I need to review or pair with them on.
  • watching.org: Items that I want to keep an eye on, but that aren't yet ready to be worked on or prioritized
  • professional.org: Professional development, giving talks, mentoring, or other things of that nature.
  • other.org: Procedural things that don't comfortably fit in any of the other categories, e.g. talking to IT about problems with one of my accounts.

While I could have just cut and pasted items from my original todo.org file into their respective new files, I wanted something a bit more streamlined. It seemed like the org-refile command (C-c C-w …

Continue reading

Building an Org-mode Workflow: Basic TODOs

by Jeff Bradberry

I've been thinking recently that I need to adopt a task management system. As a long-time Emacs user, it should be natural for me to also be a user of Org-mode, an Emacs mode for outlining, note-taking, task management, and more. Building a system around an add-on of a program I already have open every day is a major plus and ought to encourage me to keep up with it. It will also be not too far different from the simple ad-hoc text files that I have been using, but with the addition of some programmed functionality that will improve my ability to quickly take an action and then move on without having to think about it too much.

I'm starting here with a fairly small workflow that does the bare minimum of what I need, then I will incrementally build up new pieces (and write a blog post about each as I go) as I discover new things that I want to be able to do.

Usage

For this first phase, I threw everything together into a single file, called simply todo.org. But since I need to configure autodetection of org …

Continue reading

Getting Started With Let's Encrypt

by Jeff Bradberry

Let's Encrypt is a new certificate authority, run in a cooperative effort with the goal of making it easy for everyone to obtain and renew the certificates needed to enable secure encrypted connections for their domain. It's free to use, uses open standards and open source software, and provides certificates via a fully automated process. Major sponsors of Let's Encrypt include the Mozilla Foundation and the EFF.

Let's Encrypt entered public beta on December 3rd, so there was no longer any good reason to hold back from obtaining a certificate for my site. This blog post will go over the steps I took to get set up with a Let's Encrypt certificate, and to get everything working.

The documentation for the Let's Encrypt client can be found here: https://letsencrypt.readthedocs.org/en/latest/intro.html.

I prefer to run my site on Debian, with nginx as the static file server and as a reverse proxy for my Django apps, which run on top of Apache. Since the nginx plugin for Let's Encrypt is currently 'highly experimental', I decided against using it. Additionally, my config files are jinja templates kept in version control, and are populated and pushed by Ansible …

Continue reading

Minimum Paragraph Widths, Revisited

by Jeff Bradberry

There's a great little demo up on css-tricks.com, demonstrating a technique that uses CSS pseudo-elements to prevent paragraphs from becoming too squeezed when flowing around floated images.

The thing is, it didn't work when I tried to do it myself.

At least, not in my preferred browser, Firefox. And what was really puzzling was that the demo did work in the exact same browser.

Then I found https://bugzilla.mozilla.org/show_bug.cgi?id=290146. Apparently, Firefox has had a bug until recently where elements with overflow: hidden set (perhaps scroll and auto as well) would fail to establish a new block formatting context when the element was at the top of the container. The css-tricks.com demo works, then, because of the 1px red border. If you turn off that css using Firebug (or whatever), you'll be able to see the problem there as well.

My workaround? I've added a 1px top padding to my <p> elements.

I hope that this post spares someone else the frustration I experienced tracking this down.

Introduction to Monte Carlo Tree Search

by Jeff Bradberry

The subject of game AI generally begins with so-called perfect information games. These are turn-based games where the players have no information hidden from each other and there is no element of chance in the game mechanics (such as by rolling dice or drawing cards from a shuffled deck). Tic Tac Toe, Connect 4, Checkers, Reversi, Chess, and Go are all games of this type. Because everything in this type of game is fully determined, a tree can, in theory, be constructed that contains all possible outcomes, and a value assigned corresponding to a win or a loss for one of the players. Finding the best possible play, then, is a matter of doing a search on the tree, with the method of choice at each level alternating between picking the maximum value and picking the minimum value, matching the different players' conflicting goals, as the search proceeds down the tree. This algorithm is called Minimax.

The problem with Minimax, though, is that it can take an impractical amount of time to do a full search of the game tree. This is particularly true for games with a high branching factor, or high average number of available moves per turn …

Continue reading