Why I'm not voting

November 04, 2008 at 11:47 AM | categories: free state project, liberty rants | View Comments

I've been a registered voter ever since I was 18 and a dues paying member of the Libertarian party for most of that time. I've always felt it was important to vote, especially according to ones conscience. I've always taken voting very seriously and have strived to always choose the best candidate -- the one who would do the least amount of harm -- the one who would stand up in defense of liberty.

Frequent visitors to this site will know that I have talked a lot about politics over the years. I've mentioned names of politicians that I've supported: Michael Badnarik, and Ron Paul. I've even dropped names of politicians I don't support: Mitt Romney. Recently I dropped out of the Libertarian party, but I remained sure that I could find a new political home, one that would respect my desires to have a principled approach to living in this democratic-republic of "ours".

Specifically, I wanted that new political home to be the Free State of New Hampshire.

New Hampshire has the most active group of liberty activists on the planet. There are a multitude of freedom oriented media, powerful voting blocs, as well as free market activists.

When I got here I wanted to get involved with everything. One problem the Free State has ... is that you can't do that. You HAVE to choose what you're going to do, simply because there is so much activism going on here that you cannot be in two places at the same time. The first thing I got involved with was the NH Liberty Alliance delivering literature on the most freedom friendly candidates running in NH. Being very disgruntled with the state of national politics, I sincerely wanted to get involved with NH local politics, believing that I could do two things:

  • Keep my principles of the non-initiation of force
  • Actually get people, that actually represent my desires, elected

This was a prospect that gave me immense hope. I wanted to come to NH and change things. Instead, NH changed me.

I began helping one of the NHLA endorsed candidates, Jason Bedrick, in his campaign for the state legislature. I asked him, will you sign the small government pledge? I thought this was a very reasonable thing for him to do, I had heard that NH was one of the freest states in the country and has the largest legislature in the country (meaning a low citizen to representative ratio) and that the NHLA was endorsing the best liberty-friendly candidates they could find, to top that off Jason Bedrick was the NHLA top pick with a rating of A++ on their scorecard. Certainly, I had to have been dealing with the most liberty friendly candidate in the country.

He would not sign the pledge. Instead he would continue to vote for increased taxes, albeit minimally, and that he would pledge to limit "the budget increase to inflation plus population growth." In other words, he could not find one single government program that he could cut in order to decrease the states budget. Later, I would find that Jason endorsed Mike Huckabee for president. Is this seriously the best that the NHLA could find?!? Helping Jason was the last political action I've taken in NH.

Instead, I have been involved with alternative forms of activism. I have been to the federal court in support of the peaceful civil disobedience of Kat Kanning and Lauren Canario who were both jailed for peacefully and silently protesting tax funded torture in an IRS office. I have engaged in civil disobedience of breaking curfew laws in Manchester city park. I have participated in open-carry litter pickups. I have sold hot dogs in violation of police orders to vacate a plot of land. I have supported a friend in peaceful protest and burning of the US Flag. Granted, none of this may seem like much, but I feel that I have been able to demonstrate my spirit of liberty with more people than I ever could by shoving junk mail in someones door or by voting.

But why am I not voting? Certainly it wouldn't take much of my time to go mark a check by someones name that could possibly make our society ever-so-slightly more free? Right?

I have been frustrated recently because I cannot find a candidate that I can support, but I didn't understand until very recently why it so hard for me to find such a candidate -- my principle that it is wrong to initiate force against another is antithetical to the very idea of voting. When I vote, I cannot vote for the lesser of evils; a lesser evil is still evil. Even from a purely defensive argument, I cannot vote for the person that will do less harm to me because that vote is seen as a mandate. It is an endorsement from me to the candidate that he should follow his preestablished platform, one that I vehemently oppose, but one that I ultimately voted for. It is a vicious cycle of buck passing. It's also not good enough that I vote for a candidate that actually will increase liberty. Sure, he may promise to decrease government, and he may actually accomplish it. But what about all that he fails to do? There may be a candidate that will abolish 15 different government agencies, but there is no candidate out there that will ever abolish them all. Even if there was, he surely would be unwilling to do it all at once. By voting, I am supporting, and ultimately condemning, everyone in this country to serve the state in the meantime. And here's the rub, while I want liberty, especially from government, I have no right to take what I consider oppression away from someone that actually wants that oppression.

What I have discovered is that it is actually impossible for someone to represent me. Therefore, it is my responsibility to assert my own liberty in my own life. I cannot rely on anyone else to fight for my liberty, nor even if I could, no democratically elected politician could ever do so without violating another persons rights. I pledge to pursue a life full of voluntary interactions with my fellow human beings, never forcing my view point on them, unless they agress against me first.

Ron Paul, you're an admirable man. I sent you hundreds of dollars in hopes that you would inspire this country towards the ideals of liberty. You did not fail me. However, I cannot vote for you ... and I won't.

Voting is the method for obtaining legal power to coerce others. --Robert LeFevre
Read and Post Comments

Wrangling my finances

October 21, 2008 at 12:42 PM | categories: cool stuff, emacs, economics | View Comments

I've gotten better at thinking about my finances over the years but I've never had anything better than a mental budget. I've never actually written anything down on paper. I've got a brand new job so I figure I've got a clean slate. Starting right now, I pledge to myself to keep a balanced checkbook at all times and to do monthly reviews of my finances looking for things to cut out of my budget.

Fiscal Conscience: Ha! How many times have you said that?
Me: Dozens of times!
Fiscal Conscience: And did you ever actually do it?
Me: No, but this time it will be different!
Fiscal Conscience: You're going to have do to better than that!
Me: Fine, I'll show you.

GnuCash is a wonderful piece of open-source accounting software. I have used it myself, dozens of times. But as it happens I inevitably stop using it. Not because the software is flawed per se, it does everything a good accounting application should do:

  • Use Double-Entry accounting
  • Support multiple currencies
  • OFX import from online banking sites
  • etc

The only thing they get wrong is the fundamental design choice they made when developing the application: they made it a GUI. Sure, GUIs are great, but in my opinion GUIs should be interfaces to a service oriented application rather than the application itself. Unless I'm sitting at my desk at home I can't use my application. I don't consider remote desktops a reasonable response to this problem due to the huge network latency issues as well as firewall problems.

I want to be able to record my transactions from anywhere. At home at my desk, at work at my desk, on my N800 when traveling, or on my phone when running around. With an application fundamentally written as a GUI this is essentially an insurmountable problem. An application written as a service can do all of these things quite easily with minimal amounts of programming.

Enter Ledger.

Ledger does not keep track of your accounts. You keep track of your accounts in a plain text file and Ledger helps you understand them better. I can update my checkbook register from any text editor, anywhere I am. Most often this is Emacs through SSH on my home computer. Because of the triviality of the file format (being plain text) I can write a simple application that takes text messages from my phone and adds them to the register automatically.

But what about all my automatic payments?

I have most of my monthly payments automatically debited from my account. This is nice since I don't have to spend the time submitting payments to X number of companies each month, but is a nightmare when it comes time to balancing my checkbook. What I have done in the past is to just import an OFX file from my bank directly into GnuCash. This works great until you realize that something is wrong with the import and your checkbook is no longer balancing correctly. For this reason alone I prefer to record each transaction I make by hand. My money is my responsibility after all.

So, I wanted to be instantly notified of any debit on my checking account as soon as it happens. This gives me the following:

  • A text message to my phone describing the time, place and amount of the transaction
  • The total balance of my account
  • A way to constantly keep an eye on how I'm spending my money without the hassle of (remembering to) signing into my bank account
  • A reminder to balance my checkbook. (tells me when my actual checking balance has been out of sync with ledger for over 48 hours.)

The central peice to this process is getting the transaction data from my bank account. My bank offers online banking but it does not offer an easy way to download my transactions. Sure it supports Quicken and MS Money exports, but its all protected behind a password protected javascript-enabled website. I wanted to use the wonderful mechanize library for python. However, it doesn't support javascript.

Enter Selenium RC.

Selenium RC is an application that can remote control a real web browser and submit and receive data. I run selenium which launches Firefox in a headless X-server (Xvfb) and continuously refreshes my online banking site and parses out my account activity. This is probably a bit memory intensive to always keep a browser open for this specific purpose. I may want to experiment with python-spidermonkey in the future and go back to using mechanize, but I think there's a lot of glue missing in that solution whereas Selenium RC works perfectly right now!

No code to share at the moment, it's all a giant hack. If a similar setup appeals to someone out there, let me know and I'll think about releasing something.

Read and Post Comments

Shortened URLs in Emacs using is.gd (like tinyurl)

September 15, 2008 at 11:11 AM | categories: python, emacs | View Comments

I've casually been teaching myself emacs lisp lately. Today I wrote a utility that shortens long urls within regions using the http://is.gd URL shortening service. There's plenty of existing code out there that is more lisp like, but this is supposed to be a learning experience for me so I did it myself. I like python and so I used python for most of the heavy lifting.

I created a directory to hold all of my emacs specific python functions: ~/.emacs.d/ryan-pymacs-extensions

I wrote the following python function, shorten_url.py in that directory:

!/usr/bin/env python
# -*- coding: utf-8 -*-

__author__ = "Ryan McGuire (ryan@enigmacurry.com)"
__date__   = "Mon Sep 15 12:27:14 2008"

import doctest
import urllib2
import re

def shorten_with_is_gd(url):
    """Shorten a URL with is.gd

    >>> shorten_with_is_gd('http://www.enigmacurry.com')
    'http://is.gd/FFP'

    """
    u = urllib2.urlopen("http://is.gd/api.php?longurl="+url)
    return u.read()

def shorten_in_text(text):
    """Shorten all the urls found inside some text

    >>> shorten_in_text('Hi from http://www.enigmacurry.com')
    'Hi from http://is.gd/FFP'
    
    """
    replacements = {} #URL -> is.gd URL
    #Only check for urls that start with "http://" for now
    for m in re.finditer("http://[^ \n\r]*", text):
        try:
            replacements[m.group()] = shorten_with_is_gd(m.group())
        except:
            replacements[m.group()] = m.group()
    for url,replacement in replacements.items():
        text = text.replace(url, replacement)
    return text

if __name__ == '__main__':
    doctest.testmod(verbose=True)

and the following lisp makes "M-x shorten-url" do the rest of the replacement work:

;add ~/.emacs.d/ryan-python-extensions to python path
(pymacs-exec "import sys, os")
(pymacs-exec "sys.path.append(os.path.join(os.path.expanduser('~'),'.emacs.d','ryan-pymacs-extensions'))")

;;Shorten URLs with is.gd
(pymacs-exec "import shorten_url")
(defun shorten-url (start end)
  (interactive "r")
  (let ((region (buffer-substring start end)))
    (let ((rt (pymacs-eval (format "shorten_url.shorten_in_text('''%s''')" region))))
      (kill-region start end)
      (insert rt)
      )
  ))
Read and Post Comments

Updated my Free Talk Live log

August 22, 2008 at 09:30 PM | categories: liberty rants | View Comments

I forget if I ever mentioned this on here or not -- I regularly (though not frequently) call Free Talk Live to express some of my opinions on various issues. I like to record these calls for posterity mostly so that I can, like with this blog, see where I have grown and evolved over the years.

Today I called in about Intellectual Property.

Check out my Free Talk Live log

I need to step up the frequency of both blog posts and calls to talk shows. Both are great fun and make me feel like I've accomplished something.

Read and Post Comments

Importing foreign (non-iCal) calendars into Google Calendar

August 19, 2008 at 03:24 PM | categories: python, free state project | View Comments

Google Calendar is highly useful. I use it to keep track of all my appointments and due dates and I get helpful reminders when dates approach via email and SMS. Not only that, but it allows me to collaborate with other people's calendars as well, and they don't even have to use Google Calendar because Google supports the industry standard iCalendar format. Things are great.

Unfortunately, iCalendar format is pretty new, and not everyone is using it.

Because Google Calendar is so useful, it is annoying when you find a calendar that is not in iCal format. Two of note that I want to follow are

Both of these calendars are running Simple Machines Forum, version 1.x which does not support iCalendar format (presumably they will in 2.0).

So I wrote an exporter: Download SMF iCal exporter

The exporter scrapes the calendar page on an SMF enabled site and dumps out an iCal compatible file.

Usage: smf_ical_converter.py -u http://yourforum.com/index.php -o cal.ics

Download a SMF 1.x forum calendar and dump in iCal format

Options:
  --version             show program's version number and exit
  -h, --help            show this help message and exit
  -u URL, --url=URL     URL of forum (up to and including /index.php)
  -n Name, --name=Name  Name of the Forum / Calendar (name goes in .ics file)
  -i EXPR, --ignore-re=EXPR
                        Ignore any event containing this regular expression
                        (specify as many -i as you want)
  -o File, --output=File
                        iCal filename to write
  -v, --verbose         Be verbose about process
  --months-backward=NUM
                        Number of months to go backward
  --months-forward=NUM  Number of months to go forward

I have this tool running in a cron job to keep up to date with the two above mentioned calendars. You can import these URLs directly into your Google Calendar:

Update 09/16/08: I uploaded version 2 of this application. It has a better README and it now supports user specific date ranges.

Read and Post Comments

« Previous Page -- Next Page »