A Script For Remote Publishing Using gvfs And rsync

Let’s improve my „trick“ from the last post a little bit, by adding staging and qa.

Below a visualisation, in remote are the symlinks to the mountpoints of the remote directory (e.g. via GVS or SSHFS), in mirror the directories you rsync with first to get the batch file and in batch you store the batch files genearted by rsync.

  • remote
    • prod (symlink)
    • qa (symlink)
    • stg (symlink)
  • mirror
    • prod (dir)
    • qa (dir)
    • stg (dir)
  • batch
    • prod (dir)
    • qa (dir)
    • stg (dir)

vfs-rsync-upload

Creating the directory structure and the symlinks for each project and run the rather long rsync command by hand is al little bit unhandy, so I wrote a little script for that, find it in my vfs-rsync-upload GitHub Repo.

Setup a project

To set up the remotes for project (any directory) run the command below.

/path/to/mount is the mount point of the remote directory, dist the directory you want to upload and myproject is the configuration name.

$ vfs-rsync-upload setup /path/to/mount dist myproject "--exclude /piwik --exclude /blog"

This creates some files and directories:

  • a .p12g file in the current directory, containing a configuration key, which is appended to your configuration name to prevent name collisions.
  • a .p12g directory in your home („p12g“ for „publishing“) and
  • a myproject-configKey directory in the .p12g dir, with the structure outlined below:
    • remotes
      • production (symlink to /path/to/mount)
      • qa (symlink to /path/to/mount/qa)
      • staging (symlink to /path/to/mount/staging)
    • mirror
      • production (dir)
      • qa (dir)
      • staging (dir)
    • batch
      • production (dir)
      • qa (dir)
      • staging (dir)
    • sync_dir (symlink to dist)

Afterwards it synchronizes the folders in remote with the folders in mirrors, using rsync, appending the contents of the fifth argument to the defaults arguments (i.e.--write-batch=batch), but note that this will not synchronize the contents of the current directory. Maybe I’ll add that later.

Upload files

$ vfs-rsync-upload staging

This uploads the contents of dist, as you set up above. As first this will rsync the local mirror (mirrors/staging) and the directory (dist) and write a batch (batch/staging/batch and batch/staging/batch.sh). Afterwards it calls the batch.sh and uploads the changes to your remote directory. Currently only staging, qa and production are supported. In future you should be able to define your own „targets“ too.

Links

Improve SFTP Upload With RSYNC And SSHFS

SFTP upload speed isn’t the best you can imagine, but I „found“ a „trick“ to improve this.

Let’s assume we have a project folder with dist containing the files you want to upload, troet as SFTP user, example.com as address and public_html/foo/bar/proj as target folder.
The „trick“ I found is rsync’s batch mode --write-batch=name.

BATCH MODE

Batch mode can be used to apply the same set of updates to many identi-
cal systems. Suppose one has a tree which is replicated on a number of
hosts. Now suppose some changes have been made to this source tree and
those changes need to be propagated to the other hosts. In order to do
this using batch mode, rsync is run with the write-batch option to
apply the changes made to the source tree to one of the destination
trees. The write-batch option causes the rsync client to store in a
„batch file“ all the information needed to repeat this operation
against other, identical destination trees.

[…]

rsync(1)

First run rsync against any local directory, e.g. mirr. With batch mode, rsync writes a batch file containing all the changes made. It also generates a handy script you can use to apply that to any other directory. Use that to apply it to your mounted SFTP directory (use SSHFS or GVS).

Tada!

$ cd proj
$ ls
dist
$ rsync --write-batch=mybatchname -ru dist/ mirr
$ ls
dist mirr mybatchname mybatchname.sh
$ mkdir target
$ sshfs troet@examle.com:public_html/foo/bar/proj target # Asks for password unless you installed sshkey :)
$ ./mybatchname.sh target

RaspberryPi: mod_rewrite & mod_userdir: Always 404 (Raspbian)

Maybe you stumbled into a similar error, I’ve searched my self to death but now found what’s going on.

TL;DR

Setup

Let’s assume you have an index.php in /home/pi/public_html/foo/ and RewriteRule ^(.*)$ index.php/$1 [L] in .htaccess (essentially). The content of the index.php is not relevant.

Now, if you visit http://raspberrypi/~pi/foo/rewrite/this/plz you always get:
404 /home/pi/public_html/foo/index.php/rewrite/this/plz not found.
Note that the 404 is about http://raspberrypi/home/pi/... not /home/pi... on your filesystem!

This is because of RewriteBase, if you set that to /~pi/foo it works, see serverfault.com: Apache2 mod_rewrite + userdir. Solution found!

Background

You may now interrupt and say: But it worked on my Debian Notebook? Yup. Same here.

My first thoughts where about a missing configuration, but a diff of the RaspberryPi and Debian config showed nothing (at least nothing regarding mod_rewrite or mod_userdir). I then searched the internet for HOURS. Nothing.

Then I thought that the version 2.4.10 vs. 2.4.23 could make a difference, maybe the packaging, the patches. But, no, not packaging or patches. I downloaded the sources of .10 and .23 and diffed that. Too much for me.
Then the most glorious idea of all came to my mind: CHANGES. Not caps because angry, but because there are CHANGES_x.y.z files. And: Win! There, in CHANGES_2.4.16 it is:

  *) mod_rewrite: Improve relative substitutions in per-directory/htaccess
     context for directories found by mod_userdir and mod_alias.  These no
     longer require RewriteBase to be specified. [Eric Covener]

Thank you, Eric, absolutely non-ironic, that’s really useful 🙂

Also (highlighted by me):

The RewriteBase directive specifies the URL prefix to be used for per-directory (htaccess) RewriteRule directives that substitute a relative path.

This directive is required when you use a relative path in a substitution in per-directory (htaccess) context unless any of the following conditions are true:

  • The original request, and the substitution, are underneath the DocumentRoot (as opposed to reachable by other means, such as Alias).
  • The filesystem path to the directory containing the RewriteRule, suffixed by the relative substitution is also valid as a URL path on the server (this is rare).
  • In Apache HTTP Server 2.4.16 and later, this directive may be omitted when the request is mapped via Alias or mod_userdir.

mod_rewrite – Apache

RTFM!


TL;DR

RewriteBase /~pi/foo, for the why read the article 😛

Du?

Ja?
Wo bist du grad‘?
Auf Arbeit, was los?
(Pause) Kann ich heut‘ abend rumkomm‘?
Öhm, gern‘.
Kannst du mich abholen?
(Pause) Kla‘. [wacht auf]

Ich?
Du hast kein‘.
Selbst wenn, so viel davon hast du auch nicht.
Und wo’d lang geht weißt du auch nicht.
Und Platz hast du auch nicht.

Upcoming

studienplan5.rb

Ruby. Nokogiri.

Wie ich einen iCal-Parser für unseren Studienplan schrieb. 499 Zeilen purer Code, 897 alles in allem.

https://github.com/criztovyl/studienplan5

da_gallery_dl

Ruby. Typhoeus. Nokogiri.

Wie ich einen Bulk-Downloader für DevianArt schrieb. 168 Zeilen Code.

https://gist.github.com/criztovyl/10ceed8600628dfb017aec353d196c52

Beide Projekte habe ich in vim geschrieben.

Stay tuned,

criztovyl, II.
@criztovyl

Re-Enable Window Grouping in GNOME Alt-Tab

Help! GNOME stopped grouping my open windows!
– criztovyl, II., 2016

TL;DR at end of page.
You must have disabled the Alternatetab shell extension but you wouldn’t be here if you havn’t already disabled it: It’s task is to stop window grouping.

Symptoms

If you press Alt-Tab your open windows aren’t grouped while they’re still grouped when using Super-Alt. (The Super-key is also known as the Meta-key or the Windows-key.)

If you have the same problem I had, check your dconf, there should be <Alt>Tab in /org/gnome/desktop/wm/keybindings/switch-windows.

This is what causes the problem because there shouldn’t be anything. If you looked attentive you may found out that the default value here is empty. Couldn’t imagine any solution, can’t you? 😀

Don’t know what’s dconf? Not soo important, the only thing you should do is to check the key within your dconf editor. Launch it by searching „dconf“ in your overview or by pressing Alt-F2 and entering dconf-editor. Then follow the path mentioned above in the left-hand tree 🙂
You also could use the dconf command.
Anyway:

Now bring grouping back!

Reset the dconf value of „/org/gnome/desktop/wm/keybindings/switch-windows“ to „“ (None), below the simplest way.

$ dconf reset /org/gnome/desktop/wm/keybindings/switch-windows

 

Happy Alt-Tab-ing 🙂

Further information*

dconfAlternatetab shell extensionGNOME tweak tool

TL;DR

  • Alt-Tab does not group windows
  • Alternatetab extensions is disabled
  • Super-Tab works as expected
  • Solution: execute dconf reset /org/gnome/desktop/wm/keybindings/switch-windows in terminal
    or reset dconf „/org/gnome/desktop/wm/keybindings/switch-windows“ to „“ (None) manually.

* informations… still chuckling.
Windows is a trademark of Microsoft.

Hi, ich muss pupsen.

[14:53:12] b5o3ZiVFKP: hi
[14:53:23] b5o3ZiVFKP: ich muss pupsen
[14:53:27] criztovyl, II.: Hallo :)
[14:53:30] criztovyl, II.: Ich nich'.
[14:53:33] criztovyl, II.: :P
[14:53:42] criztovyl, II.: Ich hab HTTPS! :D
[14:53:48] b5o3ZiVFKP: hast du7 lust vorbei zu kommen
[14:54:05] b5o3ZiVFKP: was ist https??!
[14:54:12] criztovyl, II.: Kommt drauf an wo du bist :D
[14:54:17] b5o3ZiVFKP: zu hause
[14:54:30] criztovyl, II.: Du weißt ganz bestimmt was https ist.
[14:54:30] b5o3ZiVFKP: in frankfurt
[14:54:37] b5o3ZiVFKP: ne wads ist das?
[14:54:40] criztovyl, II.: Bin noch in PB ._.
[14:54:49] criztovyl, II.: Du kennst kein HTTPS? oO
[14:54:48] b5o3ZiVFKP: was ist pb?
[14:54:56] criztovyl, II.: hahahahaha
[14:54:56] b5o3ZiVFKP: ne was ist das?
[14:55:03] b5o3ZiVFKP: schonmal irgednwo gehört
[14:55:06] criztovyl, II.: PB = Paderborn.
[14:55:11] b5o3ZiVFKP: ahhhhhhh Oo
[14:55:14] criztovyl, II.: HTTP kennst du aber? :D
[14:55:17] b5o3ZiVFKP: ne
[14:55:25] criztovyl, II.: HTML?
[14:55:28] b5o3ZiVFKP: hä?
[14:55:32] criztovyl, II.: KDE?
[14:55:41] b5o3ZiVFKP: was?
[14:55:49] criztovyl, II.: Hach.
[14:55:48] b5o3ZiVFKP: pupu?
[14:55:56] criztovyl, II.: upup.
[14:56:01] b5o3ZiVFKP: :D
[14:56:10] criztovyl, II.: Und sonst so? ^^
[14:56:13] b5o3ZiVFKP: was glaubst du was ich am liebsten mache?
[14:56:28] criztovyl, II.: Öhm. kA :)
[14:56:42] b5o3ZiVFKP: TJA 
[14:57:00] criztovyl, II.: Mach's nicht so spannend... xD
[14:57:18] b5o3ZiVFKP: ich züchte ponies
[14:57:24] b5o3ZiVFKP: hab schon 4
[14:57:29] b5o3ZiVFKP: mein hof ist schön
[14:57:34] b5o3ZiVFKP: da gibtrs auch hühner
[14:57:39] b5o3ZiVFKP: magst du tiere?

[14:57:45] criztovyl, II.: Ja. :D
[14:58:04] criztovyl, II.: Katzen. Hunde. Und Kühe.
[14:58:16] b5o3ZiVFKP: wieso?
[14:58:28] criztovyl, II.: Wieso züchtest du Ponies?
[14:58:34] b5o3ZiVFKP: vampiere mögen kühe
[14:58:42] b5o3ZiVFKP: weil ich ponies liebe
[14:58:48] b5o3ZiVFKP: die sind voll süß und flauschig
[14:59:08] criztovyl, II.: Siehst du. Und deswegn mag ich Katzen, Hunde und Kühe. Weil ich sie mag..
[14:59:18] b5o3ZiVFKP: lollollol
[14:59:21] criztovyl, II.: Auch wenn Hunde und Kühe nicht soo flauschig sind
[14:59:27] b5o3ZiVFKP: ja hetzt vetshee ich
[14:59:36] b5o3ZiVFKP: hahahahahajha Xd
[14:59:55] b5o3ZiVFKP: ich glaube an gott
[15:00:07] b5o3ZiVFKP: wenn mna betet kann man was bekommen
[15:00:16] b5o3ZiVFKP: zum beisspiel ein po9ny
[15:00:37] b5o3ZiVFKP: was würdest du bekommen?
[15:00:40] criztovyl, II.: Das ist schick.
[15:00:42] criztovyl, II.: Ne Katze.
[15:00:53] criztovyl, II.: Ich würde ganz sicher ne Katze bekomm'
[15:00:57] criztovyl, II.: 150%
[15:01:04] b5o3ZiVFKP: ich mag katzen auch vopooolll
[15:01:08] b5o3ZiVFKP: ich hab 2
[15:01:18] b5o3ZiVFKP: eine heißt panti
[15:01:26] b5o3ZiVFKP: das heist höschen auf deutsch xD
[15:01:37] b5o3ZiVFKP: die andere heißt plüsch
[15:01:57] criztovyl, II.: Awwww
[15:02:12] criztovyl, II.: Was für ne Sprache ist Panti?
[15:02:29] b5o3ZiVFKP: japanisch und auch mond
[15:02:49] b5o3ZiVFKP: injd dein name?
[15:03:01] criztovyl, II.: kA :D
[15:03:16] criztovyl, II.: Ich frag mal das Internet, das weiß das bestimmt
[15:03:36] b5o3ZiVFKP: weißt du wozu ich brtade lust habe?
[15:04:05] criztovyl, II.: Christoph: aus dem Griechischen und bedeutet wörtlich „Christusträger“.
[15:04:11] b5o3ZiVFKP: süß
[15:04:13] criztovyl, II.: Ne, weiß ich nicht.
[15:04:19] criztovyl, II.: Verrats mir :)
[15:04:28] b5o3ZiVFKP: mhhhhhhhhzh
[15:04:35] b5o3ZiVFKP: uhhhhhhhhhhhhlelelelele
[15:04:45] criztovyl, II.: Aha oO
[15:04:49] criztovyl, II.: Was das?
[15:04:57] criztovyl, II.: Kenn' ich nich'...
[15:04:58] b5o3ZiVFKP: das ist wenn man fliegfen kann
[15:05:11] b5o3ZiVFKP: mit ecvhten flügeln
[15:05:26] b5o3ZiVFKP: o0ke ich muss weiter fliegen jetzt
[15:05:35] criztovyl, II.: ukay, cu
[15:05:37] criztovyl, II.: Viel Spaß.
[15:05:38] b5o3ZiVFKP: tschauiii
[15:05:41] criztovyl, II.: bb
[15:05:41] b5o3ZiVFKP: love u
[15:05:44] criztovyl, II.: <3

Gefahr

Gefahr.

Aber sie ist nicht abzuwenden. Oder ist sie gar keine? Doch, ist sie, nur jeweils eine andere, ganz andere.

Opti-pessimistisch wird auf Scheitern gesetzt, irrational auf Erfolg. Aber so irrational ist’s gar nicht. Doch, oder?

Jedenfalls ist der Ausgang ungewiss und der Realismus fort.

Gefahr?

Gefahr?

Gefahr?

Gefahr?

Angst.

Angst?

Vertrauen!

Selektive Internetnutzung

Ich liege mal wieder nach einem Tag mit Datenmüll und rumprogrammieren im Bett und kann nicht schlafen weil es zu spät ist. Dann schreib ich msl wieder was 🙂

Bestandsaufnahme

Vorhin ist mir in den Kopf gekomnen, zu was für einer Plattform ich Joinout.de machen will, dazu aber später mehr. Mein Gedankengang hängt damit zusammen, wie ich mich im Netz bewege. Da ich aus Gründen kein Facebook nutze, bin ich immer auf der Suche nach interessanten Inhalten. Die Grundlage dafür sind meine Podcasts, YouTuber, ganz altmodisch Newsletter, Feeds und und natürlich mein öffentlich-rechtlicher-Magazin-und-Doku-Datenmüll.

Podcasts sind (per Definition?) über Feeds abonnierbar, da bin ich plattformunabhängig. Auch Kommentare brauchen meistens nur eine Mailadresse und einen Namen.

Bei YouTube sieht das schon wieder anders aus, auch wenn es möglich ist Kanäle via Feed zu abonnieren, für Kommentare braucht es dann ein Googlekonto.

Für Newsletter wiederum braucht es nur eine eMail und ein gut organisiertes Postfach mit Unterordnern sowie einen Client mit genügend Filtern, vorzugsweise nicht webbasiert.

Feeds brauchen auch „nur” eine passende Anwendung und oft sind sie bereits in Mail Clients integriert.

Bei den ÖR ist es wieder ein bisschen anders, da gibt es verschiedene Mediatheken die meist keinen guten oder überhaupt keine Feeds haben und dann gibt es auch noch eine handvoll davon. Aber das Problem ist schon gelöst worden.

Für die verschieden Mediatheken gibt es MediathekView, eine Anwendung die alle ÖR-Mediatheken in einer Oberfläche bündelt und jeden Inhalt zum An- und Spätergucken vereint, wobei sich durch letzteres die 7-Tage-Lösch-Regel umgehen lässt.

Praxis

Für Feeds, eMail und Newsletter habe ich lange Thunderbird genutzt, bin dann aber zu Evolution gewechselt

Meine Feeds, inklusive YouTube, habe ich beim Umzug erstmal nicht übernommen, sammle sie mir jetzt aber nach und nach wieder in meinem Feed-Reader „Shorts” auf meinem Smartphone (Ubuntu Touch) zusammen.

Ich habe etwa 10 Newsletter abonniert, lese aber derzeit nur 3 oder 4 regelmäßig und die anderen sporadisch. Alle haben in meinem Postfach ihren eigenen kleinen Unterordner.

Auf YouTuve kommentiere ich seltenst, auch wenn ich ein Google-Wegwerfkonto habe.

Für meine Podcast nutze ich „Podbird” auf meinem Smartphone. Avonniert habe ich hier etwa zehn und höre alle regelmäßig.

Idee

So, für die Idee bin ich jetzt zu Müde, aber meinen kleinen Beitrag über „timf” zu lesen sollte helfe sie auch erstmal so (nicht) zu verstehen.

Links

Hehe, da ich von meinem Smartphone aus blogge und es spät bzw früh ist nur Sticheworte:

  • MediathekView
  • Podbird
  • Shorts

gn8.

 

Gimp Flames – Hintergrundsuche

Flames

Flames

Juhu,

ich hab in letzter Zeit (mal wieder) etwas mit Gimp rumgespielt, wollte mir ’nen schickes Hintergrundbild machen, weil ich mal wieder auf Unsplash rumgeschaut habe, Kuldar Leement’s Digital Art entdeckt habe. Aber da ich nicht wirklich kreativ bin, mach ich nur zufällige Formen, hier mit unter anderem dem Gimp Flames Plugin ^^

Hier noch ein paar andere Bilder die ich so generiert habe:

Plastisches Rauschen; x minimal, y maximal.

Gimp, III.

Flames, VII.

Gimp, VII.

Flames, X.

Gimp, X.

Gimp, XI.

Gimp, XI.

Gimp, XII.

Gimp, XII.

Gimp, XIII., aber nicht so gut erkennbar

Gimp, XIII.

Und hier noch ein paar andere Dinger die ich so spontant gemacht hab ^^

Gimp, VIII.

Gimp, VIII.

Schrifthintergund Barnsley 3

Gimp, VI.

Schrifthintergrund Lava

Gimp, V.

Schrifthintergund Plasma

Gimp, IV.

Barnsley 2 + Wolken

Gimp, II.

Men'o'war, Barnsley 3 Maske und Barnsley 3 mit plastischem Rauschen als Maske

Gimp, I.

jStringTool – Muster-Spiel-Werk-Zeug

Hey du, ich hab da mal ’nen Werkzeug gebaut.

Und was für eins?

Eins für Reguläre Ausdrück.

Kuhl.

Jau, ich bin wieder online und das erste worüber ich schreibe ist ’nen Werkezug. Is‘ halt iwie einfacher als über anderes zu schrieben.

Gebaut habe ich das Werkzeug, ganz einfach, weil mir bisher keins grafisches1 bekannt ist das das kann, was ich will: Muster in Zeichenketten suchen und benutzerdefiniert anzeigen. Simpel.

Wie das Präfix schon andeutet habe ich das Werkzeug in Java geschrieben. Die Nutzeroberfläche habe ich mit SWT umgesetzt, mithilfe meiner Java Werkzeuge.

Aufgebaut habe ich die Oberfläche erst mal in zwei Spalten. Links die Eingabe für die Zeichenkette als mehrzeiliges Textfeld und rechts in der ersten Zeile die Mustereingabe als einzeiliges Textfeld, eine Checkbox um die benutzerdefinierte Ausgabe zu aktivieren und ein Textfeld für das Muster der Ausgabe. Darunter ein mehrzeilige Textfeld in dem dann alle Funde (benutzerdefiniert) ausgegeben werden. Darunter wiederum eine Checkbox um die Mustereingabe uninterpretiert² zu nutzen.

Screenshot jStringTool

Screenshot jStringTool

Funktion

  • Muster werden als reguläre Ausdrücke angegeben.
    • bei ungültigen Ausdrücken wird das Muster rot
  • Funde werden rot hervorgehoben
  • die benutzerdefinierte Ausgabe ersetzt alle $n Ausdrücke durch die dazugehörige Fundgruppe, %n kann für Zeilenumbrüche genutzt werden.

Zukunft

  • dynamisches speichern aller Daten
  • Manipulation einzelner Fundgruppen (teilen, zusammenfügen, ersetzen)
  • Flags für RegEx
  • dynamische Größe der Textfelder

Links


1 im Sinne einer grafischen Nutzeroberfläche

² Programmiererenglisch „quoted“

Gedanken zu einer dezentralen Enzyklopädie

Derzeit gibt es im Internet viele verschiedene (kleine) Wikis, die sich alle mit anderen Themen beschäftigen und sich meistens auf ein spezielles Fachgebiet (eine Domäne) beschränken. Meine Idee war, meinem Plattformgedanken, den ich noch niederschreiben muss, folgend, dass jedes Wiki einerseits ein Zugangspunkt zu einer großen, dezentralen Datenbank ist, die mensch dann, auf die Domäne des Wikis bezogen, durchsuchen kann und andererseits einen Teil dieser Datenbank stellt und in diesem die Domäne behandelt. Die Suche in einem Wiki würde dann vorzugsweise auf Seiten im Zugangspunkt-Wiki verweisen und erst nachrangig auf die anderer Wikis bzw. (globale) Begriffserklärungsseiten, wobei die Rangfolge der verschiedenen Wikis konfigurierbar sein soll.

Ein Beispiel:

Gehen wir mal von einem Wiki zu einem fiktiven Spiel aus, nennen wir es „Öllp“. Die Datenbank des Öllp-Wiki würde dann nur aus Artikeln bestehen, die sich in dieser Domäne befinden, bspw. spielinterne Gegenstände, die Geschichte im Spiel, die Geschichte des Spiels und Seiten zu den Entwicklern, da diese größtenteils in anderen Domänen irrelevant wären. Es könnte aber bspw. die Seite zum Spiel selbst in einen Wiki zu Spielen zu finden sein. Nehmen wir weiterhin an, in dem Wiki existiert eine Seite die sich mit einem Brennstoff innerhalb des Spieles beschäftigt und über den Brennwert des Stoffe informiert. Wenn der Nutzer/die Nutzerin dann nach „Brennwert“ sucht und keine Seite in Öllp-Wiki zu finden ist, erscheint eine Begriffserklärungsseite, die die Seiten anderer Wikis auflistet, die diesen Namen haben, oder er/sie wird direkt auf eine der Seiten weitergeleitet, die er/sie als präferiert angeben hat, bspw. die Wikipedia.

Das war’s auch schon, vllt greif‘ ich den Gedanken ja später nochmal auf. Als nächstes schreibe ich dann einen Artikel über T9 für Smartphones.

.bashrc.d | Concept: Repository Index File Format

Currently I’m doing concept coding for using the repositories. The initial plan was to use JSON files but now I will use a simpler file format because using JSON Bash-only is unnecessary hard. The format will be a line and white-space orientated one, where a line is a script definition containing two parts, separated by a white space, first the name and second the (relative) path to the script file.

So now the file format looks like this:

script1 path/to/script.sh
script2 path/to/script.sh

timf: DaFeed

timf

timf ist meine Idee einer Internetplattform, wobei sich die Idee derzeit noch konstant weiterentwickelt. timf steht für „Thanks, I am fine.“.

DaFeed

DaFeed (engl. Aussprache), ist meine Idee, wie ein Stream in einem sozialen Netzwerk aufgebaut werden sein sollte. Um die Idee zu beschrieben, werde ich ihn mit einem Facebook-Stream vergleichen, wie ich ihn als informierter Nicht-Facebook-Nutzer wahrnehme an der Seite jeweils eine Visualisierung dazu (zum Vergößern auf das Bild klicken).

Facebook Stream (CC BY-SA 4.0)

Facebook Stream (CC BY-SA 4.0)

Bei Facebook gibt es eine riesige Masse an Elementen, die in den Nutzerstream möchten. Nicht alle diese Elemente kommen auch in den Sream, da Facebook sie anhand (geheimer) Kriterien filtert. Es gibt aber die Möglichkeit, auf jeden Fall im Stream aufzutauchen, aber nur gegen Bezahlung. Bei Facebook wird das, sehr treffend, „Bewerben“ genannt. Da Facebook von den Einnahmen aus diesen Geschäften lebt, haben sie ein Interesse an einer Filterblase, um möglichst viele andere Nutzer dazu zu bewegen, ihre Elemente (Beiträge) zu bewerben.

timf: DaFeed Stream/Feed (CC BY-SA 4.0)

timf: DaFeed Stream/Feed (CC BY-SA 4.0)

Ich möchte mit timf: DaFeed einen anderen Weg gehen. Mir ist bewusst, das alle Element in einem ungefilterten Stream zu einem unübersichtlichen chaotischen Stream führen würden, daher wird auch DaFeed Elemente filtern. Dies wird aber so stattfinden, das der Nutzer mehrere Kategorien hat, anhand derer er seinen Stream filtern kann, bspw. Freunde, Familie, Arbeit, Unterhaltung, usw., und somit einen Feed erhält, der dann nochmals durch einen anderen Algorithmus gefiltert werden kann, der durch den Nutzer sowohl einsehbar und konfigurierbar als auch selbst erstellbar ist.