Sonntag, 3. November 2013

OS X Mavericks und iPhone: Zwang zur iCloud

Das Ende von iPhone? Seit OS X Mavericks wird der Benutzer dazu gezwungen, sein privates Adressbuch und seinen privaten Kalender auf die Server von Apple in die USA zu laden, wenn er diese mit dem iPhone synchronisiert halten will. Vorher war es möglich, das iPhone direkt mit dem Mac zu synchronisieren, in iTunes über WLAN oder USB - vor kurzer Zeit noch gross angekündigt.

http://support.apple.com/kb/PH12117?viewlocale=de_DE

Die Einstellung in iTunes fehlt tatsächlich:


Das war super gut versteckt, nirgends steht was davon - das Sync war einfach weg. Und genau so habe ich auch gemerkt: nach 2 Wochen Mavericks fehlen immer mehr Termine in meiner Agenda... wo sind die hin???

Zeitgeist? 

Ein arroganter Schritt von Apple, gerade im Context der aktuellen Debatte über Privatsphäre, NSA-Skandal etc.?? 

Was ist der nächste Schritt: synch. der Fotos auch nur noch über die Apple Server?
Wer hat überhaupt Zugriff auf die Server der iCloud? Wo stehen sie? Was für ein Betriebsystem haben sie?

Ist das für mich nun das Killer-Feature gegen das iPhone... Seit dem Palm synche ich meine Kalender etc. mit dem Mac - fertig schluss damit? 

Zugegebenermassen ist es natürlich (technisch) sehr viel einfacher, mehrere Geräte über einen Server zu synchen... 

Private Cloud

Wenn Apple schlau wäre, könnte sie einen neuen Trend setzen: Private iCloud. Die Software der iCloud läuft zuhause bei den Kunden, z.B. auf einem OS X Server oder einer TimeCapsule (die unter NetBSD läuft), unter der Kontrolle des Kunden. Dann hätte Apple 2 Fliegen auf einen Schlag: Privatsphäre und Kundenbindung...

Vielleicht ist das eine Alternative:

http://owncloud.org

Oder eben doch tatsächlich OS X Server Mavericks:
http://www.apple.com/osx/server/features/#communications

Fazit

Zwingt mich nun Mavericks vom guten alten Sync von der iCloud zur private Cloud? Hmm... etwas aufwändig, aber naja...
Meine privatesten Daten - Agenda und Adressbuch - auf einen US-amerikanischen Server zu laden bleibt leider für mich immer noch keine Option.


Nachtrag März 2014

Apple krebst zurück und schaltet die Synchronisation wieder ein? 



Freitag, 1. November 2013

Attributbasierte Zugangskontrolle

Um den Business-Analysten einen Kurzeinführung im Unterschied zwischen Rollen- und Attribut-basierter Zugangskontrolle zu geben, habe ich eine kleine Prezi gemacht:


http://prezi.com/qcnwwabem79t/attributbasierte-zugangskontrolle/#


Donnerstag, 3. Oktober 2013

PostgreSQL Studio

Geil - ein neues GUI für meine Lieblingsdatenbank!

http://www.postgresqlstudio.org/about/



ps: und erst noch mit GWT implementiert…

Montag, 30. September 2013

Flyway und Liquibase - Zustand einer Datenbank

Neue (also für mich neue) Ansätze für ein altes Problem: Java-Programme sind dank Maven und Versionskontrolle wunderbar versionniert.
Was aber mit den Daten auf den verschiedenen Stages in den verschiedenen Datenbanken? Wo Tester und automatische Integrationstests dran rumfummeln?
Interessante Antworten:



http://flywaydb.org/getstarted/howFlywayWorks.html
und
http://www.liquibase.org/documentation/databasechangelog.html


Ich bleibe dran.

Duke Pad - Himbeerkuchengui

Das ist ja mal etwas interessantes:
Ein Ansatz dafür, dass nicht mehr in jeder Bus-Anzeige, Bahnhofs-Abfahrtstabelle oder in jedem Bancomat eine Uralt-Version von Windows läuft, um etwas zu visualisieren... Und das alles noch in Java.

https://wiki.openjdk.java.net/display/OpenJFX/DukePad



Dienstag, 21. Mai 2013

git: die Sache mit den versehentlich eingecheckten Files

Wie in allen SCM, die gleiche Leier:
Ich habe was eingecheckt, das ich local brauche, aber nicht unter Versionskontrolle sein soll. Klassiker sind dafür: Projektfiles (eclipse .project, .idea), target, generierte Sachen...
Das gleiche Problem habe ich schon für CVS beschrieben.


Nun hier für git, zwei Links:


http://stackoverflow.com/questions/11124053/accidentally-committed-idea-directory-files-into-git
http://stackoverflow.com/questions/1143796/git-remove-a-file-from-the-repository-without-deleting-it-from-the-local-filesy


oder kurz: git rm -r --cached .datei

Mittwoch, 8. Mai 2013

Brother PT-2420PC Etikettendrucker und Mac OS X 10.8

Drucker ade

Seit Jahren tut mein PT-2420PC wunderbare Dienste, und die Etiketten, die er produziert, sind echt unzerstörbar, auch nach Jahren Regen, Schnee und Eis im Garten. Echt gut, das Ding. 





Aber ein trauriger Entscheid von Brother zerstört das Ding: Mac OS X 10.8 wird nicht mehr unterstütz, laut Brother sollte ich das Ding wegwerfen, ein neues kaufen oder auf Windows 8 umsteigen. Denn: Windows 8 wird unterstütz, Mac OS X 10.8 nicht: siehe Treiber-Link von Brother. 
Um sicher zu sein, habe ich den Support von Brother kontaktiert, die mir tatsächlich sehr schnell geantwortet haben: 

Dear Mister Schumm

Thank you very much for your email. Regrettably a driver for MAC OS X 10.8 will not be produced. The PT-2420PC is only compatible up to Mac OS X 10.6.
We hope that this information will answer your question.
Don't hesitate to contact us again, if you have any other question.

Best regards.

C. S. Agent 1st Level Support

Brother (Schweiz) AG
Täfernstrasse 30, Postfach, CH-5405 Baden 5 Dättwil
Traurig, lausig. Vor allem, da ja Windows 8 nicht wirklich der Verkaufsschlager ist…
Ps: der Treiber von 10.6 läuft auch mit 10.7 - nachher scheint Apple was umgebaut zu haben, das nicht mehr läuft. (Warum das so ist, weiss ich auch nicht…)

Lösung

Natürlich werde ich nicht wegen des Druckers Windows 8 kaufen (das musste ich schon mal wegen des iPhones für jemand, der das iPhone mit Ubuntu benutzen wollte…) 
Und ich werde auch nicht für Fr. 350.- einen neuen Drucker von Brother kaufen. 

Idee: einen virtuellen Mac mit https://www.virtualbox.org. Habe ich aber noch nicht geschafft, ich bleibe dran und werde das Ergebnis hier publizieren. 

Dienstag, 7. Mai 2013

MacBook Pro: neue Harddisk

Ich werde ca. schon zum 3. Mal gefragt, wie das geht, drum schreibe ich dazu einen Blogbeitrag:

Ausgangslage: 

Jemand hat ein MacBook Pro, ca. 3 Jahr alt oder neuer, und es wird immer langsamer. Ursache ist meistens: Harddisk ist fast voll. 
Die Lösung: neue Harddisk rein, am besten auch grad auf 8 GB RAM aufrüsten. 

Wer sehr viel Geld hat, kann sich eine SDD kaufen, sonst empfehle ich eine Hybrid-Disk wie die Seagate Laptop SSHD oder so. 

Umbau: 

Mit dem Programm http://mactracker.ca findest Du raus, was Dein Mac intern für eine Schnittstelle hat. Meistens ist es S-ATA. Kaufe Deine neue HD entsprechend. 
In der Doku deines Mac http://support.apple.com/manuals/#macbookpro oder auf http://www.ifixit.com/ findest Du raus, wie man Deinen Mac auseinandernimmt. Meistens ist die HD sehr gut zugänglich, vor allem bei den Mac, wo man noch die Batterie wechseln konnte.

gut zugänglich



Dann gehts los: 

  1. Mach ein TimeMachine Backup
  2. Bau die alte HD aus, und die neue ein. 
  3. Schliesse die alte HD über ein externes S-ATA - USB - Kabel als externe HD an. 
  4. Schalte den Mac ein, und drücke dabei «alt» , um das Boot-Volume zu wählen. 
  5. Wähle die alte (externe) Disk und boote so. Dein Mac sollte sich jetzt gleich verhalten wie vorher, nur langsamer, da extern angeschlossen. 
  6. Wähle das Mac OS X Install Programm (z.B. für Mountain Lion) und installiere das System neu auf der neuen (internen) Harddisk 
  7. Das System bootet während der Installation neu. 
  8. Wenn der Migrations-Assistent kommt, sag: «Ich habe schon einen Mac» und importiere alles von der alten Harddisk, die ja immer noch angeschlossen ist. 
  9. Fertig. 
  10. Nachdem alles vorbei ist, mache wieder ein TimeMachine Backup. Ab Mountain Lion wird TimeMachine merken, dass eine neuen Harddisk eingebaut wurde, und das Backup weiterführen, ohne von neu zu beginnen. Siehe diesen Post.
Das sollte klappen…. 

alte HD mit SATA-USB-Kabel


Montag, 11. März 2013

Swisscom NATEL: Achtung hohe Rechnung!

Vor einigen Tagen kam bei mir eine "Update der Netzbetreiber-Einstellungen" auf dem iPhone rein:


Was ist das bloss?!? Ich habe es - der swisscom blind vertrauend - angenommen.

Jetzt ist klar, was das war:
Das update aktiviert die automatische Einwahl in die swisscom hotspots: MOBILE-EAPSIM etc.!

Wo ist das Problem? 

Eigentlich wäre das ja gut, aber: Wenn das iPhone sich in einem WLAN wähnt, kann es ungehindert tonnenweise Zeugs aus dem Internet nachladen, z.B. Filme, Software-Updates etc. etc.. z.B. synchronsiert Evernote Megabytes-weise Zeugs, sobald es in einem WLAN ist. 
Und Achtung: Swisscom verrechnet diese Megabyte voll und ganz mit denen, die man im Abo gelöst hat, in meinem Fall sind das 250MB pro Monat. Alle weiteren Megabytes kommen sehr teuer auf die Natel-Rechnung. 

Lösung:

Darum habe ich die Swisscom WLAN immer deaktiviert (dieses Netzwerk ignorieren etc.), um zu verhindern, dass meine Natel-Rechnung explodiert. 
Ich finde, möchte Swisscom, dass wir die WLAN benutzen, muss sie deren Benutzung unlimitiert machen. 
Naja, natürlich entfällt dieses Problem bei den Leuten, die so ein unlimited-Abo haben... was ich leider nicht habe. (Dafür mit unlimited Speed :-) ) 

Nachtrag: 

Was genau Swisscom mit diesem Update ändern wollte, kann ich nicht nachvollziehen. Vermutlich wollten sie mehr ändern, und haben nur nebenbei diese WLAN aktiviert. 

Mittwoch, 6. März 2013

Das Erbe von WebObjects

Meine ersten Schritte in der Welt von Mac OS X, Web-Applications und OR-Mapping machte ich im Jahr 2001 mit WebObjects / EOF (und natürlich mit dem TemperatureConverter in Cocoa) - leider habe ich danach den Anschluss verloren.

WebObjects und EOF haben mich geprägt, und wesentlich dazu beigetragen, dass ich die ganze Zeit über misstrauisch über die Komplexität von JPA, Hibernate, JSF, etc. etc. geblieben bin. NeXT und Apple konnten das damals schon - warum war das bis jetzt in der Java Welt so kompliziert?

Leider ist WebObjects und EOF mehr oder weniger eingestellt (EOF lebt als CoreData in OS und iOS weiter) - es gibt aber noch Open-Source-Spuren davon, die ich hier aufschreiben will:




Type Coercion

http://tapestry.apache.org/typecoercer-service.html
das muss ich mir mal genauer anschauen. (Im Zusammenhang Authorization Context, Types, XACML)


(Ok, dieser Post war jetzt tatsächlich nur Note to Myself. :-)


Montag, 4. März 2013

mvn: viele Projekte, die faktisch nur eines sind.

Die Ausgangslage

Ich bin "Integrator" in einem mittelgrossen Projekt, das aus mehreren "Komponenten" besteht. In einem normalen Fall würde man ein (hierarchisches) maven-Projekt erstellen, mit den "Komponenten" als Sub-Module. In meinem Fall wären das ca. 14 Submodule (ca. 3 JEE6-Applikationen, Modelle etc.), wobei die Submodule auch wieder in Submodule unterteilt sind. 
Das Set-Up wäre also vergleichbar mit dem Set-Up von JBoss AS.

Die Entwicklung zum Problem

Durch meine anfängliche Unerfahrenheit als Integrator liess ich mich durch Architekten und anderen Entwicklern dazu verleiten, das Projekt aufzuteilen: 
Die "Komponenten" sollen unabhängig sein, weil sie später von anderen Projekten wiederverwendet werden sollen, und auch von anderen Entwicklerteams weiterentwickelt werden.  
Was dabei rauskam: 14 Total unabhängige Projekte, mit eigenem mvn-Build und eigenem Job auf der Continous Integration (Hudson), z.T. mit eigenem CVS (sic!) Repository, die aber eine enge Kopplung via Maven-Dependencies untereinander haben. 

De-Facto handelt es sich aber um ein Projekt, die Entwickler arbeiten immer an 4-5 Projekten gleichzeitig.
Um dieses Problem zu entschärfen, habe ich alle 14 Projekte und deren Dependencies von der Continous Integration als SNAPSHOT builden lassen. So haben alle Entwickler immer die neuste Version von allem. Ausserdem habe ich die Dependencies durch ein BOM-pom (Import eines Dependency-Management) synchronisiert - was mir von den Architekten etc. prompt wieder verboten wurde, weil "Abhängigkeit". 

Dieses Set-Up hat uns aber massive Probleme mit der Aktualität der SNAPSHOT beschert. 

Ausserdem: das Release der 14 beteiligten Projekte und deren Abhängigkeiten ist eine "Integration Hell" und beschäftigt einen Entwickler 6h lang. 

Lösungsansätze

Probleme mit der Aktualität der SNAPSHOT zu entschärfen, haben wir uns überlegt, dass die Entwickler die Sub-Projekte halt releasen soll und die Abhängigkeiten von Hand in den abhängigen Projekten nachtragen soll. Auch das ist natürlich sehr fehleranfällig und sehr zeitaufwändig. 

Frage

Die Frage ist nun: gibt es ein Werkzeug, dass die Abhängigkeiten bei einem Release der 14 Projekte in den abhängigen Projekten automatisch nachführt? 
Mein (unerfahrenes) Gefühl sagt mir, dass ich hier total auf dem Holzweg bin, und die 14 Projekte eigentlich nur eines sein sollten, so wie JBoss. Wenigstens so lange, wie das Team "querbeet" daran arbeitet. 
Was aber sage ich meinen Architekten, die finden, jede "Komponente" müsse total unabhängig sein?
Und was ist mit den Projekten, die jetzt schon abhängig von einem unserer "Komponenten" sind?


Fazit und Lösung: 

Nach vielen Diskussionen (mit maven-Experten) hat sich diese Lösung herauskristallisiert, die mir eigentlich von Anfang her als Gefühl klar war (siehe oben): 
In einem solchen Set-Up sollte nur ein Maven-Projekt existieren: die 14 Teilprojekte werden module dieses Projektes, wobei diese Module wiederum sub-Module haben können. 
Das gibt keine Einschränkungen in Sachen low-coupling. 
Werden später die Module tatsächlich eigenständige Projekte, die von einem eigenen Team separat entwickelt werden, und auch einen total unabhängigen Release-Zyklus haben, können die Module leicht herausgelöst werden. 
Anders ausgedrückt: Die Zusammenfassung als maven-Projekt sagt nichts aus über die Kopplung der Software in den Modulen. Sie bildet nur den Fakt ab, dass die Module gemeinsam gebaut werden. Die Module bleiben schwach gekoppelt, unabhängig und wiederverwertbar. 



Links:

http://stackoverflow.com/a/11478970/1800814
http://stackoverflow.com/a/2837816/1800814


Sonntag, 10. Februar 2013

IceScrum


nach über einem Jahr habe ich IceScrum mal wieder angeschaut: Endlich ein anständiges Scrum-Tool, dass von der Usability sogar so gut ist, dass es einem den Scrum-Prozess erklärt (nicht wie andere Tools, bei denen man erst die Anleitung lesen muss, um zu verstehen, wie die nun Scrum abbilden…)
Und das beste: War in einen JBoss 7.1 reinschmeissen - läuft. Fertig. So einfach kann das sein. 

IceScrum auf meine MacBook im JBoss






IceScrum in der JBoss Console


Seitenhieb: Warum Werkzeuge? Wir nehmen Excel


Natürtlich werden solche Tools meisten nicht eingesetzt, Hauptargumente von den ProjectManagern sind: «Wir brauchen keine Werkzeuge, wichtig ist, dass wir den Prozess richtig machen». Oder: «Das Tool ist nicht strategisch, wir haben ein anderes, dass das kann.» (Aber niemand braucht, weil es zu schlecht ist.) 
Am Schluss machen sie ihr Backlog mit Excel, in jedem Projekt ein anderes. Das nie aktuell ist. 
IceScrum kann sogar exportieren: 


Das sieht dann aus wie eine Excel-Liste. Man könnte ja dann sagen, wir bräuchten nur Excel - das IceScrum ist nur ein Tool um Excel abzufüllen. Leider kann IceScrum nicht zu Excel exportieren - das ist dann wohl ein Killerkriterium. Denn: «Wir brauchen keine Werkzeuge.» Oder wie war das? 

Report, der wie Excel aussieht.

SourceCode

IceScrum ist OpenSource. 
Cool! 


AjaxPush: Atmosphere

Zufällig drübergestolpert (im Stackstrace von IceScrum):
https://github.com/Atmosphere
Wenn man eine anständiges Framework benutzt (GWT… und so) ist das natürlich schon dabei, aber vielleicht könnte man das ja mal brauchen.
Sehr interessante Möglichkeiten, inkl. Messaging-Bus im Cluster und von Browser zu Browser.
Wo der Unterschied zu Errai ist habe ich grad noch nicht abgecheckt.