/dev/null

Elite is stupid. Back to the roots.

July 15, 2010

It’s really hard to talk about JavaScript best practices and JMVC

I was totally enthusiastic, when I first learned about JavaScriptMVC – because it brings all the best practices you are accustomed to into the JavaScript world. That means the MVC architecture, Object-oriented development with simulated inheritance, EJS templates, easy testing, OpenAjax support, powerful event delegation and so on.

However, I often have a hard time to convince other developers about those advantages. I guess testing is the easiest one, because no developer would dare to argue against testing, even though many developers don’t do it or don’t do it right. Questions and discussions about testing seem to be very rare. Developers just discuss it with their non-technical managers, if they want to get around that “effort”.

But it already starts with OpenAjax. I rarely find a developer that knows what it is and what it is good for and why you might need an event hub in JS at all. Zend, W3C, IBM and Google are some of the more well-known members of the OpenAjax Alliance. If you hear about it the first time now, take the time to have a look.

Just yesterday I was talking to an obviously experienced JS dev (who was working for a well known mobile phone company), that was browsing through the JavaScriptMVC documentation and stopped in the chapter about EJS templates: “Yeah, I saw something similar in our own project and removed it. It is confusing, if the JS code and the HTML are in separate files, because you don’t see the code together in one file. HTML should only be edited by developers who know the JS code very well”. Not sure what to say about that. Why not give up separation of concerns at all and put everything in one big file? Then you see the big picture on your hopefully big screen. Also you always need to check the full version control system diff after each change because the file name alone doesn’t tell you what was changed and you probably have more of those exciting conflicts to resolve. And: You REALLY need to be an expert to understand what is going on. The company can never fire you, because no one else would ever understand that kind of code. Sorry for being sarcastic, but that kind of attitude can seriously damage the health of innocent other people who need to clean up the mess in 20h work days afterwards, to meet the deadline of the project. Or the project is so small that it doesn’t matter. Or the company you work for can afford to pay a lot of developers who have the time to maintain a JS app without templates.

Convincing people about the usefulness of controllers is not easy too. Either you start showing an OpenAjax subscribe action – then the developer most likely won’t understand what that is good for (see above). Or you talk about event delegation, then the developer will point to jQuery’s live() method, which does event delegation too. In fact, JavaScriptMVC’s event delegation used to be one of the strong points and I admit that I am not totally up to date with the whole discussion right now, because I was busy with a PHP project during the last 6 months. I know Justin Meyer is/was working on the controller code so that it makes more use of jQuery, he contributes code to jQuery and he is in contact with John Resig. Anyways, the whole point about controllers again is separation of concerns and not so much the technical details behind the scenes. The JavaScript world is moving very fast and implementation details change a lot, but separation of concerns is not really something that you can look at as something you probably don’t need. The JS world sometimes feels like the PHP world about 10 years ago.

Ok, after getting rid of those thoughts, I will return to work now. The next 2 weeks will be quite relaxed with very little work. So maybe, I can read through the new JavaScriptMVC code and update my knowledge. It really feels uncomfortable not the be able to answer questions in detail. Also I start confusing PHP and JS syntax *lol*

See also: http://jupiterjs.com/news/talkin-javascriptmvc-is-hard

June 21, 2010

Howto: Connect to a Cisco VPN using Ubuntu Linux 10.04

Tags: , , , — 21:03

Argh, I spent the whole day figuring out how to connect to the VPN of my current customer. The Windows client on my other computer works just fine, at least after selecting the UDP option. But it is quite some overhead to install Windows on my Linux box just to connect to a VPN. The proprietary Cisco VPN client for Linux works until kernel version 2.6.25 AFAIK. Therefore, This is no option for all users of Ubuntu 10.04.

There is an Open Source client for the cisco vpn concentrator that replaces the Cisco client: vpnc

It can be installed on the command line using

sudo apt-get update && sudo apt-get install vpnc resolvconf

Once you’ve done this, you will want to create a config file for your VPN:

/usr/share/vpnc/pcf2vpnc ciscovpnconfigfile.pcf > default.conf

Now move that file to /etc/vpnc:

sudo mv default.conf /etc/vpnc

Theoretically you should be able to use the VPN now like this:

sudo vpnc

And terminate it like that:

sudo vpn-disconnect

Of course it would be too easy this way. There were a couple of changes I had to apply to the config file:

First of all and most importantly, the line

Application version Cisco Systems VPN Client 5.0.07.0240:WinNT

simulates a Windows client, which the Cisco concentrator at my customer’s network checked for. If that is the case and it refuses the connection, you won’t see any error that tells you about it, vpnc just won’t connect properly and say “no response from target” after several seconds! It took a long time until I figured that out, but just because I had a similar problem with an older Windows client previously. Also it’s hard to find out, how the version string is supposed to look like.

The other line I added was “NAT Traversal Mode cisco-udp” and if you like “Xauth password XXX” to store your password in the config file, so that you don’t need to enter it each time you connect.

Hope that works for you!

June 20, 2010

New phone, again

Tags: , , — 15:28

As posted on Facebook and Twitter, my good old Nokia E51 was stolen last night. I still got that Palm Pre Plus, but the battery life is too short for daily usage and the form factor is also not very comfortable for normal phone calls. It’s a smart phone, not a convenient one. So again, I have to deal with the Nr 1 topic of the western society: Which mobile phone do I want? Damn it.

The good news is: T-Mobile will provide me with a new SIM card next week, so that I can keep the number. Until I get it, you have to talk with my voice mailbox (all messages will be deleted). If you have anything important to say, please write an email! :)

Who will bother stealing a Nokia E51 with Arabian keypad in Germany? It is risky to sell a unique phone like this on eBay and on the street, they will not make a fortune. Whatever.

June 19, 2010

Howto: WWAN on a Lenovo ThinkPad X100e with Ubuntu 10.04

Tags: , , , — 15:08

I could not find a single correct and useful description how to get the Gobi™ 2000 PCI Express Mini Card, that is built into some Lenovo ThinkPad X100e models, to work with Ubuntu Linux 10.04 LTS “Lucid Lynx” on Google (which is identical to the Internet). Therefore I want to share my knowledge with you, before I forget everything. This howto might also work for other notebooks that use the same WWAN/UMTS/3G card (like the ThinkPad T410).

  1. First you should turn off and open your notebook at the bottom by removing the 7 screws. Inside, you will see the sim card socket and instructions how to use it (it’s not too obvious). If you got another ThinkPad model like the T410, the sim card needs to be installed differently, for example behind the battery pack.
  2. If you did not install Ubuntu yet and Windows 7 is still there, then get the files amss.mbn, apps.mbn and UQCN.mbn from the directory C:\Program Files (x86)\QUALCOMM\Images\Lenovo – the first two files are in the “UMTS” sub-directory, the other one is in “0″. As I didn’t have my Windows 7 partition on the X100e anymore, I simply copied the files from a ThinkPad T410. If you don’t have a copy of these files, you will find some advice at http://www.thinkwiki.org/wiki/Talk:Qualcomm_Gobi_2000.
  3. If you did not install Ubuntu yet, do it now! The X100e has no DVD drive, so you need to download the ISO image from ubuntu.com and then create a bootable USB stick. The free tool http://unetbootin.sourceforge.net/ can be used for that. Use the 64bit version of Ubuntu, as the X100e supports up to 8GB of memory and you don’t want to re-install everything after an upgrade. I know the Ubuntu Web site says that it is not recommended for daily desktop usage – this is nonsense.
  4. Don’t use the proprietary ATI graphics driver. Uninstall or disable it. It will break with the new kernel.
  5. Download the latest version of the gobi loader from http://www.codon.org.uk/~mjg59/gobi_loader/download/
  6. Untar the files using tar -xzf gobi_loader-0.6.tar.gz, change into the directory and then install the tool via the usual make and sudo make install procedure.
  7. Now copy the files amss.mbn, apps.mbn and UQCN.mbn to /lib/firmware/gobi/sudo cp amss.mbn apps.mbn UQCN.mbn /lib/firmware/gobi
  8. Get the latest mainline kernel from http://kernel.ubuntu.com/~kernel-ppa/mainline/ – I am using v2.6.35-rc1-lucid, but as kernel development does not stop, you should check if there is a later version available. The important thing is that the directory ends with -lucid for Ubuntu 10.04. If you use an older version, you can try v2.6.34-rc2, but I am not sure, if that will work as well. You need to download the kernel headers and image for your architecture (i386/32bit or amd64/64bit) only.
  9. Follow the instructions on https://wiki.ubuntu.com/KernelTeam/MainlineBuilds – if there are other .deb files in the current directory (where you downloaded the kernel files in the previous step), then you can not use sudo dpkg -i *.deb, but need to explicitly list the deb files: sudo dpkg -i linux-headers-2.6.27-02062715-generic_2.6.27-02062715_amd64.deb linux-headers-2.6.27-02062715_2.6.27-02062715_all.deb linux-image-2.6.27-02062715-generic_2.6.27-02062715_amd64.deb (if you got the 64bit version of Ubuntu installed).
  10. After restart, you will notice that your wireless connection does not work anymore. Therefore, you should wait and download the file rtl8192se_linux_2.6.0015.0127.2010.tar.gz first, for example from http://www.realtek.com.tw/downloads – some people say downloads from this site were corrupted, so wish you good luck! Some people also say these drivers don’t work with a 64bit kernel. I did not experience any problems in that direction. But if you want to try, there seems to be another (older) driver for 64bit systems available for download at http://launchpadlibrarian.net/34090404/rtl8192se_linux_2.6.0010.1012.2009_64bit.tar.gz
  11. Of course, you need the build-essential package to compile the drivers: sudo apt-get install build-essential - now it should be safe to restart.
  12. After restart, you will notice that the ThinkPad hotkeys are working now, which is another benefit of kernel 2.6.35. However you still need to compile those WLAN drivers: extract the files from the tar archive (tar -xzf somefile.tar.gz), change into the directory, say “make” and then NOT sudo make install. Instead you copy the file HAL/rtl8192/r8192se_pci.ko to /lib/modules/2.6.35-020635rc1-generic/kernel/drivers/net/wireless/ (depending on your kernel version, of course): sudo cp HAL/rtl8192/r8192se_pci.ko /lib/modules/2.6.35-020635rc1-generic/kernel/drivers/net/wireless/
  13. After a sudo depmod -a or a restart you can use wireless networking again.
  14. Last but not least, you need to unlock your WWAN card via rfkill unblock wwan and you’re done! You can now create new WWAN connections using the standard Gnome Network Manager in the top right corner.

Enjoy! xD

(I am not responsible for any damages)

Update

This table shows the contents of the individual Gobi 2000 firmware files:

Dir Image Remarks
0 Vodafone Image
1 Verizon Image
2 ATT Image
3 Sprint Image includes special Firmware
4 T-Mobile Image
6 Generic UMTS Image
7 Telefonica Image
8 Telecom Italia Image
9 Orange Image
12 DoCoMo Image includes special Firmware
UMTS Default Firmware

May 5, 2010

For sale: iPhone 3GS, 32GB, white

Tags: , , , — 15:08

Ever wanted to buy an iPhone 3GS without T-Mobile contract? Now you can buy mine on eBay! Starting at 1 EUR :)

So, why is that? I love to embrace change. I hate DRM, and I hate big companies that forget what innovation means, I hate company policies that prevent me from using the full potential of my computing device. Microsoft used to be the evil company number 1, but nowadays things change: I see Apple and Google right before Microsoft. They are the successful ones now, and they need to defend that position (I would do the same). They need to earn a lot of money for the share holders and they need to comply with a lot of different contracts they have with other companies. Probably, they can also not experiment anymore to the full extend. Whatever.

Apple products are still normal products, they don’t offer some kind of enhanced lifestyle experience. I am constantly confused when people start talking about their Apple products and how easy and irreplaceable  they are. It’s true, if you buy one Apple product, than you need another one so you don’t run into compatibility issues. Isn’t this exactly what Microsoft was blamed for?

Fact is: There are other good and quite usable smartphones beside the iPhone. Of course if you managed your whole Music library via iTunes, it’s hard to change. But why do I use iTunes? Right, because I bought an iPod once and then I was forced to use iTunes. Then I found out, that iTunes for Windows is somehow slow, so I had to buy the Mac Mini. Then I found out, that the PC keyboard layout is not really usable on a Mac, so I had to buy a Mac keyboard. Then my gray PC mouse was looking strange right next to the white keyboard, so I had to buy an Apple mouse. And so on. What kind of fucked up lifestyle is this?

I agree that Windows Mobile is crap, if you compare it with the iPhone. Not sure about the next version, but that’s not the point. I gave up waiting for the next Windows version many years ago. Fact is, that Windows devices are no option right now and it will probably still be hard to sync them with alternative operating systems or your Google account in the future.

Then there is Google with Android. I had an Android phone until recently, because I thought I might be interested in app development. I didn’t like the user interface (looks like the last 10 years didn’t happen), I don’t like Java. The music player is not what I expected. Then there are the OS update issues, everyone is talking about. Maybe Google learns how to handle that, maybe not. I don’t feel like that should be my problem.

The only remaining option is Palm. I thought they will simply run out of money. But now they were bought by HP. For now, I can trust them, if they commit themselves to WebOS. WebOS supports app development with standard Web technologies like JavaScript and HTML, which is exactly what a Web developer is looking for. So, because I embrace change, I ordered the new Palm Pre Plus last week. My first impression:

  • After entering my Facebook and Google account details, it already knows all my contacts, my email and my calendar out of the box. The iPhone has a lot of different apps (some cost extra), but the built-in functionality is still very basic.
  • It doesn’t wake me at night, just because a new email arrived. Still don’t know how to disable that vibrating alert during the night on my iPhone.
  • I can copy any music or video file directly via USB to the device without using iTunes (that means from ANY computer). How cool is that?
  • It’s black, features a modern user interface and multitasking. Wow!
  • No problems with battery life so far. About the same as my iPhone.

For that reason, I am going to sell the iPhone now. It’s not a bad product, but I don’t feel like it’s the best I can get. I feel like I am forced by Apple to buy things I don’t really need or want. I want my freedom back.

May 4, 2010

Day Against DRM

Tags: , , — 10:35

Well, I was just informed via email that today is the Day against DRM. Yesterday, I read that 1 million iPads and 12 million DRM protected iPad apps were already sold by Apple. So I don’t feel welcome starting that discussion again. I have an iPhone as well, to be honest. Even though my Palm Pre Plus arrives today. Let’s see if that works for me and if the device is less evil. Anyways:

I guess the thing is that there were always activists that bought their bananas and coffee in that special fair trade store a couple of miles away. And there are the “normal” people, that just don’t care and buy their stuff in the super market round the corner. Of course their bananas were sometimes full of poison and of course the coffee farmers in Africa were badly exploited. On the other hand, the bananas are looking nice and the coffee is cheap. You can’t do anything about it and if you do, you are treated like the enemy of the working class. Because, obviously, poor people don’t have the money to buy the expensive fair trade product and others just want convenience after their 14h working day. That makes the whole issue a bit more complicated.

So yeah, there we are. At least it’s time to think again, before we (who can afford it) decide to buy the next product that is defective by design like the Apple iPad. A lot has changed already, for example Amazon sells DRM-free MP3 files, which was unthinkable a couple of years ago. I really enjoy to buy my music there and IMO it’s a lot more user friendly than iTunes.

May 3, 2010

Ihr habt das Scrum falsch gemacht!

Tags: — 14:11

Das PHP BarCamp in Salzburg dieses Wochenende war super. Herzlichen Dank an Evelyne Selak, die scheinbar die Organisation zum Großteil auf sich gezogen hat. Ich könnte sowas nicht leisten und hätte Angst, dass Hotel & Sponsoren absagen und niemand kommt.

Nett fand ich mal wieder Sebastian Bergmanns Vorstellungen zu testbarer Software zu hören. Im Wesentlichen basierte seine Argumentation in letzter Konsequenz auch auf „man will ja dieses und darum muss man jenes so und so machen“. Finde ich nicht falsch und für mich gut verständlich. Nur: Wenn man das so einem normalen Entwickler erzählt, schaut dieser nur befremdlich und sagt dann, dass es anders doch auch geht und viel einfacher ist.

In der Praxis ist es so, dass man schon vor einer großen Herausforderung steht, wenn man Entwickler nur dazu bringen muss, nicht allen Code in eine Klasse zu schreiben. Von „Separation of Concerns“ haben gefühlte 30% der Entwickler schon was gehört. In Büchern wie „PHP Quick and Dirty“ wird es als tolle Idee angesehen, einen PHP-Interpreter herauszubringen der deutsche Keywords versteht, weil man Entwicklern nicht zumuten kann, Englisch zu lernen oder ein Wörterbuch zu verwenden. Alles Zeitverschwendung. In einem anderen Buch zu objektorientiertem PHP wird auf endlosen Seiten auf die Implementierung des Countable-Interfaces aus der SPL eingegangen um dann zum Fazit zu kommen: „Ohne Countable geht es nicht“. Damn, ich habe das in den letzten 10 Jahren nicht gebraucht.

Wenn man auf so ein BarCamp geht, entsteht der Eindruck, alle Anwesenden würden fast immer das richtige Design Pattern verwenden und streng nach Test-Driven-Development (TDD) und Extreme-Programming (XP) Grundsätzen arbeiten. Dass das nicht so ist, ist anzunehmen, zumindest hinterlässt meine berufliche Praxis ein schmerzhaft anderes Bild. Insbesondere problematisch finde ich solche in den Raum gestellten Statements, wenn der Source-Code (wie bei fast allen Web Anwendungen) nicht einsehbar ist. Lieber wird an Open-Source Projekten wie Zend Framework und Magento kleinteilig herumkritisiert. Bei Magento gibt es keine Tests, im Source sind dumme Fehler zu finden, langsam ist es eh und die meisten Zend Framework Klassen seien auch nur schnell zusammengehackt worden. Leider sind die meisten Closed-Source Anwendungen noch sehr viel schlimmer!

Um diesem Problem zu begegnen wird von verschiedener Seite „Scrum“ als Lösung propagiert. Insbesondere wird in dem Zusammenhang die niedrige Fehlerrate und der hohe Grad an Selbstorganisation, die durch Vertrauen und Eitelkeit ermöglicht wird, hochgehalten. Im Nebensatz werden dann noch schnell XP und TDD erwähnt, und schnell ist klar, dass es sich hier um ein Rezept für erfolgreiche Projekte handelt.

Zunächst einmal sollte man TDD, XP und das eigentliche Scrum-Projekt-Management auseinander halten. Das Tests die Qualität erhöhen, hat zunächst nichts mit agilem Projekt-Management zu tun. Häufig wird das in einen Topf geworfen, und dann heißt es pauschal, Scrum würde die Qualität erhöhen. Agiles Projekt-Management soll flexibel auf geänderte Anforderungen reagieren und daher in kurzen Iterationen arbeiten. Dabei sind Tests nicht nur hilfreich, sondern wegen der laufenden Refactorings dringend notwendig – deswegen wird beides zu Recht zusammen genannt. Nur Vertrauen alleine schafft noch lange keine guten Tests, selbst wenn ein Team tatsächlich schafft welche zu schreiben, was IMO auch eine Seltenheit ist. Ich kenne es auch so herum, dass die Entwickler vor lauter Eitelkeit in Panik verfallen und gezielt schlampig arbeiten, um am Iterationsende ein Stück schlechten Code mit schlechten Tests vorweisen zu können. Traut sich dann wirklich immer jemand die Wahrheit auszusprechen, die Arbeit von ein oder zwei Wochen zu verwerfen und neu anzufangen? Eventuell sogar den Mitarbeiter zu kündigen, obwohl seine Familie das Geld dringend benötigt, weil gerade Nachwuchs gekommen ist? Das ist doch so realistisch wie die freie Marktwirtschaft.

Formale Methoden verfolgen das gleiche Ziel der Fehlerfreiheit, werden jedoch oft gar nicht erwähnt oder auch nur in Erwägung gezogen. Weiter sollte es klar sein, dass es Entwickler gibt, die sich selbst organisieren können und andere, die mehr Unterstützung benötigen und nicht die Erfahrung haben um an allem arbeiten zu können. Man hat oft kein Team, das nur aus Senior Entwicklern besteht und selbst diese unterscheiden sich untereinander. Am Ende des Tages kommt es einzig und allein auf die Kompetenz der Projekt-Beteiligten auf allen Ebenen an und nicht so sehr darauf, welche trendige Management-Methode man angewendet hat. Siehe dazu auch Cargo Cult Software Engineering. Statt das anzuerkennen, wird gegenüber Scrum-Kritikern polemisch das Bild vom autoritären Chef gezeichnet, der boshaft Befehle verteilt, so dass dann natürlich nur die offensichtlich bessere Option der magischen Selbst-Organisation bleibt. Von eiserner Disziplin will niemand gerne reden, das wäre am Ende ja noch anstrengend und würde mit alternativen oder hybriden Ansätzen, die nicht der reinen Scrum-Lehre entsprechen, möglicherweise genauso gut funktionieren.

„Most teams purporting to be doing agile software development are not applying the level of technical rigor necessary to succeed at it. Most “agile” teams have actually only adopted Scrum’s project-management practices and have failed to effectively adopt “the hard disciplines” like test-driven development, refactoring, pair programming, simple design, and continuous integration.” Jean-Raymond Abrial, Faultless systems: Yes we can!, IEEE Computer 9/2009

Niemand ist ein Gegner von Vertrauen, Selbstorganisation, Selbstmotivation und Agilität. Soweit ich sehe funktioniert agiles Vorgehen gut in kleinen Teams mit sehr erfahrenen Entwicklern oder wenn die grundsätzliche Architektur zentral vorgegeben ist und nur noch konkrete Details von den einzelnen Entwicklern mit Hilfe eines bereits fertigen Frameworks implementiert werden. Zudem muss man gnadenlos konsequent sein, was je nach Team viel Kraft und Zeit kosten kann bis alles rund läuft. Was nicht geht, ist sich vorne hin zu stellen und zu erzählen, wie toll und einfach alles ist (“klar gibt es hin und wieder Probleme, aber dann redet man halt”). Diejenigen bei denen es wie zu erwarten nicht gut ausgeht, haben es dann einfach falsch gemacht. Solche Totschlag-Argumente erinnern einen an religiöse Gemeinschaften.

April 15, 2010

Mach den Unterschied!

Tags: — 12:44

Liebes Starbucks-Management,

ich war gerade anlässlich der “Mach den Unterschied!”-Aktion wieder auf der deutschen Starbucks-Website. Als treuer Starbucks-Kunde bin ich schon enttäuscht, dass diese sich seit sehr langer Zeit nicht verbessert hat. Dass ich die Aktion dort nicht gefunden habe, mag Absicht sein. Aber dass die Filial-Suche nicht einfach und effektiv funktioniert und nichtmal die Öffnungszeiten sichtbar sind, ist schon sub-optimal. Über das Layout kann man sich streiten, mir persönlich wäre es egal, wenn die Funktionalität in Ordnung ist.

Wie in allen grossen Unternehmen ist das intern sicher gut bekannt, nur ändert sich nichts oder zumindest nicht schnell. Und als Kunde weiss man nicht, ob sich überhaupt etwas tut. Spontan fallen mir jetzt noch weitere Problempunkte ein:

Als es vor ca. 2 Jahren wegen angeblichem “Diebstahl” keine Zeitschriften mehr in meiner Lieblings-Filiale in Berlin-Steglitz gab, war ich relativ verwundert. Wie soll man denn Starbucks als Premium-Marke sehen (bei ca. 4 EUR pro Getränk, gerne auch mehr, soll es das sicher sein), wenn Starbucks selbst zu geizig ist, für 15 EUR einmal pro Monat Zeitschriften zu kaufen. Wenn die am Ende weg sind, kann es doch der Filiale egal sein. Es ist ja nicht so, dass die dann wieder für 15 EUR weiterverkauft werden können. Ich hatte schon überlegt, selbst welche zu spenden, dann aber lieber für 3 Monate auf Starbucks verzichtet und zuhause gelesen. Heutzutage muss man schon dankbar sein, überhaupt eine Zeitung zu finden.

Bei der Auswahl der Mitarbeiter scheint wegen der Expansion nicht alles rund gelaufen zu sein. Man hört von Fällen, in denen sich die Mitarbeiter vor der Kundschaft streiten und gegenseitig der Faulheit bezichtigen. Ich nehme an, das wird sich mit der Zeit legen.

Last but not least bringt es Starbucks fertig immer nach dem Ausweis zu fragen, wenn man mit Kreditkarte zahlt – was bei den Preisen durchaus praktisch ist. Das obere Management hätte es aus “Sicherheitsgründen” so angeordnet und es sei ja nur im Interesse der Kunden, heisst es. Zunächst einmal besteht für mich als Kunde kaum ein Risiko, denn die Haftung für eine verlorene Kreditkarte beträgt maximal 50 EUR und es ist doch recht unwahrscheinlich, dass der Dieb wenn dann nur einen Kaffee bei Starbucks trinken geht. Alle anderen Läden wie z.B. Rewe verlangen keinen Ausweis. In den USA muss man sogar noch nicht mal unterschreiben. Somit hat eigentlich nur Starbucks ein Risiko, falls die Buchung rückgängig gemacht wird. Und selbst dann ist der Verlust kaum den Aufwand wert, denn so ein Kaffee kostet in der Herstellung nur ein paar Cent. Alles in allem eine sinnfreie Aktion mit der vor allem Kunden geärgert werden und Umsatz verloren geht.

So gesehen kann man den Aufruf “Mach den Unterschied!” auch an Starbucks zurück geben. Vielleicht ändert sich ja was. Von der ortsüblichen Unfreundlichkeit Berliner Cafes ist Starbucks zum Glück noch meilenweit entfernt :)

March 11, 2010

Reunion Sucrerie 1920×1080

09:04

Just uploaded a new wallpaper from Reunion Island :)

January 29, 2010

The new Apple iPad

Tags: — 12:08

Bulky iPhone

Older Posts »

Powered by PHP, Memcached, Suhosin, MySQL and WordPress