And Then I Broke Down and Got a Tablet

Ok, I caved and got a tablet. This is a post about my experiences with the tablet and some general thoughts on the format.

I opted for the Motorola Xoom. It’s an Android device, I appreciate the Motarola build quality, and I’m very pleased with my choice. First impressions first:

  • Reading on the tablet is great. I have a Kindle, and while I respect how lightweight the Kindle is itself. Despite the extra weight, the slightly larger screen and the back light is very very nice and very welcome.
  • I don’t expect that I’ll be doing a lot of writing on the tablet, a laptop is never really going to be that far away, but I’m really surprised by how easy it is to (almost) touch type on the tablet. A number of very simple and probably straightforward innovations to the keyboard could make things so much better.
  • I think all devices need some sort of “don’t auto rotate” hardware switch. In fact, I think apple’s whole “lets get rid of hardware buttons,” movement to be really annoying. Buttons should be overloaded, sure, but I hate having to hunt through menus to modify basic behavior. Having said that, the “software control bar” at the bottom of Android 3.0 is brilliant and a good move (given screen rotation.)
  • I lament not having a Google voice widget for the tablet. Makes sense that they wouldn’t want this for tablets that had data plans, but I just have a wifi tablet.
  • The Kindle app doesn’t let you bookmark your place in periodicals. Which might make sense if you were reading the Times, but doesn’t make a lot of sense when reading fiction magazines with articles in the rage of 10k words.
  • I’m in love with the calendar application, except for the “full month view,” in which you scroll by weeks, not by months. Even with this glitch, I’m curious as to why there aren’t (stand alone) calendar applications of this quality for desktops.
  • I’ve tended to use the tablet for situations where I want to have a distraction free experience (usually for reading,) or where I want to do “computer things” in a situation where I might need to interact with other people. Having a tablet in your lap is more social than a laptop. As such, I don’t think it would ever be able to replace a “real” computer for very long, but that doesn’t make it less useful.

I’ll be writing more about the tablet experience and some cyborg features of tablet use and usability.

Onward and Upward!

New Sweater

This post comes in two parts: an update on the current knitting project and an introduction to a new sweater that I’ve started recently. See the Ideal Sweater and Sweater Stories posts for more information on my current thinking about knitting and writing.

Current Sweater: Gray and Black

I’ve been trying to write an update on my current knitting, but to be honest I’d rather be knitting than writing little updates and taking picture of the thing that I’m knitting. Also, while there’s something engaging and captivating about the long slog from the hem to the shoulder during the knitting, even though progress is always apparent, there’s not a lot to talk about for weeks and weeks while the piece grows.

I think it’s going to be a great sweater, and while it’s not the first thing I’ve really knit recently, I think it’s the first that I care to finish. There are a lot of great things about this sweater: the pattern is fun to knit, it’s the perfect size, it matches the cats, and it’s visually interesting without being busy. Also, I used Shetland yarn, and it’s really impossible to say enough about how much little things like that matter.

I’m not yet done with the sweater. As I draft this post, I’ve knit the body and the collar, and just have sleeves left to do. I knit sleeves from the top-down, and am three inches or so past the shoulder. The sleeves will be pretty straight forward and are just a matter of spending some time.

The problem with knitting sleeves from the top down is that you have to have a full sweater on your lap. In the summer this means overheating with a pound of wool on your lap or knitting at a table. Neither of which is terribly ideal. As a result I’ve started the next sweater. I’ll try and post something about the sweater as a whole when its done but in the mean time I’d like to collect a few thoughts and lessons learned so far.

  • I think the neck opening is a bit too wide. I have a crew-neck formula that I’ve been using for a while that might need to be tweaked.

    Basically three inches before the shoulder, decrease every row on both sides of the neck for an inch and a half, decrease every other row for the last inch and a half. Create a steek over the back of the neck after the first inch and a half and decrease both the front and the back at the same rate. Start at the bottom of the front steek with half the number of stitches you’ll eventually decrease (from the front.)

    In EPS terms, the total neck opening should consume a third of the total number of stitches and one sixth of the total number of stitches three inches before the shoulder seam. But divide everything in half for the front and back to get a usable number.

  • I think my gauge has changed noticeably in the last 4 years, but only the row gauge. I for one find this strange, though there’s not much I can do with it except deal with it.

  • This sweater has a number of turned hems, and I’ve realized a two important facts about knitting turned hems:

    • The conventional instructions say: knit a facing, knit a round of Purl stitches to “turn the hem” and then knit on. (Can be done in reverse, depending on which direction your going.) Don’t. Knit two rounds of purl stitches. The turn is much more sharp.
    • Knit the hem facing on two needle sizes smaller than the actual knitting. If you can knit the facing on 80-90% of the number of stitches as well (in some situations this isn’t feasible.)
    • Knit the purl stitches with the smaller needle rather than switching to the smaller needle to knit the facing.
    • Knit one more round before joining the hem in than you think you need.
  • If you’re knitting with Shetland and not planning to treat your steaks to secure them, steam the steek before cutting. Also, an extra couple of stitches wouldn’t hurt. Tragedy was averted, but it was closer than I’d like.

I’ll get more notes out (and perhaps elaborations of these points? If there’s interest.) after I finish.

New Sweater: Blue and Blue

I started a new sweater because the existing sweater was a bit to heavy and too warm. And I had yarn in the closet that was begging to be knit. This won’t be the first sweater I started knitting in August for this reason.

Also, I had the plan for the new sweater all developed and I wanted to get started: I’m an adult and I can do that.

The yarn is Shetland. Harrisville Designs “Midnight,” is the darker color, and I’m using some light blue-gray that I got from Webs a few years ago for the contrasting color. Probably the last great mill end from webs. The lighter color came in a 3 pound cone, and I’ve already made a sweater (a flop) out of the yarn and didn’t seem to make much of a dent.

The pattern itself is built around the same snowflake pattern that I’ve been using (this makes sweater number 4 with the same pattern,) but is the most reminiscent of the first sweater in the series, with some improvements for greater knitability. The effect, I hope, will be reminiscent of cables.

At the time of drafting, I’ve not yet joined the hem facing and the lower edge. I’ll probably post again about this one again after it starts looking like a sweater but before the long slog starts.

Onward and Upward!

Science Fiction Reading Progress

I’ve been mentioning what I’ve been reading as part of my weekly “accomplishment” posts, but I wanted to take the opportunity to write a slightly longer review and reflection of some recent reading.

After delaying for far too long, I’ve finally gotten through the April/May issue of Asimov’s. There are probably all sorts of reasons why double issues make a lot of sense for publishers, but I have to say that I find them a bit grueling to read. Maybe it was just this particular issue, but I found that the balance between novellas and short stories wasn’t terribly good, but maybe it was these stories, and my own tastes rather than anything wrong with the editing itself. There were some great stories: I loved Kristen Kathryn Rusch’s story, and I thought the cover story was fun but weird in that way that I don’t think Steampunk always works as well as it seems like it should. Michael Swanwick’s and Mike Resnick’s stories were high on the poignant-factor and low on the larger meaning but they worked.

I’ve still not read the June or August issues, and I’m going to try and start reading Clarkesworld. Here’s hoping I still have time to do other things after periodical reading obligations.

I also read (in about two weeks) Excision by Iain M. Banks. As I was moving to the east coast I made the decision to start going through all of the late 80s and 90s era space opera that I had totally missed, and I can’t quite recall why I chose Banks. I think there’s something about the grandiosity of The Culture that I really quite like. I found the first two really hard to grok, and now they mostly make sense. I think if I could do it again1 I’d read Use of Weapons, maybe Excision, I’d make Player of Games optional but definitely 3rd if anything and then Consider Phlebas. I think Phlebas is among the best, but without the context of the others its a bit too odd.

I’ve also been listening to podcasts: The Outer Alliance Podcast, FLOSS Weekly, FaiF, and Escape Pod. Good content, great pacing for my now daily walks, and it’s good to stay in touch with all of that content. Podcasts were something I’d listened to a lot when I was exercising or driving alone. I’ve not driven very much in the last year, and my exercise routine has only recently started to become regular. So it’s nice to get back in that habit.

What are you all reading?2


  1. And if I weren’t such an ardent traditionalist about reading series of books in the order of their publication. ↩︎

  2. And, admittedly, listening to. ↩︎

Micro-Entrepreneurship, Good Enough, and Crowd Sourcing

I read this post by one of the partners in one of the coolest web services around, you should open that in a new window and then come back.

Back? Great!

Lars, proposes crowd-funding as a way to support free software development. Basically, run a “sponsor me to develop stuff” program, but rather than fund free software as a start-up around a single project or work for a big vendor.

It’s a nifty idea, and it’s got me thinking about micro-entrepreneurship. This would be where you make or do things, but not on a big scale. The businesses you create are small, and probably aren’t completely full-time equivalent, but in aggregate it’s good enough. While this is not the most prominent form of entrepreneurship on the internet, my sense is that it’s way bigger than most people think.

We’re too used to seeing multi-million dollar venture capital fund raising, IPOs, big acquisition deals, to realize the multitude of people who are making a few to several tens of thousands of dollars doing much smaller amounts of work.

I suppose I could write a whole post on good enough economics in the vein of this post on patronage from JamesGovernor but I’ll just leave a place holder link to a wiki page, in case someone else wants to fill things in.

Thoughts:

  • Service-businesses don’t scale particularly well, any individual work can only produce so much work, and it’s hard to make individuals any more productive. In light of that, large service-based firms are unlikely to form.
  • Most people have pretty specialized skills and abilities. Self-employment, particularly full time employment makes it difficult for people to spend most of their time doing what their best at. Specialization and differing skills is also what creates a market for service-based endeavors.
  • Lacking health care and other benefits of traditional employment, it’s hard for people to be more self-employed and less conventionally-employed. Given this, doing entrepreneurial projects on a smaller scale makes more sense.
  • Some kinds of entrepreneurial activities are attractive because, while they may not produce the same level of income as a salaried position, they allow more freedom and flexibility. This is the conventional justification for self-employment, and also the reason that most aligns with the “good enough” policy.

The problem with these kinds of “little businesses,” is that it’s too easy to focus on income earning work (e.g. freelance, and client work,) at the expense of doing basic work (e.g. developing core free software, doing basic research, writing fiction.) While the crowd sourcing notion makes a lot of sense, it requires a lot of faith in the crowd. I’m also unsure of how sustainable it is: while individuals can justify small amounts of money for such purposes, organizations cannot. Without organizational support, revenue is much lower, and it probably puts the larger financial burden on the smaller users, relatively speaking.

Lately Review

It’s Friday and I have a bunch of links, notes, and accomplishments to share.

First up, jfm and I have been continuing the discussion we had about task lists in a new discussion of the /posts/mobile-productivity-challenges. I’ve also imported some conversation from facebook (to a discourse page, since removed) following up on the :Cyborg Analysis and Technology Policy post that I made this last week. I’m really really proud of the extent to which the comments and edits that I’ve gotten have made my writing and thinking clearer on these subjects.

Also, a thanks to the people who have done things like fix links and correct stupid typos. Sorry to have caused the trouble, and I’m eternally grateful for the helping hand.

Next up, I wrote a tutorial for a reader who commented in the Make Emacs Better thread. The question addressed how to load optional functionality and “contributed” lisp code in emacs, and I wrote a little tutorial on how to load .el files in emacs. I think of this as a very basic and straightforward piece of customizing emacs; but it’s sufficiently complicated and counter-intuitive enough that I think a little bit of documentation is in order.

The above also marks the debut of a documentation section within the wiki, like the code section, that I hope to update every now and then as I write tutorials and reference material that I think someone may be able to use. No promises, and feel free stash content here as well. It’s all gravy.

Speaking of the code section, I wrote a little script that I use as dbl, that I describe in the Epistle Linker. Basically this little function goes through a directory and creates symbolic links to that directory in a specified directory and mangles the names of the file (prepends a few charters and changes the extension.) You an read the code, but it makes it possible to use a service like Dropbox without disrupting your local git setup and file organization. There’s a known issue with Dropbox that makes it slightly less than ideal, but what can you do.

When I was posting the epistle-linker, I realized that I had probably forgotten to mention the fact that I have this nifty little bit of glue that uses a procmail filter (you do use procmail, don’t you?) to deposit note to a particular email address (configurable) into an org-mode file for filtering. This is ideal for emailing your brain (i.e. org-mode) an item from your phone or tablet, say.

And finally: I have an external link. I think this follows nicely from the “how to work and ‘live’ in the mobile world.” Apparently ecl, an embeded Common Lisp implementation, has been built to run on Android and iOS. How awesome is that?

That’s all I have. I (finally) finished the April/May issue of Asimov’s, I subscribed to Clarkesworld, as if I needed more short fiction to read and distract me from everything else. been I’ve reading Iain M. Banks' Excision, which has been a great deal of fun.

Other than that. It’s been a pretty quiet couple of weeks.

Managing Emacs Configuration

This document outlines the use of emacs' require and provide functions to help new users understand how to better configure the text editor. While there are a number of different strategies for organizing emacs configuration files and lisp systems and there is no single dominant best practice, consider this document if you find your .emacs or [init.el]{.title-ref}` file growing out of control.

Background and Overview

After using emacs for any period of time, one begins to develop a rather extensive emacs configuration. Emacs comes with very little default configuration and large number of configuration possibilities. Because writers, programmers, and researchers of all persuasions and backgrounds use emacs for a larger array of tasks and work profiles, the need for customization is often quite high. n Rather than have a massive emacs configuration with thousands of lines, I’ve broken the configuration into a number of files that are easier to manage, easier to troubleshoot, and easier to make sense of. These files are then linked together and loaded using emacs' native require function. This document explains that organizational principal and provides the code needed to duplicate my configuration.

I store all of my emacs configuration in a folder that I will refer to as ~/emacs/, in actuality this is a sub-folder within a git repository that I use to store all of my configuration folders, and you should modify this location to suit your own needs. Additionally, I have the habit of prepending the characters tycho- to every function and emacs file name that are my own writing. This namespace trick helps keep my customization separate from emacs' own functions or the functions of loaded packages and prevents unintended consequences in most cases. You might want to consider a similar practice.

Configuring .emacs

My .emacs file is really a symbolic link to the ~/emacs/config/$HOSTNAME.el file. This allows the contents of .emacs to be in version control and if you have your emacs configuration on multiple machines to use the same basic configuration on multiple machines with whatever machine specific configuration you require. To create this symlink, issue the following command: :

ln -s ~/emacs/config/$HOSTNAME.el ~/.emacs

Make sure that all required files and directories exist. My .emacs file is, regardless of it’s actual location, is very minimal because the meat of the configuration is in ~/emacs/tycho-init.el. Take the following skeleton for ~/.emacs: :

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; Startup and Behavior Controls
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(setq load-path (cons "~/emacs" load-path))

(setq custom-file "~/emacs/custom.el")
(add-to-list 'load-path "~/emacs/snippet/")
(add-to-list 'load-path "/usr/share/emacs/site-lisp/slime/")

(require 'tycho-display)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; Machine Specific Configuration Section
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(tycho-font-medium)
(setq bookmark-default-file "~/garen/emacs/bookmarks/arendt"
  w3m-session-file "~/garen/emacs/bookmarks/w3m-session-arendt"
  bookmark-save-flag 1)

(if (file-directory-p "~/garen/emacs/backup")
(setq backup-directory-alist '(("." . "~/garen/emacs/backup")))
  (message "Directory does not exist: ~/garen/emacs/backup"))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; Load the real init
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(require 'tycho-init)

(menu-bar-mode -1)

The first seq defines the load path. Like other configuration paths, this is the directory that emacs will look for files to load when you use require later. load-path does not crawl a directory hierarchy, so if you store emacs lisp within ~/emacs/, you’ll need to add those directories here. To see the value of the load-path use “C-h v” in emacs. I then define “custom.el” as it’s own file to prevent customize from saving configuration in my init file. Then I use require to load a number of display-related functions (from the file ~/emacs/tycho-display.el,) including the tycho-font-medium function.

Then I have a number of machine-specific configuration opens set, mostly to keep multiple machines from overwriting state files.

Finally, I load the file with the real configuration with the (require 'tycho-init) sexp. The configuration is located in the ~/emacs/tycho-init.el file. The file closes with the (menu-bar-mode -1) sexp, which is the last part of the configuration to evaluate and ensures that there isn’t a menu-bar at all.

Require and Provide

require, however, does not simply load .el files in the load path. Rather, the file needs to be announced to emacs. Accomplish this with provide functions in the file. For ~/emacs/tycho-display.el the relevant parts are as follows: :

(provide 'tycho-display)

(defun tycho-font-medium ()
  (interactive)
  (setq default-frame-alist '((font-backend . "xft")
              (font . "Inconsolata-13")
              (vertical-scroll-bars . 0)
              (menu-bar-lines . 0)
              (tool-bar-lines . 0)
              (alpha 86 84)))
  (tool-bar-mode -1)
  (scroll-bar-mode -1))

(global-set-key (kbd "C-c f m") 'tychoish-font-medium)

(setq-default inhibit-startup-message 't
      initial-scratch-message 'nil
      save-place t
      scroll-bar-mode nil
      tool-bar-mode nil
      menu-bar-mode nil
      scroll-margin 0
      indent-tabs-mode nil
      flyspell-issue-message-flag 'nil
      size-indication-mode t
      scroll-conservatively 25
      scroll-preserve-screen-position 1
      cursor-in-non-selected-windows nil)

The provide call, identifies this file as the location of the tycho-display functionality. tycho-font-medium describes the font and display parameters that I called in the .emacs file. And the file ends with a keybiding to call that function and a number of default settings.

Init and Conclusion

While the tycho-init.el file holds all of the interesting configuration options, functions and settings, it’s mostly beyond the scope of this file. When you download contributed emacs.lisp files from emacswiki, put them in ~/emacs/ and put the require call in tycho-init.el. By convention provide names map to file names but be sure to check files to ensure that this is the case.

Using this setup as a framework, you can create--without confusion--a number of configuration files to properly collect and organize your settings, emacs modes, and other emacs code and functions that you’ve gotten from other users. Good luck!

You may also be interested in a couple other tutorials I’ve collected on emacs, notably:

Interfaces in Enterprise Software

This post is a continuation of my human solution to IT and IT policy issues series. This post discusses a couple of ideas about “enterprise” software, and its importance the kind of overall analysis of technology that this posts (and others on this site) engage in. In many ways this is a different angle on some of the same questions addressed in my “Caring about Java” post: boring technologies are important, if not outright interesting.

There are two likely truths about software that make sense upon reflection, but are a bit weird when you think about it:

  1. The majority of software is used by a small minority of users. This includes software that’s written for and used by other software developers, infrastructure, and the applications which are written for “internal use.” This includes various database, CRM, administrative tools, and other portals and tools that enterprise uses.
  2. Beautiful and intuitive interfaces are only worth constructing if your software has a large prospective userbase or if you’re writing software where a couple of competing products share a set of common features. Otherwise there’s no real point to designing a really swanky user interface.

I’m pretty sure that these theories hold up pretty well, and are reasonably logical. The following conclusions are, I think, particularly interesting:

  • People, even non-technical users, adjust to really horrible user interfaces that are non-intuitive all the time.

  • We think that graphical user interfaces are required for technological intelligibility, while the people who design software use GUIs as minimally as possible, and for the vast majority of software the user interface is the weakest point.

    The obvious questions then, is: why don’t we trust non-technical users with command lines? Thoughts?

Create Better Task Items

I was paging through a list of things that I made for myself during a call I was in a few weeks ago, and was utterly dismayed by how useless the items were on the list. I wasn’t sure what needed to be done, I couldn’t remember what things meant, and I was left with the sinking suspicion that I had forgotten something crucial. I write this, in part, as a lesson to my past self on how to write good task list items.

Hopefully you’ll find it useful.

Task items must be actionable. You need to be able to read the subject or summary and know: what the project is, what kind of work it is, what needs to be done, and what very next thing you need to do is.

Tasks cannot be open ended. It’s really tempting to write tasks in the form of “work on a project” or “make progress on email backlog,” but don’t. How do you know if you’ve done the task? Is all progress the same? Is the actual work activity plainly obvious from an open ended task description?

Tasks need to concise. I’m a big fan of including some sort of status information and some sort of instruction and context with your tasks, but you need to be able to look at a task list and triage what to do next without thinking very much and without spending more than a few seconds deciphering messages from your past self. Write good summaries.

Try to organize your projects and tasks so that most of your task items are not dependent upon other items. Sometime dependencies are unavoidable, but I find if you’re clever, you can chop things up into parallel tasks that are easier to work on but that accomplish the same goal. In some cases, long strings of dependent tasks can be just as troublesome as large open tasks, because in the moment they amount to clutter.

Also your feedback and suggestions from your own experience may be of interest to all of us! I look forward to hearing from you!