Graffiti timelapse
Ein wunderbares Timelapse aus der Graffiti Szene:
gefunden via forfilmssake.com
Ein wunderbares Timelapse aus der Graffiti Szene:
gefunden via forfilmssake.com
Seit heute ist Google Play als kommerzieller Streamingdienst mit dem Angebot „all inclusive“ in Deutschland verfügbar.
Wie an verschiedenen Stellen im Netz zu lesen ist, setzt Google vor allem auf die nahtlohse Integration in Android und das dadurch „optimale Benutzererlebnis“.
Die technischen Merkmale (>20 Mio. verfügbare Songs, Streamingqualität, etc. ) sind vergleichbar zu Spotify und anderen Diensten und lockt für schnellentschlossende mit einem Angebotspreis von 7,99 € pro Monat. Verglichen mit den 9,99 €, die Spotify haben möchte, ist das ein gutes Angebot.
Mich stört leider schon einige Zeit an der Google Play Music App, dass dort sämtliche auf dem Greät abgespeicherten Audiofiles in die lokale Bibliothek aufgenommen werden – also auch die Podcasts, die BeyondPod für mich herunterlädt. Bei der Zufälligen Wiedergabe ist es dann störend, wenn auf das Lieblingsstück eine Podcastepisode folgt, obwohl ich statt Gequatsche gerade lieber Musik hören möchte.
Natürlich bin ich mit diesem Problem nicht alleine auf der Welt, doch auch die auf Stackexchange (http://android.stackexchange.com/questions/37490/how-do-you-prevent-google-music-from-importing-all-mp3-files-on-the-device) beschriebene Lösung unter verwendung von .nomedia Dateien hilft leider nicht.
Der direkteste Weg, eine .nomedia Datei in einem Verzeichnis auf Android zu erstellen, scheint übrigens die Terminal App zu sein. Verschiedene Dateimanager und Der Zugriff via USB Kabel vom Computer führten zu .nomedia.txt und .nomedia.c Dateien >:-| Spart euch den Umweg,falls ihr es versucht. Terminal App, ins entsprechende Verzeichnis wechseln und folgenden Befehl eingeben:
touch .nomedia
Aber ob es nun auf diesem Wege funktioniert oder nicht – viel zu umständlich auf jeden Fall. Schade, dass ich nicht in Google Music selbst gezielt Verzeichnisse ausschliessen kann. An diesem Punkt hat die Google Play Music definitiv Nachholbedarf ![]()
Angesehen von diesem Manko macht die Play Music und die dazugehörige App einen guten Eindruck, die Zufallswiedergabe funktioniert gut und die Radiofunktion liefert einen guten Mix zum gewählen Genre.
Die Verfügbarkeit des Streamingdienst kann vielleicht noch ein interessantes Kriterium sein, wenn ich mir überlege, ob Spotify oder Google Music: Spotify-Clients gibt es auf sehr viel mehr Plattformen und Geräten – sogar auf meinem Fernseher, der mit seinen Mediafähigkeiten den Mini-PC als Medienabspielgerät abgelöst hat.
Gerade eben ein super Feature der ZSH (für alle die es noch nicht kennen: ZSH ist zusammen mit oh-my-zsh die Kommandozeile) entdeckt:
Have fun ![]()
Gute Neuigkeit via allaboutsamsung.de
:
Samsung setzt Android 4.3 Update für Galaxy S III fort – noch nicht in Deutschland, aber die Schweiz anscheinend schon
Mal sehen, wann ‚was kommt.
oder: Gründe, einen Raspberry Pi in einen WLAN-VPN-Router zu verwandeln.
Da sind sie nun also erhältlich und endlich gibt es auch für Leute ohne Kreditkarte, die Möglichkeit im Android-Appstore aka Google Play kostenpflichtige Apps (und andere Inhalte) zu erwerben.
Nachdem ich die lang erwarteten Karten dann auch im Rewe in Weil am Rhein entdeckt habe, wollte ich es wissen und habe eine gekauft.
Erste Erkenntnisse:
Da der Ansatz, ein VPN zu benutzen, der vielversprechendste zu sein schien, habe ich als nächsten Schritt versucht, einen „WiFi-to-VPN“ Router zu konfigurieren. Bei den beiden naheliegenden Variante, direkt über die GUI Tools der beiden gerade verfügbaren Desktop Systeme hier, schlug leider fehl. MacOS ist der Meinung, eine freigegebene Internetverbindung lieber an der etablierten VPN Verbindung vorbei direkt über die Ethernetverbindung zu routen. Das Kubuntu System scheiterte an der hardwareseitigen Unterstützung des WLAN Moduls im Dell Latitude E6410 für den AccessPoint Modus – Intel-Chipsätze sind hier nicht so gesegnet.
Also auf zur nächsten Stufe: Den Raspberry Pi in einen Wifi Access-Point und VPN-Router verwandeln. Die grundsätzlichen Schritte sind auf e-linux-org: RPI-Wireless-Hotspot gut erklärt.
Eine Hürde stellte noch mein WiFI-Dongle dar (LogiLink WL0084A mit RealTek RTL8192CU Chipsatz), der nicht direkt durch hostapd (das softwareseitig den Access-Point bereistellt) unterstützt wird. Zum Glück findet sich auch hierfür im Internet Abhilfe (
Während des weiteren Feintuning bin ich dann noch über ein Tutorial gestolpert, dass auch den von mir genutzten WiFi Adapter bzw. Treiber nutzt und ebenfalls einen binär-Downlaod für das gepatchte hostapd verlinkt: http://learn.adafruit.com/downloads/pdf/setting-up-a-raspberry-pi-as-a-wifi-access-point.pdf
Auf Seite 22 wird dort auch erklärt, wie man die neue Version aus den Quellen kompiliert – und man damit die change hat, nachzuvollziehen worin die Änderungen bestehen und Sicherheitsbedenken ausräumen kann.
Nachdem wir nun also einen Access Point zur Verfügung haben, der uns an einem „deutschen Internetanschluss“ ins Internet leitet, sollte doch hoffentlich alles gegessen sein.
Soweit die Theorie
Denn Google Play zeigt auf dem „Zielgerät“ das gleiche Verhalten wie schon zu Anfang – es beendet sich kommentarlos wieder. Auf einem anderen Gerät werden zwar die Preise in Euro angezeigt (sicheres Zeichen dafür, das Play zumindest nicht mehr meint, wir wären in CH), aber es fehlt der „Einlösen“ Menüpunkt.
Alternativ bleibt noch der Weg über die Website https://play.google.com/store. Also über einen normalen Desktop & Browser und VPN dort eingeloggt und sehen wir den ersehnten „Einlösen“ Button. Wenige Schritte später erscheint die Bestätigung, dass
das Guthaben dem Konto gutgeschrieben wurde. Klar hätte man diesen Weg von Anfang an gehen können, aber dann hätten wir den Spass mit dem Pi ja nicht gehabt und jetzt keinen WiFi-VPN ROuter zur Hand, der Sicher auch an anderer Stelle nützlich sein kann ![]()
Den Kauf der ersten App vollziehen wir dann ohne VPN – ohne Probleme. Der angezeigte CHF Kurs wird in Euro umgerechnet und wie erwartet mit dem zuvor zugebuchten Guthaben verrechnet ![]()
Abschliessende Erkenntnis:
Hat man dann mal Guthaben auf seinem Konto, scheint es wiederrum egal zu sein, wo man sich aufhält – Apps und andere Inhalte kann man dann einfach von diesem Guthaben bezahlen.
Also, viel Spass jetzt auch ohne Kreditkarte im Play Store ![]()
P.S.: Über andere Probleme mit international genutzen Google Konten und den Guthabenkarten weiss der Blog stadt-bremerhavenzu berichten: Guthabenkarten nur mit dt. Adresse nutzbar.
Jemals über komische Sprach“features“ in Programmiersprachen gewundert? Oder über Kurisositäten geärgert?
Hier findet sich eine wunderbare Sammlung, gut um einfach mal zu lachen oder sich zu beruhigen, das die Absurdität in Sprache X, über die man sich gerade geärgert hat doch relativ harmlos ist
:
http://stackoverflow.com/questions/1995113/strangest-language-feature
Viel Spaß ![]()
Der Blogpost Google Maps – Route speichern erfreut sich immernoch grosser Beliebtheit, aber leider funktionier die Anleitung / der Trick (anfügen von &output=kml an die URL) nicht mehr . Also ein kurzes Update.
Man muss jetzt den Umweg über die „My Maps“ (Meine Karten) seines Google Profil gehen:
Nachdem man also eine Route zusammengestellt hat, wählt man am Ende der Liste der Stationen der Route am linken Bildschirmrand „Save to My Maps“ . Danach erscheint das im ersten Bild gezeigte Miniformular, in dem man eine existierende Karte oder das Hinzufügen einer neuen Karte („Other…“) auswählen kann.
Nachdem man hier uf „Speichern“ geklickt hat, gelangt man zur im zweiten Bild gezeigten Ansicht und findet dort den Link zum Herunterladen des KML, das die Route enthält:
Viel Spass beim Weiterverarbeiten der Routen ![]()
Bei Zen Pencils gibt es diese Woche einen wirklich guten Comic mit dem Titel „We’re all dying“.
Sehr „tiefes“, philosophisches Thema, dass dort aufgehangen an einem Zitat aus How To Be a Woman von Caitlin Moran aufgegriffen wird.
Lesenswert und genial illustiert. ![]()
Der folgende Post ist ein Cross-Post zum Canoo RIA Blog und daher auf englisch. Es geht um die Verknüpfung von OpenDolphin und Afterburner.fx – also um Java und Softwareentwicklung.
![]()
OpenDolphin
During the last JavaOne, Canoo announced the open sourcing of Dolphin.
OpenDolphin is a library that provides a remoting solution to bridge the world of Enterprise Java and Desktop Java or other client technologies (mobile, web).
Since then, a lot has happened around OpenDolphin and it keeps gaining more and more attention.
For me personally, it was from the first time I heard of it a very interesting project, but due to daily business and other projects I didn’t have the time to get into it.
Using JavaFx as the first client technology to be implemented was also a little hurdle as I haven’t done any serious work with JavaFX, yet.
(Besides, there is an JS implementation of OpenDolphin – it proves that OpenDolphin doesn’t tie you to a client UI technology.) But now, I’ve finally found some time to play with JavaFx and OpenDolphin ;-).
Afterburner.fx
As I attended to Adam Bien’s Airhacks Workshops in March, he introduced the Afterburner.fx mini-framework to the audience and released it a few days later.
Afterburner.fx is a minimalistic MVP framework for JavaFX that provides
„Zero-Configuration“ dependency injection (DI) of models and services
and
Convention-based unification of presenter, view, FXML and css.
Thus it enables the usage of the JavaFX scene builder (a UI design tool) to implement a clear seperation of layout and logic (as the layout is encapsulted in the xml). In his talk „Enterprise JavaFX 8“ Adam describes it as an implementation of „inversion of control“.
The outcome is a very powerful set of lightweight technologies to build JavaFx applications.
The wiring between the UI XML and the code a pretty minimal. On the one hand, in XML, you just need to define the controller class:
<AnchorPane id="AnchorPane" ... fx:controller="de.mynethome.presentation.DemoPresenter">
And optionally, event handler methods can also be set via XML with
<Button ... fx:id="button" onAction="#buttonClicked" />
In the code, the UI components get injected by the @FXML annotation and the name used as fx:id :
@FXML Button button;
Combine the power
My idea on the moment I saw it was to bring those two projects together to benefit from the features of both projects:
AfterburnerDolphin
You can find the outcome of this idea at my AfterburnerDolphin project at github.
It demonstrates the things mentioned above:
In the client module, you can find a clearly structured app, the design and layout clearly seperated (as extracted to xml and css files) from the logic (look at the App class and the DemoPresenter).
It’s all tied together via DI and convention-based confguration of afterburner.fx .
The client creates a PresentationModel and binds the button text value to the value of that model.
(DemoPresenter, Line 43)
public void initialize(URL location, ResourceBundle res){
JFXBinder.bind(ATT_ATTR_ID).of(textAttributeModel).to("text").of(button);
}
On a button click, the client communicates via OpenDolphin with the server (server module, ApplicationAction) where the command for a new value (current date) of the presentation model’s attribute is created and send as a response.
(ApplicationAction, Line 17)
actionRegistry.register(ApplicationConstants.COMMAND_ID, new CommandHandler<Command>() {
public void handleCommand(Command command, List<Command> response) {
ValueChangedCommand valueChangedCommand = new ValueChangedCommand();
long id = getServerDolphin().getAt(PM_APP).getAt(ATT_ATTR_ID).getId();
valueChangedCommand.setAttributeId(id);
valueChangedCommand.setNewValue(new Date());
response.add(valueChangedCommand);
}
});
That demonstrates how easy this set of technologies lets you set up a well structured multi-tier application
and implement a roundtrip between client and server.
Any business logic can be handled on the server, the client only need to implement the presentation. And the implementation and maintenance of the client UI is eased up by the clear structure implemented with the help of afterburner.fx .
The UI of this sample application is very simple, as you can see from the screen shot – before and after click on the button. The date used as die new button text is set on server side.


Conclusion
I think, the combination of AfterBurner.fx and OpenDolphin provides a very powerful featureset.
At first, it’s easy and quick to setup and design UI Layout with Scence Builder.
After that, AfterBurner.fx and OpenDolphin allow you to build an application with clear, distinct seperation between layers:
You can be up and running very quickly with a short time to initiate application development. With the clear seperation, I would expected the setup to provide the foundation for a very maintainable project.
And with OpenDolphin you protect your investment as you can very quickly provide an multi-channel application (providing an mobile app UI based on the already developed server code) or switch to another UI technology and reuse the business logic implemented on server side.
Further steps
Fork AfterburnerDolphin on github.
Find out more about Afterburner.fx, visit the Afterburner.fx Homepage.
Get more information on OpenDolphin with the OpenDolphin documentation.
Or look at the OpenDolphin videos on youtube.
Ein lesenswerter Kommentar über den Wert und die Wichtigkeit frei verfügbarer Schnittstellen und Formate und den negativen Effekt, den geschlossene Dienste haben, aufgehangen am „Shutdown“ des Google Readers:
http://www.marco.org/2013/03/19/free-works
Die zentrale Aussage wird nochmal zusammengefasst mit den Worten:
And we lucked out with Reader — imagine how much worse it would be if website owners weren’t publishing open RSS feeds for anyone to fetch and process, but were instead posting each item to a proprietary Google API. We’d have almost no chance of building a successful alternative.
That’s Twitter, Facebook, and Google+. (Does the shutdown make more sense now?)
Auch zeigt das Statement sehr deutlich, warum es immer noch Sinn ergibt, ein eigenes Blog oder eine eigene Bildergalerie zu pflegen und nicht alles einfach via G+, Facebook und Twitter zu machen. Denn dort sind es nur Beiträge in einem grossen System, über das Ihr keine Kontrolle (und zum Teil auch weniger Rechte) habt.
Übrigens wurde in der letzten Binärgewitter Folge auch über das Ende des Google Reader gesprochen, in den Shownotes finden sich also ein paar Hinweise auf Alternativen.
| M | D | M | D | F | S | S |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | ||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 13 | 14 | 15 | 16 | 17 | 18 | 19 |
| 20 | 21 | 22 | 23 | 24 | 25 | 26 |
| 27 | 28 | 29 | 30 | |||