IPv6 from tunnelbroker.net with my ddwrt based router

It's about time to get IPv6 at home. This was not as easy/obvious as I hoped. My provider doesn't give me IPv6 as default, so I have to use a tunnel.

First, the router. At home I have a Linksys WRT54GL 1.1 with dd-wrt. But not all dd-wrt roms support IPv6. In the table on the features webpage is a list of IPv6 enabled roms. I chose the newest rom for my router with voip from this site: https://secure.dd-wrt.com/site/support/router-database .

The second step is registering at Hurricane Electric to get a tunnel. The script and description in the ddw-wrt wiki about IPv6 was very helpful for getting the tunnel working. Some files are added by the script to /tmp which are really good for debbuging.

Show IPv6 addresses on linux desktop:

ip -6 addr show

Some links for testing the tunnel:

Web application for tracking weight optimized for touch device

Every morning I weight myself. For tracking this data I want to add my weight to a database using my smartphone.

To solve this problem a web app build with Python would be nice.

My solution is weight-app (fork it on github ) using Flask, Jinja, SQLAlchemy and bootstrap.

The weight can be inserted by pressing only two buttons. Additionally there is a textfield for editing values not present as buttons.

screenshot of weight-app

Pymacs -- usage example

For a recurring task I wanted to read a key in the minibuffer of Emacs and insert data from a xml file using xpath.

The simplified version of my solution using pymacs:

from Pymacs import lisp
from lxml import etree

interactions = {}

def insert():

  filename='data.xml'
  doc = etree.parse(filename)
  templates = doc.xpath('//tours/templates/template/@name')

  # list of templates to insert with numbers from 0 to n
  tlist = ["[%d] %s" % (i, templates[i]) for i in range(len(templates))]

  # show the list of templates to choose
  lisp.message("Which template (%s)?" % tlist)
  # read character
  key = lisp.read_char()
  # check if key is a number
  if key >= ord('0') and key <= ord('%d' % len(templates)):
    tempnum = key - ord('0')

    # save current cursor position
    start = lisp.point()
    # insert string
    lisp.insert("%s\n" %
                etree.tostring(doc.xpath("//tours/templates/template[@name='%s']" %
                                         templates[tempnum])[0], pretty_print=True,
                                         encoding=unicode))
    # goto saved position
    lisp.goto_char(start)

interactions[insert] = ''
# set f6 for this function (mypymacsmodule is the name of this .py file)
lisp.global_set_key((lisp.f6,), lisp.mypymacsmodule_insert)

The version I use has to modify the data from the xml file using a jinja based template.