custom keyboard layout

i'm currently using this xmodmap:

   cat /home/joachim/.Xmodmap
   ! Map umlauts to RIGHT ALT + <key>
   keycode 108 = Mode_switch
   keysym e = e E EuroSign
   keysym c = c C cent
   keysym a = a A adiaeresis Adiaeresis
   keysym o = o O odiaeresis Odiaeresis
   keysym u = u U udiaeresis Udiaeresis
   keysym s = s S ssharp
   ! disable capslock
   ! remove Lock = Caps_Lock

with the command:

   xmodmap /home/joachim/.Xmodmap

problems: after a suspend 2 ram - cycle i have to execute this again

solution:

create a layout, supply it upsteam and use it like:

   loadkeys my_new_keymap
 http://www.tldp.org/HOWTO/Keyboard-and-Console-HOWTO-15.html

virtual keyboard

this is another long term project. i want to virtualize my keyboard to get:

  • a keyboard multiplexer
  • rewrite key-codes & create new shortcuts

interesting hardware (arduino):

raspberry pi virtual screen

using the hd4000 vdpau extension it should be possible to encode a xorg virtual screen in realtime so that a h264 encoded stream can be sent to a monitor with a raspberry pi attached which does in hardware decoding.

Raspberry_PI_virtual_screen

thunderbird

Thunderbird - some ideas to make thunderbird a better email client

keepassx 2.0 chromalpass extension

keepassx and keepass are very similar tools. the main difference is that the community split and the keepassx tree uses Qt while keepass use c#(mono). i tried keepass 2.31 recently but some mono widgets look very broken and since it is mono i can't use that on linux mono isn't open source. i fancy Qt on the other side.

a very conclusive feature explanation can be found here:

keepassx2 is a nice password storage but unlike keepass, it does not support keepasshttp

  • todo: extend keepassx2 with the keepasshttp protocol so keepassx2 can be used as keepass as a backend to passifox/chromeipass

browser extension plugins:

source code of both browser plugins:

eMail via websocket

over the long run websockets might replace traditional sockets. therefore it would be nice to query/send emails (client to server) using WebSockets. so nobody use would be blocked by stupid firewall configurations anymore.

GPG subject encryption

GPG encrypted mails don't include the subject. this has to be changed.

usb/bt client mode links

boot from n900 (emulating an usb stick)

using fr 1.3

nice, it boots grml64 with:

  • scp grml64_2011.05.iso /home/user/MyDocs/grml64_2011.05.iso
  • ssh n900
  • cd /lib/modules/2.6.28-omap1; rmmod g_file_storage.ko; insmod g_file_storage.ko file=/home/user/MyDocs/grml64_2011.05.iso

(ignore the dialog which is probably started by 'ke_recv' and '/usr/sbin/osso-usb-mass-storage-enable.sh')

  • plug your phone into your pc
  • enter bios and boot from usb device (on my desktop pc i get 2 usb devices, i select device 0)
  • after a short period of time the grml boot menu should appear

Note to self: winxp elms iso did not boot, nor did other iso images. there needs probably be some conversion...

many thanks toDocScrutinizer#maemo@irc.freenode.net

usb:

bt:

usb host mode (n900 related):

emulate a modem device for secure email retrieval

most mobile devices today have a head-phone plug; together with a unsecure internet-caffee (and a browser) computer this could be used to emulate a modem device for small email or even messaging.


webserver with p2p properties using http

concept: no central storage but content gets added in a centralized fashion, therefore one server is a dedicated host, all others are clones until they are assigned to be dedicated.

technology:

  • rsa (for encryption)
  • js
  • wiki system

why? imagine dokuwiki running entirely in javascript and on top of containers (which do contain the files/edits).

talking about toilets

writing the last post reminded me of something i had been discussing with my father a few years ago. still this technology isn't used although it is so obvious and easy:

normal toilets usually have a ventilation system on top of the room (on the ceiling) above the toilet. if you don't have that at home don't bother - at least this way it is done in nearly every public toilet.

the problem with that it is not efficient at all. it is a symptomatic solution. it would be best to install the main 'ventilation system' right into the toilet so that no air can get out of it.

  • while someone is using it the air flow could be reduced
  • while the toilet has not been flushed and nobody is sitting on it the flow could increase until it is flushed

there could be other optimizations but the basic idea is covered by this.

new patents on fingerprint reading displays by apple

i think that this is not worth a patent. it is only logical to do this. the challenge lies in building a display and - again - creating a widget library with this kind of input device. just to demonstrate how trivial it is i would like to name a few ideas:

  • a display could also read how hard you press it
  • it could combine this to other sensor readings as: IR or a camera in the display monitoring your hand
  • the display could be a microphone membrane. since echo is very slow (about 300m/s) this could be used to detect who is speaking (if hold in front of you, not as you would phone normally). this could be used to minimize other sources of noise. since the other source (from a different angle meaing != 80-90 degrees) would result in being canceled out.
  • using fingerprint reading could also be used to customize the phone. maybe there could be a automatic profile switch.
  • i could think of all sorts of sensors combined:
    • wireless lan (used for signal triangulation)
    • cameras could be used to measure user activity to save power, they could disable the phone in the pocket automatically, for instance is is the technology we see applied in nearly every toilet. i quote:
Geberit Infra Red Urinal Flushing
HyTronic Urinal electronic AC (Art. No. 115.825.00.1)
The Geberit urinal sensor flush consisting of an electronic sensor that enables automatic flushing after use. Use for single stall urinals flusher, it is fully programmable and includes pre-flush setting, automatic flush trigger. Smart water saving technology.
  • ad-hoc networking using ipv6 could be used to archive a long term goal: easy setups, reliable data transfer, secure connections. see the latest 802.11s draft using mesh networking!

i could go on.

the point is, what apple does is not worth a patent. the special thing is actually producing such a device and having a good work flow.

context sensitive events

before anyone gets a patent on this (i bet there is one already) here the idea:

many laptops/netbooks/notebooks have a video camera included already. new screens might have a camera right in the screen. so every pixel is also a camera pixel (as far as i understand this). there was something on heise.de some time ago.

my idea is this: once we can track the uses eye we can send events to the coordinates on the widgets the user is looking at. this is some kind of context sensitive reading.

i could imagine a lot of funny things:

  • you read a book, the next few lines will only pop up if you read the lines before
  • a lens could zoom into the screen on the place you are looking at (this is called fish-eye in ida pro for example)
  • combined with left eye lid close vs right eye lid close one could also put events as leftmousebutton ...
  • when the computer detects that the user is tired it could tell him to have a break

lol, gerade gestern hab ich den eintrag verfasst und ratet mal was heute auf heise.de steht:

copy and paste stack

consider you want to copy'n'paste several items (words and numbers) from one webpage or textfile into a form on a webpage. you would have to use alt tab to switch between both applications. and you would have to do that multiple times. on linux there are two copy'n'paste buffers:

  • A) ctrl+c | ctrl+v
  • B) marking something with the cursor (selecting text using LMB=leftmousebutton) and to paste: MMB in a form field (MMB=middlemousebutton)

kicker is the application of choice since it can store multipe buffers of the buffers mentioned in B). so one can:

  • select several texts already and all are stored in klipper.
  • a context menu in klipper helps to select the buffer which can be pasted with the MMB
  • finally once can paste the selected buffer with MMB of course

this work flow is great for many things but it is still not good for filling forms

the solution

  • kicker can hold several items (those you selected using LMB and drag)
  • you can use kicker to select a different buffer used to paste

what kicker does not offer:

  • a feature which works like a stack. once you used a buffer with MMB it vanishes from the list or at least is not selected for the next paste anymore

this could be done in several ways:

  • way 1: when kicker is in stack mode you add several items to the stack
    • after you selected the last item you switch the application
    • now (as you still know the last item) you search the right form and paste it
    • right after the paste a bubble in kicker pops up and informs you that the top item was dropped and also what the next item is
    • knowing the next item in the stack (informed by the bubble) let's you assign the next form field
    • ... (this goes on until the stack is empty)
  • way 2: when kicker is in stack mode you add several items to the stack
    • your mouse cursor changes (a little stack item is appended) and also there is some text sticked to your mouse cursor
    • now you search for the right form and you press MMB (the buffer is dropped) and the next item in the stack is sticked to the mouse cursor
    • ... (this goes on until the stack is empty)

i like both concepts. the "way 1" is probably not as good as "way 2" but that depends on what gui-design-guideline you follow. the "way 2" seems like copy'n'paste but the big difference is that you paste using MMB instead of LMB release. and of course you don't have to hold the LMB until you want the item to be released.

i tend to like the "way 2" better. i doubt that this is easy to make that cross platform but who knows...

linux audio

often my sound does not work anymore or the alsa drivers i'm using are borked (i notice this when i reboot the system i have restart the "/etc/init.d/alsasound". i ignored this since using hibernate-ram all the time and there it works. however restarting alsa (this implies unloading/loading all sound modules) usually results in crashes many if not all applications using sound. we need to fix a few things here:

  • the soundsystem must be designed to be restarted any time (alsa/pulseaudio and others)
  • the program must be able to reconnect to the sound system by any given time
    • pulseaudio breaks this currently
    • alsa does this as well

why am i writing this, what is special about this? compare your application using the soundbackend (alsa/pulseaudio) to a browser which looses the network connection. for example you could be disconnected to the internet or your network cable was unplugged. some javascript programs usually seem to hate this and many errors pop up but are a reconnect you can resend the POST command or simply reload the page and you can resume your work. (still there are possible conditions with fatal errors concerning your workflow as loosing all form field contents).

  • still audio currently can't reconnect which is pretty bad.

consider this: you are playing a game and you have to restart your audio system. either the game crashes or if you are lucky only sound is missing. although other programs can use the reinitialized soundsystem the game still has no sound until being restarted.

math scripts

ich arbeite gerade oefter mit scripten und komme oft an den punkt wo ich nicht weiss wie man ein symbol zu interpretieren hat oder wie man eine mathematische definition richtig interpretiert.

wichtige verbesserungen im allg.

  • mehr beispiele
  • nicht nur zu spezielle beispiele auch groessere (oft sehe ich, dass die autoren eigentlich immer den gleichen quatsch von anderen abschreiben aber sich selber nix neues einfallen lassen)

aber warum ich diesen eintrag eigentlich schreibe ist ein anderer grund:

die meisten scripte sind in latex geschrieben:

  • released das werk unter CC (creative commons) und legt den tex source bei damit man die fehler fixen kann oder damit man beispiele hinzufuegen kann
  • macht zusammenhaenge klarer: z.b. gibt es da graphviz und das ist ne sache von 5min und man hat das gut visualisiert

nun aber selbst das ist noch nicht das warum ich dieses posting mache, was ich will ist folgendes:

ich hab vor einiger zeit mal mit dem ti taschenrechner gearbeitet. das fuehlt sich an wie oktave und ist ein gutes geraet fuer lina. da definiert man A(x) beispielsweise und spaeter kann man dann einfach A(5) schreiben und bekommt dann die loesung (CAS halt).

ich will ein script in der art erstellen, dass es ein interaktives mathebuch wird. also man hat z.b. ein beispiele A(5,3,2,1) und das kann man dann z.b. einfach schnell umschreiben zu A(5,3,1,1) und bekommt gleich den neuen output inline angezeigt. aber wichtig: das soll nicht nur fuer beispiele so sein, sondern auch gleich fuer das ganze dokument gelten. alle definitionen usw muessen sozusagen programmcode sein, damit man z.b. einfach eine menge von zahlen auf eine definiton anwendet und sieht wie die definiton die menge transferiert. wie man das fuer unendliche mengen macht wird man noch sehen aber viele sachen sind endlich definiert oder einleuchtend wenn man ein endliches beispiel verwendet.

ich will sozusagen die interaktive mathePedia welche zugleich aus programmcode besteht und aus fliesstext und beispiele werden on the fly erzeugt.

vermutlich braucht man um das umzusetzen erst mal ne neue programmiersprache. das wird wohl ein zwischending zwischen:

  • oktave (CAS)
  • tex/latex
  • mathML
  • wiki / diff basierte changes
  • git (version tracking)
  • gnuplot (graphen)
  • graphviz (graphen)
  • ev. java/java script

schaut euch bei der gelegenheit auch mal www.wolframalpha.com an. das geht schon in die richtung allerdings ist das kein community projekt und d.h. weniger geeignet als grundlage.

hierarchical chat for finding ppl helping to solve your issue

in general this can apply to most topics not only software usage/development. we focus on the later of course.

irc is one of the best distributed chat platforms (there are others as psyc, http://www.psyc.eu/intro.en.html) which also do a good job.

some problems are only solved by qualified people or at least solved much faster. the biggest issue is finding these. a solution is IRC! IRC has so many groups of different interests concentrated in their respective channels. for example you are interested in qt development: google for "irc qt" and you will find many servers/channels you might want to visit.

irc has some drawbacks:

  • if you are not connected actively you will miss the spot (you can't read ongoing discussion if you are not connected to the network). channels don't have a history. IRC is very different from IM as there is no offline messaging meaning you can't write a message to someone who is not online.

we need a platform which has this capabilities:

  • offline messaging
  • channel history
  • a notification system (for example to tell someone, hey i'm online)
  • hierarchical chat per packet in portage for instance or per packet group as kde would be one
  • efficient broadcast capabilities (or multicaast), for instance XMPP (jabber) scales very bad

linux mount

issue - which program still uses the damn resource (blocking my umount?)

wenn man unter linux oder mac os x eine cd oder ein usb stick mountet, dann kann man nach lust und laune mit den daten spielen. das problem ist, wenn man das medium entfernen will. beide systeme warnen einen, man kann das medium nicht "unmounten" da noch referenzen auf das medium existieren. z.b. eine instanz von konqueror, eine offene shell die auf dem medium arbeitet oder ganz gemein ein cache-plugin vom konqueror das sogar nach dem "tab close" eine referenze hällt. nun findet man aber garnicht raus wer eignetlich der blocker ist.

lösung:

warum nicht einfach die prozess id angeben, dann kann man sich wenigstens überlegen wo man suchen kann!

handynummern besser merkbar machen

eigentlich nichts neues, da das in den usa schon verwendet wird. aber ich glaube das ist wieder etwas in vergessenheit geraten.

ein beispiel: die nummer 019012356 kann man sich schlecht merken

loesung: wir verwenden t9 und schauen uns die t9 tastatur an

1 2 3    []     [abc]  [def] 
4 5 6    [ghi]  [jkl]  [mno]
7 8 9    [pqrs] [tvu]  [wxyz]
  0

Der Algorithmus muss nun Worte finden die z.B. folgendem 'regular expression' folgen:

0[abc][wxyz]01[abc][def][jkl][mno]
-> 0az01belo naja kein so gutes Beispiel aber ich hab auch nicht lange gesucht

Vielleicht geht das nicht bei allen Nummern aber vermutlich bei vielen. Was man dazu braucht ist nur ein Woerterbuch in vielen verschiedenen Sprachen und etwas Phantasie.

ext3 wiki erweiterung

In Wikis wird immer nur bestehender Inhalt geändert und letztlich wird die Änderung gespeichert. So kann sichergestellt werden, dass vorherige Revisionen wieder hergestellt werden können.

Es wäre super, wenn man unter ext3 ein weiteres Dateiattribut einführen würde, welches diese Funktion für Textdateien implementiert. Z.b. könnte so jede Änderung in /etc/fstab welche ein Programm oder User macht rückgaengig gemacht werden.

Das Attribut einschalten:

chmod +wiki /etc/fstab
moved /etc/fstab into wiki-like section of the file-system.
wiki-like version system will start from current file content [1]

Für alle Dateien unter /etc/ das wiki-Attribut einschalten

chmod +wiki /etc/*
moved /etc/firstfile into wiki-like section of the file-system.
moved /etc/secondfile into wiki-like section of the file-system.
moved /etc/... into wiki-like section of the file-system.
wiki-like version system will start from current file content [1]

Das Attribut ausschalten:

chmod -wiki /etc/fstab
moved /etc/fstab from wiki-like filesystem back to the normal file system
Note: you will lose all your [31] changes, sure (y/N)

Revision 3 von /etc/fstab ansehen:

ext3wikifs -getrevision 3 /etc/fstab

Unterschied zwischen Änderung 3 und 6 anzeigen:

ext3wikifs -getrevision 3 6 /etc/fstab

Implementierungsplan:

  • Beim Öffnen einer Datei wird die letzte Revision geladen, keine vorherige, da so Rückwertskompatibilität garantiert werden kann.
  • Für Revisionssprünge wird ein ext3 spezifisches Extraprogramm benötigt.
  • Programme können beim Öffnen der Datei nachfragen ob es sich um eine normale Datei (regular file) handelt oder ein (wiki file), die Konsequenzen habe ich mir allerdings noch nicht überlegt.
  • Programme wie ls bekommen nur die Dateigröße zurück wo die letzte Revision wirklich benötigt. Ein Problem könnte sein, dass Porgramme wie "df" dann nicht den wirklichen Platzbedarf ermitteln können.

Vorteile:

  • Man müsste keine Angst mehr haben mal eine Änderung in /etc/ zu machen und hätte nicht immer 20 Backupdateien wie /etc/fstab_backup or /etc/fstab.orig rumliegen.
  • Beim editieren von Dokumenten (z.B. latex) könnte dies versehentlich gemachte jedoch vergessene Änderungen wiederherstellen.

Nachteile:

  • Es wird ein extra Programm benötigt um Dateirevisionen abzufragen oder zu setzen. (Dies lässt sich aber nicht umgehen, da normale Programme nicht direkten Zugriff auf das Änderungssystem erhalten sollen. Über "libraries" wäre dies jedoch machbar)
  • Plattenplatz steigt ev. unbemerkt an und wird von "df -h" nicht richtig angezeigt.
  • Implementierung ist Zeitraubend

Schlusswort

Zu vergleichen ist das vorgeschlagene System mit der Funktionalität von der Wikipedia (einzelner Artikel) und den bisherigen implementierungen von ext2/3. Klar ist warum man dies nicht als userspace Programmerweiterung realisieren sollte, da dort dann jedes Programm diese Unterstützung mitbringen müsste und somit viel mehr implementiert werden müsste.

T9 Erweiterung

T9 arbeitet intern mit einer Datenbank und erkennt worte durch den Abgleich mit dieser. Neue Worte muss man aber meist Buchstanbenweise eingeben. Da ich mal ein Programm geschrieben habe, welches Wahrscheinlichkeiten fuer Buchstabenfolgen (z.B. folgt dem a oft ein e bei Umlauten) berechnet dachte ich mir, man koennte ev. diese neue Methode nutzen um daraus Deutsch klingende Worte abzuleiten. Man muesste nun ueberpruefen in wie fern man dieses Konzept nutzen koennte um gewollte Worte durch erzeugte Worte zu erzeugen.

(ja das klingt jetzt alles etwas durcheinander, ich werde es mal noch sauber formulieren)

Erzwungene synchrone Softwareverteilung

Ein interessanten Ansatz gerade fuer Spielefirmen in der Softwareverteilung sehe ich so:

Das Produkt wird selbst verschluesselt und auf eine CD gebrannt. Nun wird die CD verkauft und am Tag des offiziellen Releases (Verkaufstag, oder Ersterscheinung) wird dann der private Key rausgegeben, bzw sobald man Internet hat, wird dieser von dem Installer der Software automatisch heruntergeladen.

Naja, gesehen habe ich das leider noch nicht. Ich bin ja mal gespannt ob jetzt jemand das Patent darauf anmeldet, dazu sage ich aber nur:

Powered by MediaWiki