PoempelFox Blog

[..] [RSS Feed]
 

Sat, 26. Nov 2011


Strange coincidences Created: 26.11.2011 13:55
Last modified: 26.11.2011 20:50
At work we have a few external RAID arrays from a major manufacturer, lets call him "HAL", bought as part of a bigger storage system.
From the beginning, they were pretty annoying - aside from their subpar performance caused by intentional castration of the hardware built in (so you would have good reasons to buy the even more expensive systems from the same manufacturer), they threw spurious errors all the time. We soon got used to nonsense-mails from the system, e.g. telling us parts would be 'overheating' - in a 16 degrees cold cold-isle that is - and back to normal temperature a few seconds later. There were also other alerts of equal uselessness, all dissappearing again as fast as they showed up. My personal favorite being messages like:

Event occurred: Thu, 11 Aug 2011 01:19:24 CEST Event Message: Optimal wide port becomes degraded Component type: Enclosure Component (ESM, GBIC/SFP, Power Supply, or Fan) Component location: Enclosure 85, Slot 1

which translates into "something somehow somewhere went wrong, but I won't tell you what or where or how, HAHA!".
So, we were used to getting the occasional nonsense alerts and everything going back to normal without any external intervention just seconds later. Until one evening in 2010 (after office hours, of course) all hell broke lose. Over the course of about 40 minutes, we got more than 200 spurious errors from the 6 arrays. Those errors were not equally spread out, instead one array complained about 20-50 errors in exactly the same second, going back to completely normal a second later, and then a few minutes later the next array would act out in exactly the same way. What was worse was that, in one case, the errors included the "removal" of 8 out of 10 disks in a RAID6 group - which is of course very plausible, because removing 8 disks in exactly the same second is a piece of cake - naturally leading to the failure of that RAID group. Although all those supposedly removed disks were back seconds later, that naturally did not revive the RAID group.
I'm not going to talk about the nightmare with the "support" hotline that followed, although that was a great example of how to not handle support, but instead cut to the end of it: Almost a day later (which is somewhat different from what our service-level-agreement said!), we were in contact with an seemingly very arrogant support engineer from HALs storage division, that told us the magic commands we needed to enter to revive the dead RAID group without destroying all data on it.
Of course we also demanded to know what had caused the major outage, but the only thing we got from HAL on that was that absolutely, clearly, no doubt possible, our power grid was the cause of all evil. It was clear for us that this was nonsense: The server room is powered by an online UPS with tight monitoring of the output lines, and neither the monitoring noticed anything unusual, nor the other systems in the same rack (on the same outlets!) or in the rest of the server room. And even if there had been anything on the power grid (too small for the monitoring to notice), it could not have spread out over 40 minutes and then dissappear in the middle of the night. Nonetheless, HAL was unwilling to consider any other explanations.
So why am I telling stories from 2010? Because a few weeks ago, the exact same thing happened again: Distributed over around 40 minutes, all of the RAID arrays acted out by throwing insane amounts of spurious errors again. And again, one RAID6 group failed because 7 of its 10 disks were "removed" in the same second. Luckily, I remembered the command for reviving them, so the resulting complete system outage only was a few hours until I noticed the problem in the middle of the night.

And then, just out of curiosity, I started to calculate - how long has it been since the last failure? And my calculations revealed: 497 days, and a few hours. That certainly rang a bell in me, but for those who never heard of the Linux uptime bug, I'll explain: Almost all operating systems internally count the time since they were booted up and use it for internal functions, like scheduling things to happen in certain intervals. They do that because it's fast, and doesn't depend on real world time with all its complications like time zones and daylight savings time. At least in FreeBSD and Linux, this internal counter was increased by the timer interrupt 100 times per second. As they both used 32 bit counters, this timer would overflow after 232 1/100ths of a second - which works out to 497 days, 2 hours, 27 minutes and a few seconds. In both old Linux and old FreeBSD systems, this would be visible through the "uptime" command, which showed the time the system has been up - and as the counter overflowed, the uptime it showed would wrap around and suddenly start at 0 again after 497 days, 2 hours, 27 minutes...
Of course, these RAID arrays don't run an old linux version, but vxworks - however a quick research on google tells me that vxworks does the exact same tick counting, with a programmable tick rate. They do also offer functions to handle tick overflows, but that of course requires the programmer using these functions to use his brain... So if the tick rate was set to 100 per second, the system in those RAID arrays would exhibit the same behaviour as old Linux/FreeBSD.
Such overflows are also highly likely to cause other complications, because suddenly the values returned are not monotonically increasing anymore, and if used wrongly things can go terribly wrong. One popular example would be in the famous Year 2000 problem, and one similiar problem that is still to come will be the Year 2038 problem when the commonly used Unix timestamp wraps if it is a signed 32 bit counter.
In particular, such an overflow is also very very very likely to cause effects like the "disappearing discs" we saw. It is very easy to construct how things could go terribly wrong: Suppose you poll the responsiveness of all hard discs regularily, and remember the timestamp when you last received a valid reply. To see if the disc is still alive, you could do something like calculate (current_timestamp - last_reply_timestamp) and if that is more than a few seconds, then the disc hasn't replied for a long time and is probably dead. That will work, but explode horribly if the timestamp wraps: The current timestamp is suddenly slightly above zero, the last reply from the disc has a timestamp of close to 232, so the difference between the two is close to 232 - which could lead you to wrongly assume that the disc hasn't replied in ages and is dead. The problem would also instantly disappear again on the next poll, because then both timestamps would be in the low range again, causing the "dead" disc to be declared alive again.
Thus, declaring such problems occuring after 497 days, 2 hours, ... as coincidence or the result of a fluke in the power grid is about as plausible as claiming that 6 identical computers crashing on 2000-01-01 00:00:00 are just a coincidence. It is far more likely that this is a major firmware bug.

PS: In case you're not convinced yet: I calculated back 497 days from the time of the first failure. And not surprisingly, I arrived at the day where the racks housing these disc arrays were cabled. What a coincidence, huh?

PS2: We're getting these boxes exchanged for unrelated reasons soon. And I sure hope that will happen before the next 497 days are over...
no comments yet
write a new comment:
name or nickname
eMail adress (optional)
Your comment:
calculate: (2 times 10) plus 3

Mon, 17. Oct 2011


Flashing stock firmware with Heimdall Created: 17.10.2011 00:08
Please note: This article simply describes what I did to my Samsung Galaxy S2. It is provided in the hope that it will helpful for others.
Neither will I assist you in doing the same to your phone, nor will I accept responsibility for damages to your phone while doing what I describe here.
This is mainly an continuation of the last article. So, recently the first version of Cyanogen Mod supporting the Galaxy S2 has been released. I naturally had to try it out. Unfortunately, I did not like it at all - the design made me want to puke, and the overall impression was just UGH. After about an hour, I desperately wanted my (rooted but otherwise) stock Samsung firmware back.
That turned out to be a tough task.
In theory, it would be very simple: Put the phone into download mode, which is basically a recovery mode where no real system is running, but it accepts files to flash - which is probably where the name "download mode"" comes from. You could just flash the firmware from that, reboot and be happy with your new firmware. However, the Samsung way of firmware updates does not use that, probably because that would be too simple and way too little error prone.
Instead, firmware updates are done with KIES while the phone is in contact sync mode. KIES is a wonderful piece of bloatware that makes you wonder whether someone stole the SSD out of your computer, because it takes longer to start than Windows Vista on a cheap netbook. Once it started up, it's supposed to do everything, including syncing contact info etc., and also flashing firmware. Unfortunately, its crappy and bugridden. Sometimes it doesn't see the phone when you plugged it in before starting it, sometimes you have to do exactly that to make it work. Even if it does see the phone occasionally, it seems to be pure luck what options it offers to you.
Of course, KIES will not flash the stock firmware back if your phone isn't running the stock firmware. Though that is fine, I'm not sure whether it's on purpose or just out of incompetence. Because even with stock firmware, I've had exactly zero successful flashes with KIES by now. Either the "flash update" button is just missing, or it DOES work and downloads a firmware update for half an hour - only to tell you that it suddenly doesn't recognize the phone (to which it talked for the last half hour, and where it backed up all data from) anymore.
Luckily, Heimdall can not only be used to flash a rooted kernel, but it can also flash a complete stock firmware image - you don't need to rely on strange things like "ODIN" for that. The firmware-packages are usually ZIPped TAR files - unpack them (both the ZIP and the TAR within), and you'll get a directory full of files. Then start looking for corresponding parameters to Heimdall. For example, there might be a file factoryfs.img - the corresponding heimdall parameter is --factoryfs. Most are obvious, some need a bit thought: Sbl.bin usually is the Secondary bootloader, parameter --secondary-boot. The complete commandline for my stock firmware was:

export KR=/tmp/I9100XWKI8_I9100OXXKI2_I9100XXKI4/ heimdall flash --factoryfs $KR/factoryfs.img --cache $KR/cache.img \ --hidden $KR/hidden.img --modem $KR/modem.bin \ --kernel $KR/zImage --param $KR/param.lfs \ --primary-boot $KR/boot.bin --secondary-boot $KR/Sbl.bin

Yes it's long - but other than KIES it worked like a charm. Just put the phone into download-mode and flash away.
One question remains: Where to get the stock firmware images?
That's a question to which I'd love to hear a good answer myself. Unfortunately, Samsung does not seem to provide them for manual download, KIES automatically downloads them from god knows where. So the only way to get them is through the same forums that provide the root-kernels. I'd love to have a more reliable source, so if you know of any - leave a comment.
PS: A little off-topic, but I was thoroughly impressed with Titanium Backup. After going back to stock, it was able to restore everything from the backup I made before. And I mean everything - contacts, call history, received SMS, calendar and alarm clock entries, even Angry Birds and my progress in the game. This is an incredibly useful tool.
1 comment
Thank you so much! Helped me a lot!
luisajeronimo 22.06.2013 18:57

write a new comment:
name or nickname
eMail adress (optional)
Your comment:
calculate: (2 times 10) plus 3

Sat, 06. Aug 2011


Rooting Samsung Galaxy S2 with Heimdall Created: 06.08.2011 17:59
Please note: This article simply describes what I did to root my Samsung Galaxy S2. It is provided in the hope that it will helpful for others.
Neither will I assist you in doing the same to your phone, nor will I accept responsibility for damages to your phone while doing what I describe here.
For some time now, I have owned a Galaxy S2, and been quite happy with it. I didn't really feel the urge to root it - things worked well enough without rooting. However, then I tried to take some pictures of sleeping cats with it - and noticed that there is absolutely no way to turn off the annoying shutter sound the camera makes when it takes a picture without rooting the phone. It even does that sound even when the phone is set to silent. That's the sort of braindead design decision I'd expect from Steve Jobs, but on an otherwise nice phone?!
Anyways, my annoyance with this crap was large enough to decide to root the phone.

Google spits out tons of helpful threads on the topic, however they all use some leaked software from Samsung named "Odin". That software of course is Windows only, but I run Linux. And I didn't really like the idea of using some rather fishy and copied around for years software of unknown origin either.
My search for Alternatives turned up Heimdall. It's open source, runs on (probably) almost everything, and there are Binaries for Windows, Mac and Debian Linux available. As it was easy enough, I simply decided to build it from source on my Ubuntu 11.04 system. Main dependency from the system was libusb-1.0-0-dev. Build process:

tar xvzf Benjamin-Dobell-Heimdall-v1.3.0-0-ged9b08e.tar.gz cd Benjamin-Dobell-Heimdall-ed9b08e/ cd libpit/ ./configure make cd ../heimdall ./configure make

That's about it - you should now have a 'heimdall' binary in the current directory.

I then used a rooted kernel - i.e. a kernel that is essentially the stock kernel with minor modifications to include root access - from this cf-root thread on forum.xda-developers.com. I downloaded the modified kernel matching my current device kernel and unpacked it (it's a .zip file containing a .tar containing the zImage for the kernel).
Flashing that kernel to the device is then pretty straightforward:
  • Activate USB debugging on the S2 in settings / applications / development
  • connect the S2 to your computer via USB
  • Turn off the S2 and wait for it to shut down
  • Press the Home Button, Volume Down, and the Power Button at the same time and keep them pressed until the "Downloader" screen appears. It will display a yellow attention sign and a warning that you need to acknowledge.
  • Only if you don't want to run heimdall as root: Find out which bus and device ID the kernel assigned to your phone with lsusb and then chown that device to the user running heimdall, i.e. sudo chown fox /dev/bus/usb/002/022
  • Tell heimdall to flash the modified kernel: ./heimdall flash --kernel /tmp/zImage
That's it. The phone will automatically reboot as soon as heimdall exits. From now on it will show an attention sign during boot to show that the firmware has been tampered with, but see the already mentioned forumthread for tips on how to get rid of that.

PS: Just in case you want to get rid of the annoying camera sound too: After rooting the phone, open a shell (look for Terminal Emulator in the market), and then enter this:

su cd /data echo 'ro.camera.sound.forced=0' >> local.prop

This will not directly "disable" the sound, but instead the shutter sound will then be controlled by the "system sounds" volume setting - as it should have been from the beginning. And in particular, if you set your phone to "silent", the camera will be silent as well.
You will probably need to reboot the phone for this setting to take effect.
no comments yet
write a new comment:
name or nickname
eMail adress (optional)
Your comment:
calculate: (2 times 10) plus 3

Wed, 23. Mar 2011


Doppelboden-modding, oder: Pimp my Doppelboden Created: 23.03.2011 21:20
Last modified: 25.03.2011 17:00
Im Doppelboden des Serverraums gibt es neuerdings ein Loch Sichtfenster, durch das man die Rohre fuer das Kühlwasser des neuen Clusters sehen kann.

Was man aufgrund der schlechten Bildqualität kaum erkennen kann: Das Loch ist von unten blau beleuchtet.
Es erinnert mich irgendwie an diesen alten "Rambo" Film: "Was ist das?" - "Das ist blaues Licht." - "Und was macht es?" - "Es leuchtet blau."
Update: Dank Kollege T.R. gibt es jetzt ein Bild der blauen Beleuchtung bei Dunkelheit.

no comments yet
write a new comment:
name or nickname
eMail adress (optional)
Your comment:
calculate: (2 times 10) plus 3

Sun, 20. Mar 2011


S2API and the complete lack of documentation Created: 20.03.2011 11:04
While adding support for DVB-S2 to getstream-poempel, i had the joy of having to figure out how S2API works.
S2API is the new API for DVB on linux, and it is the only way to tune DVB-S2 channels, as the old API (that still exists) cannot do that. It also supports other standards, but DVB-S2 was the first and the one it was developed for, hence the name. It is in the vanilla linux kernel since 2.6.28.
S2API is a nice redesign of the API: Instead of having to add new structures for every new DVB standard like with the old API, it uses flexible name-value pairs. This is not a bad idea, and it seems to work well. What doesn't work so well is the fact that there is still no trace of any documentation anywhere. Many applications have at least experimental support for S2API by now, but it seems they all implemented it by copying from each other. I basically had to do the same and found it pretty annoying. The S2API article on the linuxtv.org Wiki offers an interesting read on the history of the new API and the "API wars" that lead to it, but actually providing info on how to use the new API would be better.
 
So, here is a writeup of my findings, in the hope that it will be useful to others that face the same problem. I also hope that the linux dvb guys get their act together and provide some useful documentation soon.
The first thing to check is whether the kernel (or rather, the kernel headers you're compiling with) supports the new API. For that, you need to #include <linux/dvb/version.h>. It defines DVB_API_VERSION. As the S2API has been given the version number 5, you need to check for DVB_API_VERSION >= 5. Please don't overdo the checking: While trying to compile scan-s2, a version of scan modified for S2 support, I could "admire" that they check for the API version to be _exactly_ 5.0 - which is of course nonsense and makes the compile fail on every current kernel, as they have reached API version 5.1.
Up next is the basic concept of the new API: You give it a list of "commands" that it will execute. Those commands can either change settings, or actually do stuff. For example, for tuning you'll usually send some settings, like the frequency, and then send a "tune" command as the last one, that will then tune to the settings you gave before. The "commands" are given in an array of type struct dtv_property. That struct contains a command ID, and parameters for the command in an union. Like with the old API, everything needed is defined in <linux/dvb/frontend.h>. Some example:

#include <linux/dvb/frontend.h> struct dtv_property myproperties[] = { { .cmd = DTV_DELIVERY_SYSTEM, .u.data = SYS_DVBS2 }, /* Select DVB-S2 */ { .cmd = DTV_FREQUENCY, .u.data = frequency }, /* Set frequency */ { .cmd = DTV_SYMBOL_RATE, .u.data = srate }, /* Set symbol rate */ { .cmd = DTV_TUNE }, /* now actually tune to that frequency (no parameters needed) */ };

The last line will start the actual tuning. To get that command array into the kernel, you will first need another structure of type struct dtv_properties. This tells the kernel how long the array is, it's therefore a very simple structure with only two members: an uint32_t num giving the number of commands in the array, and props which is a pointer to the array with the commands. You then pass this struct to the kernel with an ioctl. Like this:

struct dtv_properties mydtvproperties = { .num = 4, /* The number of commands in the array */ .props = myproperties /* Pointer to the array */ }; if ((ioctl(myfd, FE_SET_PROPERTY, &mydtvproperties)) == -1) { perror("FE_SET_PROPERTY failed"); }

The last thing is a mystery I haven't solved yet: Although the new API does seem to offer commands for setting voltage and 22 kHz tone, namely DTV_VOLTAGE and DTV_TONE, all programs I looked at still did those two settings through the old API, by calling the extra ioctls FE_SET_VOLTAGE and FE_SET_TONE. One the one hand this isn't surprising, as due the lack of documentation they had to copy off each other, but on the other hand I'm wondering whether there perhaps is a real reason for this. Perhaps that functions weren't in the very first version of the new API?
2 comments
Thanks for publishing this, it's really helpful.

Let's hope the DVB API guys get their act together and actually document this stuff.
Mister Fishfinger 03.01.2013 15:57

Thanks! Very useful!
Ferranti 14.11.2014 16:10

write a new comment:
name or nickname
eMail adress (optional)
Your comment:
calculate: (2 times 10) plus 3

Sat, 05. Mar 2011


Telefon-Nerver zurücknerven Created: 05.03.2011 10:34
Last modified: 05.03.2011 17:00
In den letzten Wochen gingen mir zwei besonders penetrante Telefonspammer- Callcenter auf die Nerven: Die einen wollten regelmässig irgendwelche "Umfragen". Die anderen haben mindestens 20 mal angerufen, aber grundsätzlich zu Zeiten wo ich nicht daheim war, oder es nur ganz kurz klingeln lassen. Da die Rufnummer eine 0800er war, war der Sinn wohl eher nicht das Abzocken durch Rückruf; Tante Gugel ergab, dass dieses "hochsympathische" Callcenter offenbar immer gleich mehrere Opfer anruft, nach dem Motto "geht sowieso nur jeder x-te dran". Wer zuerst abhebt wird dann "beglueckt", der Rest ist umsonst zum Telefon gelaufen.
Diese Nervereien haben mich dazu bewegt, mich mal wieder mit passenden Gegenmassnahmen zu beschäftigen. Der Treiber für die alte ISDN-Karte (Fritz Classic PCI) liess sich erstaunlich problemlos bauen: Zwar supportet AVM die Karte seit Jahren nicht mehr, es gibt aber gluecklicherweise noch genug Freiwillige, die die Linuxtreiber regelmässig auf neue Kernelversionen anpassen; Ich habe die Fritz PCI Treiber von Lutz Willek verwendet. Über CAPI kann dann Asterisk auf die Karte zugreifen - und da Asterisk eine eierlegende Wollmilchsau ist, sind hier der Fantasie wenig Grenzen gesetzt. Was ich nutze reizt natürlich nicht ansatzweise das aus, was Asterisk kann, aber es löst mein Problem: Es gibt eine einfache Blacklist fuer bekannt böse Nummern. Diese erhalten einen Text vorgelesen, dass ich nicht weiter von ihnen telefonisch belaestigt werden möchte.

Beim durchschauen der ISDN-Logs sah ich ausserdem, dass ich bisweilen Anrufe auf eine unbenutzte MSN bekam. Diese MSN habe ich seit vielen Jahren und sie wurde in dieser Zeit nie verwendet, bei den Anrufern kann es sich also nur um Callcenter handeln die ganze Nummernbereiche einfach mal mit Cold Calls durchklingeln. Da ich ohnehin noch weiter mit Asterisk spielen wollte, war mir das Anlass genug ein kleines Quiz zu implementieren. Dieses empfängt Anrufer auf ungenutzten MSNs, und stellt immer schwerer werdende Quizfragen. Falls jemand jedoch tatsächlich bis zum Ende durchhält, gibt es keine Belohnung. Der Dialog kann im Config-Auszug nachgelesen werden.
Die Sprachschnipsel habe ich mit dem MARY Text-to-Speech System erzeugt. Unter den sehr wenigen Systemen die nicht unter Knebellizenz stehen, schien es mit Abstand das beste zu sein, auch wenn das Online-Demo-Interface mich durch unterirdisches Handling von Sonderzeichen (Umlaute) in den Wahnsinn trieb: Zwar funktioniert der Javascript-Verhau der den Text im Browser vorliest, jeglicher Versuch das vorgelesene abzuspeichern führt jedoch dazu dass die Datei neu erzeugt wird, wobei dann die Umlaute offenbar aufgrund von Encoding-Problemen im vorgelesenen Text plötzlich fehlten. Das Problem durch Verwendung von z.B. "ae" statt "ä" zu umgehen ist leider auch nicht möglich.
Die Textschnipsel sind statisch, falls ich das System noch ausbaue werde ich es vermutlich so umbauen, dass sie dynamisch erzeugt werden, und somit der Text bequem in der Asterisk Konfiguration geändert werden kann.
Erfahrungen, wie Callcenter-Anrufer auf diesen Spass reagieren habe ich leider noch gar nicht - seit ich es vor 3 Tagen in Betrieb genommen habe, gab es keinen einzigen unerwünschten Anruf. Das ist erstaunlich, denn vorher waren es etwa vier pro Tag.
Hier nun noch der relevante Auszug der Asterisk-extensions.conf.

[isdn-rein] exten => ${RUFNUMMER3},1,Goto(folterquiz,s,1) [folterquiz] exten => s,1,Wait(1) exten => s,n,Answer exten => s,n,Wait(2) ; give time for the phone network to actually connect ; "Sehr geehrter Anrufer. Die Nummer von der sie anrufen ist nicht in ; der Liste der zulaessigen Anrufer verzeichnet. Bitte beantworten ; sie die folgenden einfachen Fragen, um zu beweisen dass sie kein ; Waehlcomputer sind, und durchgestellt zu werden." exten => s,n,Playback(sehrgeehrteranrufer) exten => s,n,Wait(1) ; "Geben Sie die Antworten ueber die Tasten ihres Telefons ein" exten => s,n,Playback(gebensiedieantworten) exten => s,n,Wait(1) ; Timeouts fuer Tastendruecke auf 15 Sekunden setzen. exten => s,n,Set(TIMEOUT(digit)=15) exten => s,n,Set(TIMEOUT(response)=15) ; Quizfrage stellen: "Wieviel ist 4 plus 2?" exten => s,n,Macro(quizfrage,wievielist4plus2,6) exten => s,n,Wait(1) ; Quizfrage stellen: "Was ist die Wurzel aus 64?" exten => s,n,Macro(quizfrage,wasistdiewurzelaus64,8) exten => s,n,Wait(1) ; Quizfrage stellen: "Wie lautet die sechste Nachkommastelle von Pi?" exten => s,n,Macro(quizfrage,wielautetdiesechstenachkommastellevonpi,2) exten => s,n,Wait(1) ; Quizfrage stellen: "Berechnen sie 47 mal 11 plus 23 mal 23 minus der ; Wurzel aus 1083681" exten => s,n,Macro(quizfrage,berechnensie47mal11plus23mal23minuswurzel1083681,5) exten => s,n,Wait(1) ; "Danke dass sie an unserem Quiz teilgenommen und alle Fragen richtig ; beantwortet haben. Dieser Anruf kostet 47 Euro 11 aus dem deutschen ; Festnetz. Mobilfunkpreise abweichend." exten => s,n,Playback(dankedasssieteilgenommen) exten => s,n,Wait(1) ; "Da wir nicht davon ausgehen, dass ein Mensch ausreichende Geduld aufbringt, ; derart daemliche, von einen schlechten Sprachsynthesesystem gestellte ; Fragen zu beantworten, haben sie hiermit bewiesen, dass Sie eine Maschine ; sind, die programmiert ist dieses System zu umgehen. Wir werden ihre ; Verbindung daher jetzt trennen." exten => s,n,Playback(dawirnichtdavonausgehen) exten => s,n,Wait(1) exten => s,n,Hangup ; und auflegen ; Quizfrage Macro. ; Parameter: soundfile-mit-frage, richtige-antwort (eine ziffer!) ; beendet bei falscher Antwort die Verbindung, kehrt bei richtiger ; Antwort zurueck. [macro-quizfrage] exten => s,1,Playback(${ARG1}) ; Frage vorlesen exten => s,n,Read(quizantwort,,1) ; Antwort lesen, max. eine Ziffer exten => s,n,GotoIf($["${ARG2}" = "${quizantwort}"]?richtig:falsch) exten => s,n(falsch),Playback(leiderfalsch) ; "Diese Antwort ist leider falsch" exten => s,n,Wait(2) exten => s,n,Hangup exten => s,n(richtig),Playback(richtig) ; "Richtig." ; automatically returns

1 comment
Hahaha! mir fehlen die worte, wie geil ist das denn!!
Pjodrr 05.03.2011 13:05

write a new comment:
name or nickname
eMail adress (optional)
Your comment:
calculate: (2 times 10) plus 3

Tue, 01. Mar 2011


KDE 4 sucks Created: 01.03.2011 22:00
With the update from Debian Lenny to Squeeze, I had the "joy" of trying out KDE4 yet again.
Like Ubuntu and all other distributions before, Debian dropped KDE3 with Squeeze and only delivers KDE4 now. This is not surprising, as KDE3 development stopped quite some time ago. However, what surprises me is how KDE4 ist still a piece of completely unusable, misdesigned bullcrap after all this time spent in development. When the first KDE4 versions came out, they were bad, and I thought "Oh well, they still need some time to develop this". That was three years ago, and some progress has been made since then - but at a pace that, should they continue at this pace, means KDE4 will be usable around 2080.
I've never seen anything crash as much as KDE4, and that includes both the basic desktop and the standard apps. When it doesn't crash, which happens rarely enough, it annoys by not being configurable at all. It seems they learned from Gnome there: "Oh no, a desktop that the user can configure so that it fits his needs only confuses users, so lets not do that. You know, the users with an IQ below room temperature, which includes both our development team and main target audience" That's probably why even with version 4.5.something it still isn't possible to configure something as central as the taskbar so that it doesn't suck, and the once so nice (in KDE3) terminal emulator konsole is basically unusable. Why is it unusable? Well, for example, the tab layout is a pain in the ass; and depending on how much text you have in the current window and which app is running, using the mousewheel will either do nothing at all, insert tons of weird escape characters, scroll your shell history (WTF???) or - and surprisingly, in about 10 percent of all cases this really happens! - it will actually scroll the contents of the window.
Then there is misdesign. As it is, KDE4 is not usable in environments where user homes are on central NFS servers. Which means any university or business environment. However, bitching about that could easily fill a post on its own, so I'll skip it for now.
Long story short: KDE4 sucks, and I've lost all hope that it will develop into something usable. Luckily, there are people building Ubuntu and Debian packages of KDE3.5, and they even started to continue development of KDE3.5 - they forked it into a project called Trinity. Unfortunately, they have very few developers, so I'm not sure how successful that will be - i sure hope they find some more.
I use the Trinity packages on almost all my systems now (except those that are still Ubuntu 8.04). And I hope they will stay around for some time. Because if they don't, I'll have to find myself a new windowmanager - and KDE4 will not be it.
3 comments
But this is not all, have you tried running KDE4 in a VNC session? Well, you can't, or ... you can but you can't really use it because this fancy oxygen Porter-Duff stuff does not work, and even if you switch to another "theme" the window borders and the taskbar still remain unusable... you know KDE is written by kids for kids, they have no idea of enterprise, btw, there has been a mailing list kde-enterprise, and guess what, 2 messages in 5 years or so, but now they realized that KDE is not made for enterprise and removed the list...
pjodrr 03.03.2011 09:13

Yeah this came up on IRC: There is a site "KDE::Enterprise", at http://enterprise.kde.org/ - last news post: in the year 2005.
PoempelFox 05.03.2011 10:41

Yeah I've come to the end of the road with KDE4 as well.

True, I'm running an older version, but I've looked ahead and all they seem to be doing is adding features (that nobody wants), creating weird workflows (why are we supposed to care about 'Activities'?), and breaking basics - I found out only yesterday that there is NO setting that will allow windows to be visible across multiple desktops, which you/I sometimes DO want and need, and the forum discussions about it went into rocket science; instead of "Just click this to enable that".

Also they, like Android, are getting into this *modal* crap, you actually have to put the task bar into 'edit mode' to get widgets onto it... and then go and look them up!!! In 3.5 you just dragged the icons to it, which was Correct Behaviour.

I am gratified to see Timothy Pearson heroically managed to get Trinity to go ahead, so I'm going to give it a try.

I don't like GNOME (it always was a POS), XFCE is just a cut-down GNOME (though I may try it again), and that pretty much just leaves FVWM - though the latest versions of FVWM look like they *may* be worth a go!
tessy 23.10.2013 01:15

write a new comment:
name or nickname
eMail adress (optional)
Your comment:
calculate: (2 times 10) plus 3
 

EOPage - generated with blosxom