This are not very useful thoughts, but it helps getting back into blogging.

Introduction

In the past I used Thunderbird for mail and feeds, but somewhen ago I switched do Evolution because it feelt (and sill feels) some-what neater integrated with Gnome, which is my Desktop Environment since some time now. But unfortunately Evolution does not support feeds, so I did not move those and soon forgot about them. Partly because there was only a small number of feeds and all of them of YouTube channels I remembered to look after anyway.

Not that long ago I then decided to start using feeds again. Mainly because I set up an IFTTT recipe for a web comic that started to clutter my Inbox. I could have disabled it, but I always forgot which page was the last one I read, so I would keep all the mails for the pages I hadn’t read yet marked as unread. I already created a filter for the mails sent for the web comic, so my Inbox was a little bit less cluttered afterwards, but I wanted my feeds back now.

I also started to follow some (more) blogs and did not want to look after all of them each time. I might could have abused IFTTT via mail for this again, but why should I do such a thing if there is software out there specialized for this use-case?!

After some time I decided to start using Liferea (The Linux Feed Reader). Most of the things I followed already had RSS or Atom feeds, but some not or not the way I liked it. So let me outline two of this cases here, my GitHub notifications and YouTube. For the third one, the Ava’s Demon web comic, there will be a own post because the things around that are bigger than just turning something into a feed.

GitHub Notifications

While GitHub has a feed for activities, there is no feed for your notifications. My “implementation” of the notification feed lacks some features and I currently do not use it, but it was still interesting to implement.

It is fully leveraging GitHub’s API. While there is a simple endpoint listing all your notifications, it does not contain the link to the HTML version to the notification (issue, PR, etc), so I needed to make more requests to get them. And because I like to over-engineer things, I did this using Ruby and Typhoeus with parallel requests. So far, so good.

youtube-viewer Integration

Since YouTube switched to Polymer its too slow for me in my Waterfox with many Addons. The issue is with my machines setup, not with Waterfox. It’s also not that slow, but slow enough for me. To circumvent this, I started using youtube-viewer.

But this means that for each video I have to manually copy the link to the video and paste it into youtube-viewer. That’s at least 4 actions for each video: 2 clicks to copy, at least one ALT-TAB to get the right terminal running youtube-viewer and one paste! I omit starting youtube-viewer here, because I only do this once and keep it open afterwards, I always have an running instance in my tmux. It just came to my mind that I have to add a youtube-viewer session that starts with tmux to my configuration, so for the future I just need a new terminal (one shortcut) and a tmux a vid (vid because it’s more obvious and easier to type than ytv).

Anyway, for Liferea I decided to transform the feed via XSLT to create links that I can open directly via youtube-viewer. I did this by “inventing” a new URL scheme for opening YT videos by ID and binding it to youtube-viewer --videoids. This requires a small wrapper to cut back the invented scheme and start youtube-viewer with the id, putting a .desktop file for that handler into ~/.local/share/applications and setting that as a scheme handler in ~/.local/share/application/mimeapps.list.

Somewhat straight-forward unless you configured your environment only in your .bashrc and not in your .profile so that Gnome cannot pick up youtube-viewer from ~/.local (where I installed it) and you need to hard-code the path. Also, the path to the handler is hard-coded (with my username), because I was too lazy to create a good install script. Maybe some time in the future if I change my distribution.

Sources

All sources are freely available in my 2feed Git repo. (Oops, no license there yet. Consider it GPLv3.)

Directly jump to the generator for the GitHub Notifications Feed or the XSLT stylesheet for YouTube Feed with youtube-viewer.

The End.

Blah.

Nachdem ich lange nach einem Theme gesucht habe, bin ich jetzt (endlich!) zu Jekyll umgestiegen.

Das neue Theme ist Neo HPSTR. Wie das Neo verraten lässt, gibt es schon ein HPSTR-Theme. Mit dem habe ich auch rumprobiert, aber das Menü gefiel mir dort nicht, das war mit JavaScript gemacht und das wollte ich nicht. Es gab das Theme auch nicht als RubyGem, was das ganze noch komplizierter gemacht hat. Neo HPSTR kommt im Gegensatz als Gem, und das Menü geht ganz ohne JS! Nur der Farbwechsel von hell zu dunkel beim scrollen geht scheinbar nur mit JS, aber solang’s nur kosmetisch ist, ist das okay.

Nachdem ich dann aber angefangen habe am Theme rumzubasteln, war das Gem dann doch ungünstig und ich wollte dann doch auf die Boilerplate-Variante umsteigen. Aber dann habe ich einfach den Zeilenumbruch aus dem Titel genommen und es war alles wieder okay.

Das (neue) Hintergrundbild ist von Annie Spratt von Unsplash

Beim Suchen nach nem Theme hat mich ziemlich gestört das überall direkt Disqus und Google Analytics verbaut ist. Neo HPSTR hat auch Disqus und GA mit drin, habe aber natürlich beides deaktiviert. :D
Aber Web-Designer packen auch überall Google Fonts und Google APIs rein, letzteres meist sogar nur für jQuery. Und CDN-Cache zählt hier nicht, jQuery hat nen eigenen CDN, der lässt sich auch wunderbar verwenden… naja, egal.

Hauptgrund für den Wechsel ist, dass ich meine Beiträge mittlerweile lieber in mit Markdown in Vim schreibe als Visuell oder als HTML im Wordpress Editor.
Dann blogge ich in Zukunft hoffentlich auch mal wieder was, jetzt wo Artikel veröffentlichen nur noch nen paar Befehle sind… ^^

octopress new draft $POST

jekyll clean
jekyll serve --drafts --livereload --incremental &
waterfox localhost:4000 &

vim $POST
kill %-

octopress publish $POST

jekyll build
octopress deploy

Die von Wordpress importieren Beiträge könnten gegebenenfalls etwas komisch formatiert sein, ich habe noch nicht alle Fehler vom Import beseitigt. Es sind auch ein paar Links hinter Bildern kaputt, das filtere ich noch, die Bilder selbst funktionieren aber.

– criztovyl

Meh.

  • Ja, Proxy, diese jenkis-core.jar ist sehr böse, die darfst du bloß nicht durchlassen!
  • Nein, sdkman, ich möchte dich nicht via curl | bash installieren!

So, auch heut' Nacht ist nicht so recht was mit schlafen...

Erstmal noch Gedanken von gestern...

Semesterplan

Ich bin mir beim dieem Projekt nicht so recht sicher, welches interne Datenformat ich nehmen soll. Anfangs hatte ich einfach nur Hashes, dann bin ich zu Structs übergegangen, war dann kurzfristig bei echten Klassen und bin jetzt wieder bei Hashes. So final kommt ICS raus, da überleg' ich ob ich das nicht auch einfach intern VEVENTs nehme. Aber wie gesagt, ich bin mir da noch unsicher.

Nun aber zu heute.

GUI Frameworks

Für meine Idee ne neue Office-Suite zu machen brauche ich so eins, aber die auswahl ist groß und alles hat Vor- und Nachteile. Ich würde dazu ja gerne mal so eine generelle Gegenüberstellung erstellen. Dabei sein sollten: GTK, Qt, WPF.

Qt beispielsweise scheint für mich ne ganz eigene Sprache zu sein, so mit QML und C/C++ was noch ne zusätzliche Toolchain braucht. Und womit das Unternehmen dahinter sein Lebensunterhalt erwirtschaftet weiß ich leider noch nicht.

Bei GTK schwirrt mir nur das Statement durch den Kopf das denen Security egal sei.

Und WPF ist nen Microsoft-Windows-only Ding.

(Edit: Ich hab JavaFX unterschlagen D:)

Virtuelle Maschinen

Hier nicht im Sinne von virtualisierten Computern sonder im Sinne der JVM. Da hab ich etwas rumüberlegt was ich eigentlich generell von sowas halte, so ganz generell ist WORA ja sehr interessant.

Gegenüber der CLI scheint die JVM ja etwas offener zu sein, bei ersterem hat Mircosoft bei den neueren Versionen noch den Patente, wie das bei Oracle aussieht wüsst ich ja auch gern. Aber wenn die JVM patentiert wäre, wär' Android wohl nie so weit gekommen. (Und Orcale hatte im Rechtsstreit mit Google ne ganz andere Grundlage.)

HTML ohne JavaScript

Was mich ja so an Web-Apps gewissen Umfangs stört, ist der JS Anteil.

Ich behaupte mal das da der absolute Flaschenhals liegt, wenn ich da dran denke das UI ja doch gerne mit Threads arbeitet, die's ja in JS nicht gibt. (Also so fühlt sich das für mich jedenfalls meistens an.)

Also warum nicht einfach ohne JS?!

An sich find' ich HTML und CSS gar nicht schlimm, also warum das ganze nicht mit was mächtigererem kombinieren? Beispielsweise mit der JVM? :o

Oder scheitert das Multithreading am DOM? Ich denk' selbst wenn das DOM nicht threadsicher ist, lässt sich doch noch genug Kraft aus Threads holen die nur stupide Daten verarbeiten und somit das UI flüssig halten. (Wobei, kommen hier bei JS Service Worker ins Spiel?)

Wie dem auch sei, HTML+CSS mit JVM wär' spannend. Allzu gern würd' ich dafür nen PoC machen...

Git, I guess?

Und weil das nicht genug ist: Git geht immer!

Da frag' ich mich gerade wie wichtig die vollständige History für Git ist.

Ich stell' mir das so vor, das nach einiger Zeit Kosten und Nutzen vom umherschleppen der ganzen History nicht mehr ausgewogen sind. Gerade wenn ich dann jetzt an umfangreiche Projekte denke: Das klonen des Repo schleift nach einiger Zeit doch so viel Zeug mit, das es irgendwann kein clone-hack-push mehr ist, weil clone soo viel laden muss.

Das lässt sich bestimmt durch ein init-and-fetch verbessern, aber auch da kommt ja die ganze History der Branch mit, die ggf dann so im Projekt verzweigt ist, das wieder alles runtergeladen wird.

Ich finde den Ansatz alles lokal zu machen gut, aber braucht es dafür die ganze, vollumfängliche History?

Aber es gibt ja GVFS (Git virtual file system).

Nun, das habe ich nicht vernünftig durchdacht. Ein ander' Mal dann.

Konfigurationsmanagement

Ich hätte ja gerne Software die Updates und neue Features voneinander trennt. Aber werd' langsam müde, ein anderes Mal mehr.

gn8!