Haste ma ne Mark?

Posted in Software on Januar 7th, 2011

oder wie Pixelmator von Doofen profitieren wird.

Ich schreibe ja hier nicht oft, und wenn dann beschäftige ich mich eigentlich nur mit rein technischen Dingen, aber heute kam eine Infomail von Pixelmator die mich echt sauer gemacht hat, daher dieser Artikel, ausnahmsweise.

Wie ja allgemein bekannt sein dürfte hat gestern der Mac App Store seine Tore geöffnet, begleitet von den üblichen Lobpreisungen und Unkenrufen aus den jeweils bekannten Ecken. So weit, so gut. Alles nicht neu.

Dass Entwickler nun zukünftig vollständig auf den App Store setzen war zu erwarten und das kann ja jeder machen wie er mag. So weit kein Problem.

Ärgerlich wird es aber wenn man es so macht wie die Entwickler von Pixelmator. Die glauben offenbar sich durch die App Store Eröffnung ein zinsloses Darlehen von Bestandskunden holen zu können.

Im soeben erschienenen Pixelmator-Newsletter vom heutigen 07.01.2011 heisst es da sinngemäß übersetzt: man solle, auch als Bestandskunde von Version 1.x, jetzt Pixelmator für nur 29 Dollar im App Store kaufen, weil man dann updateberechtigt ist für die später irgendwann dieses Jahr erscheinende Version 2.

Normalerweise geben Entwickler Bestandskunden einen finanziellen Anreiz von der aktuellen auf eine neuere Version zu wechseln wenn diese erscheint. Das ist gängige Praxis. Es erschliesst sich mir auch nicht warum man davon abweichen sollte.
Dass aber im Falle von Pixelmator die Entwickler glauben auf unbestimmte Zeit im Voraus Bestandskunden dazu zu bringen Software die sie schon gekauft haben noch einmal, wenn auch vergünstigt, zu kaufen, um dann später irgendwann in den Genuss des Updates zu kommen finde ich ziemlich frech.
Speziell im Hinblick darauf dass ich heute noch nicht wissen kann was Version 2 bieten wird (darauf erhält man auch keinen Hinweis im Newsletter), ich also nicht wissen kann ob ich Version 2 brauchen werde. Nur die vage Hoffnung auf Programmupdates die zu einem unbestimmten Zeitpunkt in der Zukunft mit bislang unbekanntem Leistungsumfang erscheinen werden, soll mir also heute schon 29 Dollar wert sein?
Sorry, liebe Pixelmator-Entwickler. Das ist es nicht.
Auch wenn ich zähneknirschend in Kauf nehmen muss später eventuell Version 2 zu brauchen, und dann unter Umständen mehr dafür bezahlen muss als wenn ich jetzt schon auf Euer “Angebot” eingehe, sehe ich trotzdem nicht ein warum ich Euch ohne konkrete Gegenleistung für unbestimmte Zeit mit 29 Dollar alimentieren soll.
Das ist eine Geschäftspraxis die sich mir nicht erschliesst und die hoffentlich nicht Schule macht.
Deutlicher kann man seinen Kunden nicht vermitteln für was für blöde Melkkühe man sie hält. Aber man kann den Leuten von Pixelmator nicht mal einen Vorwurf machen: die Finanzkrise hat bewiesen wie wenig Leute in der Lage sind zu erkennen wenn Sie über den Tisch gezogen werden. Dass das Nachahmer anzieht ist leider keine Überraschung. Ehrlicher wäre es gewesen zu sagen: Liebe Bestandskunden, bitte gebt uns Geld damit wir die weitere Entwicklung finanzieren können.

Short summary in english:
I received a newsletter today from the folks at Pixelmator. The newsletter said something like: although you already bought Version 1.x, we want you to buy it again (reduced price for a limited time period) from the App Store. Because Version 2, that will be released some day in the future with a not yet known feature set, will only be available there.
Dear folks at Pixelmator: it is good practice for decades now that customers receive a discount when they update from one version to the next. But this means: when the update is available.
What you ask for is: to cede you with 29 Dollar for an unknown time for an update I don´t know if I need it. And if, I can probably expect to pay the full price. Because thats what the currently for a limited time period reduced price says.
You ask for credit without interest rates.
Sorry, but the vague hope that I might find an update at a yet unknown time in the future with a yet unknown feature set helpful ist not making me immediately click the buy button in the App Store.
Why do you shamelessly change the above mentioned good practice? Because the global financial crisis has shown that many people are too stupid to recognize it when they get duped?

I can only hope that this idea of yours did not set a precedent among developers. In my opinion it is a very crude way to gain customer loyalty.

It would have been much more honest if you had said: dear user, to finance the next version we kindly ask you to pay in advance so we can afford developing it.

Note on the german title of the text:
This is a famous quote by beggars asking for money.

Short info about me:
I´m a tech author, focused on writing for novice Mac users. I spent some of my time in the mac business as QA engineer for a german-american company in the Mac accessories market. This just to mention that I very well know the developers perspective, and that this is not just a comment by some frustrated user.

Den Artikel Haste ma ne Mark?

New Triggerevent in EyeTV: WindowModeChanged

Posted in Applescript, Calendar, Software on Januar 21st, 2009

EyeTV unterstützt in Version 3.1 ab build 4513 einen neuen Trigger:
WindowModeChanged

Damit lässt sich z.B. recht komfortabel dauerhafter Fullscreenmodus “erzwingen”:


on WindowModeChanged(isFullscreen)
tell application "EyeTV"
enter full screen
end tell
end WindowModeChanged

Denkbar wären auch andere Szenarien, in denen Scripte abhängig vom Fenstermodus ausgeführt werden.

Den Artikel New Triggerevent in EyeTV: WindowModeChanged

Fernseherinnerung

Posted in Applescript, Calendar on Januar 14th, 2009

Einer der meistformulierten Wünsche für EyeTV ist die Möglichkeit Erinnerungen anlegen zu können, ohne die Sendung gleich zu programmieren. Ich habe mir dieses Thema mal vorgenommen und herausgekommen ist das folgende Script. Es soll als Ausgangspunkt für weitere Anpassungen dienen, denn jeder hat andere Ansprüche an den eigenen Workflow. Feedback hierzu ist natürlich willkommen.


-- ScheduleCreated.scpt
on ScheduleCreated(programID)
tell application "EyeTV"
-- show dialog what to do
display dialog "Do what?" buttons {"Schedule", "Schedule and set reminder", "Don´t schedule, just remind"} default button 2
set the button_pressed to the button returned of the result
if the button_pressed is "Schedule" then
-- do nothing
else if the button_pressed is "Schedule and set reminder" then
-- schedule and set reminder
-- activate the following codeblock to get asked which calendar should be used
(*
tell application "iCal"
set a to get name of calendars
-- end tell
set b to choose from list a
set c to b as string
end tell
*)
tell application "EyeTV"
set programIDInteger to programID as integer
set sched to program id programIDInteger
set theTitle to title of sched
set theTime to start time of sched
--change amount and type of time in second brackets to adjust alarm settings
set theAlarmTime to (start time of sched) - (5 * minutes)
set theDesc to description of sched
-- display dialog "ScheduleCreated: " & theTitle & " " & theTime
end tell
tell application "iCal"
-- set to c if you have enabled the codeblock asking for the calendar, or hardcode your own calendar
set this_calendar to calendar "Test"
tell this_calendar
set theTVEvent to make new event at end of events of this_calendar with properties {summary:theTitle, description:theDesc, start date:theTime, allday event:false}
make new display alarm at the beginning of theTVEvent with properties {trigger date:theAlarmTime}
end tell
end tell
else
-- just set reminder, schedule will be immediately deleted after reminder is set
-- activate the following codeblock to get asked which calendar should be used
(*
tell application "iCal"
set a to get name of calendars
-- end tell
set b to choose from list a
set c to b as string
end tell
*)
tell application "EyeTV"
set programIDInteger to programID as integer
set sched to program id programIDInteger
set theTitle to title of sched
set theTime to start time of sched
--change amount and type of time in second brackets to adjust alarm settings
set theAlarmTime to (start time of sched) - (5 * minutes)
set theDesc to description of sched
-- display dialog "ScheduleCreated: " & theTitle & " " & theTime
end tell
tell application "iCal"
-- set to c if you have enabled the codeblock asking for the calendar, or hardcode your own calendar
set this_calendar to calendar "Test"
tell this_calendar
set theTVEvent to make new event at end of events of this_calendar with properties {summary:theTitle, description:theDesc, start date:theTime, allday event:false}
-- by changing the alarm type to open file alarm another script could be called from here to further adjust the workflow
make new display alarm at the beginning of theTVEvent with properties {trigger date:theAlarmTime}
end tell
end tell
-- delete schedule, so just the reminder in iCal is generated but no recording will take place
tell application "EyeTV"
delete sched
end tell
end if
end tell
end ScheduleCreated

Den Artikel Fernseherinnerung

XMLTV Import in EyeTV automatisieren

Posted in Applescript, Calendar on Februar 21st, 2008

Ich habe gerade festgestellt dass eine neue Version von EyeTV verfügbar ist: Version 3.0.1
In den Releasenotes steht u.a. dass EyeTV jetzt auch xmltv unterstützt.

Ich habe dazu mal ein kleines Script gemacht das mir einmal am Tag entsprechende Daten von einer Website lädt und in EyeTV einliest.

Zunächst der Code:

set theURL to "http://tvprog.org/tv.xml"
set theFile to "/Users/flo/Desktop/tv.xml"
set theCmd to "curl "
set theDownload to theCmd & theURL & " > " & theFile
set theExec to "open " & theFile
do shell script theDownload
delay 20
do shell script theExec

Anzupassen an die persönlichen Gegebenheiten sind:

- die URL
- der Speicherpfad
- die Delayzeit (je nach Internetverbindung)

Einzige Vorbedingung:
die Dateiinformationen müssen einmal aufgerufen und EyeTV als für diese Datei verantwortliche Anwendung (Öffnen mit…) angegeben werden.

Das Skript als Programm (nur ausführbar, kein Startdialog) speichern und in die Startobjekte legen, und schon hat man ohne Aufwand stets aktuelle xmltv EPG-Daten in EyeTV.

Den Artikel XMLTV Import in EyeTV automatisieren

Eine Antwortmail an alle Absender von markierten Mails

Posted in Applescript, Calendar on Januar 13th, 2008

Eine ganz interessante Aufgabenstellung aus einem Forum:
Jemand möchte allen Absendern von in Mail markierten E-Mails antworten ohne dafür extra erst alle in eine Gruppe im Adressbuch zu packen. Es soll also unmittelbar und ohne weiteren Aufwand auf verschiedene Mails verschiedener Absender geantwortet werden können.


-- leere Liste der Empfänger erstellen
set theRecipList to {}
set AppleScript's text item delimiters to ","
tell application "Mail"
-- markierte Mails rausfinden
set a to get selection
-- Anzahl der markierten Mails herausfinden
set theCount to (count of a)
-- Alle gefundenen einzeln abarbeiten
repeat with counter from 1 to theCount
set msg to item counter of a
-- Sender herausfinden
set theSender to sender of msg
-- Mailadresse des Absenders herausfinden und in Variable packen
set theNewRecipient to extract address from theSender
-- in string umwandeln
set b to theNewRecipient as string
-- in die Liste der Empfänger einfügen
copy b to the end of theRecipList
end repeat
set d to every item of theRecipList as string
-- Neue Email in Mail erstellen, Bei Bedarf mit weiteren properties
set newMessage to make new outgoing message -- with properties {subject:theSubject, content:theContent & return & return}
-- Anweisungen an die neu zu erstellende Mail
tell newMessage
-- Mail sichtbar erstellen
set visible to true
-- Absenderadresse angeben. Könnte auch aus einer Variablen kommen.
-- set sender to "test@rechner.local"
-- Empfänger eintragen. Für Blindkopie aus recipients einfach bcc recipients machen.
make new to recipient at end of to recipients with properties {address:d}
-- Bei Bedarf weitere properties
(*
tell content
make new attachment with properties {file name:theAttachment} at after the last paragraph
end tell
*)
-- Mail in den Vordergrund holen
activate
-- Soll die Nachricht sofort automatisch gesendet werden, nächste Zeile auskommentieren
-- send newMessage
end tell
end tell

Den Artikel Eine Antwortmail an alle Absender von markierten Mails

iCal in Leopard

Posted in Calendar, Software on Oktober 27th, 2007

Also ich mag Leopard ja wirklich gern, aber warum wurde iCal die Seitenleiste genommen? Kann ja sein dass Schubladen out sind, aber Usability sollte doch zeitlos sein? Und die jetzige Lösung an weitere Informationen zu einem Termin nur dann zu kommen wenn man sich diese explizit einblenden muss, (recht schick mit Sprechblase) ist leider nicht sinnvoll und schon gar nicht bequem nutzbar. Ich halte die Änderung für einen deutlichen Rückschritt in der Usability von iCal.

Den Artikel iCal in Leopard

i(don´t)Work (in) 08

Posted in Calendar, Software on August 30th, 2007

Ich habe gerade mit Bedauern feststellen müßen dass die Applescriptimplementierung in iWork 08 nicht gerade Begeisterung auslösen kann.
Keynote und Pages bieten immerhin unvollständige Applescriptimplementierung, aber Numbers bietet überhaupt keine. Numbers ist schlichtweg nicht scriptbar.
Das hat mich tatsächlich sehr überrascht. Ich bin gespannt ob sich daran in kommenden Versionen etwas ändert, und bleibe bis dahin erstmal reichlich enttäuscht von dieser unangenehmen und sehr überraschenden Erkenntnis.

Den Artikel i(don´t)Work (in) 08

What QuickTime?

Posted in Applescript, Calendar on Juni 10th, 2007

In vielen Supportfällen ist es nötig die Version von QuickTime vom User abzufragen. Je nach Kenntnissen und Aufregungszustand des Gegenüber kann das dann mitunter eine Weile dauern bis man zu einer eigentlich simplen Antwort gelangt ist.
Um dem User hier ein wenig entgegen zu kommen habe ich mir mal folgendes überlegt:


tell application "QuickTime Player"
set a to get version
set b to get QuickTime Pro installed
end tell
if b is equal to true then
set c to "PRO"
else
set c to ""
end if
set d to "QuickTime on this machine: " & a & " " & c
display dialog d

Das Script fragt die aktuell installierte Version von QuickTime ab und ergänzt die Angabe um die Info “PRO” falls die Proversion von QT installiert sein sollte.
Ausgehend davon lässt sich das an die individuellen Bedürfnisse anpassen (Ergebnis per Mail versenden, auf Server stellen, in Datei schreiben, etc…)

Recovered Files

Posted in Applescript, Calendar on September 30th, 2006

Genervt von einem vollen Papierkorb nach dem Hochfahren von Tiger, obwohl man ihm vor dem Beenden extra geleert hat?
Die “Recovered Files” lassen sich nicht verhindern, was ja prinzipiell auch nicht verkehrt ist, aber man liest eben doch immer wieder dass Anwender sich durch deren Präsenz gestört fühlen.
Eine mögliche Abhilfe ist folgendes Script:


tell application "Finder" to empty the trash

Als Programm speichern (nur ausführbar, ohne Startdialog), und ab damit in die Startobjekte.
Es wird dann automatisch bei der Useranmeldung der Papierkorb gelöscht. Allerdings ohne Rückfrage und ohne Rücksicht auf Verluste. War etwas im Papierkorb was man evtl. doch gerne behalten hätte, hat man Pech gehabt.

Den Artikel Recovered Files

LaterMail

Posted in Applescript, Calendar on August 3rd, 2006

In Foren liest man des öfteren Bedauern darüber dass Mail Mails nicht zeitversetzt sendet.
Ich habe ein kleines Applescript-Programm gebastelt das verzögertes Versenden von Mails möglich macht.
Obwohl noch Beta, funktioniert es prinzipiell wie es soll, ich übernehme allerdings keinerlei Verantwortung für etwaige nicht gesendete Mails etc.
Ich freue mich über Feedback. Je nach dem wie zahlreich die Reaktionen ausfallen, werde ich das weiterentwickeln (Anhänge?), und ein ordentliches Read-Me hinzufügen.
Kurze Erklärung für Interessierte:
Das Programm legt in iCal einen neuen Kalender “LaterMail” an, in dem es alles nötige speichert. Zum angegebenen Zeitpunkt werden die Parameter aus dem Termin ausgelesen und abgearbeitet. Nachdem die Mail gesendet wurde, wird der zugehörige Termin gelöscht.
Das Programm ist frei verfügbar, ich bitte allerdings darum es nicht anderweitig zu vertreiben solange es noch Betastatus hat.

DOWNLOAD