• The arcade- and story mode of DOA Dimensions is far to easy. I hope the Tag Challenge is harder… well, I’ll be able to unlock everything

    Tuesday July 11, 2017
  • We just entered the last kindergarten-day for the big one in our calendar. Soon he is a school kid. Time flies faster since I have kids.

    Tuesday July 11, 2017
  • Btw. got “doas” already ported to Linux?

    Tuesday July 11, 2017
  • I got yesterday a super kind mail from someone who read one of my blog posts. Still kind of flashed. The internet can be a nice place.

    Tuesday July 11, 2017
  • I read now about FreeBSD on a modern laptop and about OpenBSD. Now I want one of those on my laptop again. I didn’t start Steam in ages.

    Tuesday July 11, 2017
  • Evolution of the LEGO logo t.co/iIR1iPEdg…

    Tuesday July 11, 2017
  • Es ist erstaunlich wie das Framing zu Hamburg ist und dass das so gut klappt. Obwohl die Presse da ja wohl auch gehörig getreten wurde.

    Monday July 10, 2017
  • And my server runs now FBSD 11.1 RC2

    Monday July 10, 2017
  • “Trump’s New CDC Chief Championed Partnership with Coca-Cola to Solve Childhood Obesity” It’s not an Onion-Headline t.co/pav4S0KGm…

    Monday July 10, 2017
  • New T-Shirt. The colors are great. t.co/TJ9pNIFgh…

    Monday July 10, 2017
  • I got khal and vdirsyncer running again. Now I have a working caldav-client on the cli :)

    Sunday July 9, 2017
  • Es brannten halt Autos und nicht Ausländer… t.co/uKCtTi4Qb…

    Sunday July 9, 2017
  • I blogged: Some plaintext-productivity love with Taskpaper t.co/VlFK4zFVv…

    Sunday July 9, 2017
  • iPhone

    ,

    Computer

    ,

    linux

    ,

    BSD

    ,

    Productivity

    Some plaintext-productivity love with Taskpaper

    I finally got my plaintext-todo-system together. It was a bit cumbersome because I did and could not want to use Dropbox, but it works now. The problem is that some of my machines either run FreeBSD or OpenBSD and all the plaintext-productivity apps on iOS either require Dropbox or iCloud[footnote]To be honest, I do not understand why so many iOS-apps expect a Mac on the desktop. Do so many iOS-owners also own a Mac? I would expect that most actually own a Windows-machine[/footnote]. I have a Nextcloud but the Nextcloud-client on iOS does not really integrate into iOS and nearly no one offers to sync with something else than iCloud or Dropbox on iOS.

    But there is a really good git-client on iOS: Working Copy. And there is a really good markdown-editor, that also has taskpaper-support and integrates with some workarounds with Working Copy: Editorial[footnote]It does not integrate as Textastic but that might come in the future[/footnote].

    The final piece that was missing where some reminders which work somehow automagically. There is a way to create iOS-reminders in Editorial from Taskpaper-files but there I would need to run a workflow in Editorial manually to create them. And I wouldn’t get a mail in the morning with a summary of tasks that are due, overdue etc. But I have now some scripts and cronjobs which create the mail and will send out push notifications via Pushover[footnote]I use Pushover because our Icinga2, the monitoring system we use at work, already uses pushover to send notifications when an alert is coming up.[/footnote].

    How does it work?

    I created a git-repo on my server. And have it checked out on my clients and in the home-directory of my user on the server. When I change something on the clients, I commit and push to the server. On the server there is cronjob in the crontab of my user running every minute to pull the repo. Additionally there is a cronjob running a python-script that checks if a task has an alarm set. If one is set, it will send the task as message to pushover, which sends a push notification to my iPhone. At 4 am in the morning there is an additional cronjob that runs a script that will generate a summary mail and sends it to me via e-mail.

    The scripts expect the following tags, so that they can work:

    • @today or @due[YYYY-MM-DD]
    • @alarm[YYYY-MM-DD HH:MM]

    The basis is the Taskpaper-Parser from github-user kmarchand. My push-script is a derivate from the script[footnote]Please forgive me since I am not very knowledgable in the arts of programming and just hacked around to get a works-for-me-thing[/footnote]:

     

    [code language=“python”] from datetime import datetime, timedelta from collections import namedtuple from dateutil import parser import sys import re import httplib import urllib

    tpfile = sys.argv[1]

    with open(tpfile, ‘rb’) as f: tplines = f.readlines()

    Flagged = namedtuple(‘Flagged’, [‘type’, ‘tasktime’, ‘taskdate’, ‘project’, ‘task’]) flaglist = [] errlist = []

    project = ''

    for line in tplines: try: if ‘@done’ in line: continue if ‘:\n’ in line: project = line.strip()[:-1] if ‘@alarm’ in line: alarmtag = re.search(r'@alarm((.*?))', line).group(1) tasktime = datetime.time(parser.parse(alarmtag)) taskdate = datetime.date(parser.parse(alarmtag)) #print(tasktime) #print(taskdate) flaglist.append( Flagged(‘alarm’, tasktime, taskdate, project, line.strip())) except Exception, e: errlist.append((line, e))

    today = alarm = overdue = duethisweek = startthisweek = None today_date = datetime.date(datetime.now()) today_time = datetime.time(datetime.now()) time_tmp = datetime.now() - timedelta(minutes = 1) today_time_less1min = time_tmp.time()

    for task in flaglist: if task.type == ‘alarm’ and today_date == task.taskdate and today_time > task.tasktime and today_time_less1min < task.tasktime: alarm = True #print ‘\t[%s] %s’ % (task.project, task.task) conn = httplib.HTTPSConnection("api.pushover.net:443") conn.request("POST", "/1/messages.json", urllib.urlencode({ "token": "APP-Token", "user": "User-Token", "message": task.project + " " + task.task, }), { "Content-type": "application/x-www-form-urlencoded" }) conn.getresponse() if not alarm: print ‘\t (none)’ [/code]

    It is simple, it could be probably far more elegant but it works for me™.

    In addition there is a simple shell-script[footnote]I am running it on my FreeBSD-server, thus the path to python is /usr/local/bin/python2 - when you are running Linux the path is probably /usr/bin/python2[/footnote]:

    [code language=“bash”] #!/bin/sh /usr/local/bin/python2 /home/user/python/tpp.py /home/user/taskpaper/Work.taskpaper > /tmp/taskpaper.mail /usr/local/bin/python2 /home/user/python/tpp.py /home/user/taskpaper/Personal.taskpaper >> /tmp/taskpaper.mail mail -s ‘Your Daily Taskpaper Summary’ my@mailaddress.org < /tmp/taskpaper.mail [/code]

    And here is my crontab:

    [code]

            • /bin/sh -c ‘cd ~user/taskpaper && /usr/local/bin/git pull -q origin master’ >> ~/git.log
            • /usr/local/bin/python2 /home/user/bin/tpp_alarms.py /home/user/taskpaper/Work.taskpaper
            • /usr/local/bin/python2 /home/user/bin/tpp_alarms.py /home/user/taskpaper/Personal.taskpaper 0 4 * * * /home/user/bin/taskpaper_mail.sh [/code]

    Since I am running FreeBSD on my server I have to rely on a crontab and cannot use systemd-timers.

    On my computers I am an avid vim-user and I use taskpaper.vim for having syntax highlighting and some additional shortcuts for marking tasks as done or today etc.

    In Editorial I use the Working Copy-workflow.

    It is all very simple and not very elegant. But it works and brings me the funtcionality I was missing from using apps like Todoist or on the “local” level Taskmator. And everything runs on my own machines except the delivery for the push notifications. But the only chance to get there my own solution would be to develop an iOS-app because you can’t get in any other way push notifications to your iOS-device. And if I should switch back to Android at any point, I still can use pushover. I pushover goes down, I hope there are alternatives… ;)

    Sunday July 9, 2017
  • No Dropbox or iCloud involved. But I need Pushover for the push notifications of tasks that have a due time set.

    Sunday July 9, 2017
  • My plaintext todos sync now with git between my iPhone &amp; computers, uses Editorial on iOS, vim on the comps; I get push notifications &amp;mails

    Sunday July 9, 2017
  • And now I get a summary mail every morning. Great :) #taskpaper #plaintextproductivity

    Sunday July 9, 2017
  • Next step: send me a daily overview. But that is so far finished except the mail-it-to-me-task

    Sunday July 9, 2017
  • Neat, I get now a pushover-notification when a task in 1 of my taskpaper-lists is due (when I have committed and pushed it to the server ;))

    Sunday July 9, 2017
  • Wer den @retrozirkel vermisst, @stayforeverDE hat eine schöne Starwing/Starfox-Folge rausgebracht: t.co/0x3vYk07R…

    Saturday July 8, 2017
  • Fidget-spinners with Bluetooth and Music-modules? Oo t.co/6EcYLNiFI…

    Saturday July 8, 2017
  • Learn Python 3 The Hard Way Officially Released and won’t be available for free anymore because of stupid people t.co/jzSb8YHr7…

    Saturday July 8, 2017
  • Neat, Trevor Belmont, Sypha and Alucard #Netflixvania

    Friday July 7, 2017
  • The Castlevania-anime on Netflix looks really interesting. And interestingly it seems to be a US-production.

    Friday July 7, 2017
  • Nachdem man dann Kinder mit 11 aus der 1.-3. Jül-Klasse nehmen musste, hat man das Jül auf 1.-2. verkürzt…

    Friday July 7, 2017