Kategorien
Technology

Chromecast wird verschlimmbessert

Heute morgen hab ich ein paar Artikel in meinen Feeds gelesen, dass Google den Chromecast aufmotzen und nÀher an Android TV bringen will. Das Ergebnis ist der Chromecast mit Google TV. Hier ein kleines Beispiel aus den Werbetexten:

Dein Startbildschirm zeigt dir Filme und Serien von Streaming-Anbietern an einem Ort an.3 So musst du fĂŒr dein Programm nicht mehr zwischen verschiedenen Apps wechseln und suchen.

https://store.google.com/product/chromecast_google_tv

Bisher war der Chromecast ein relativ dummes EmpfangsgerĂ€t fĂŒr Streams vom Smartphone oder Tablet. Er konnte selbst fast nichts, ausser Bilder und die Uhrzeit anzuzeigen. Das ist auch der Grund, wieso ich alle anderen GerĂ€te mittlerweile abgebaut habe. Ich kann einfach mein sowieso vorhandenes Smartphone benutzen, um Medien aus meinen sowieso installierten Anwendungen auf den Monitor zu bringen und ich brauche nicht mal noch eine nervige Fernbedienung dafĂŒr.

Mit dem Chromecast kann ich Videos von Youtube, Netflix, Amazon gucken. Ich kann aus der Mediathek der öffentlich-rechtlichen Funkanstalten streamen, Musik von Spotify hören, meine Podcast aus Pocket Cast abspielen.

Tja. Sollte Google das wirklich so durchfĂŒhren, muss ich wohl wieder ein paar Raspberry Pis mit Kodi aufstellen. đŸ€·â€â™‚ïž

Kategorien
Technology

Neue Uhr: Fossil Carlyle HR

Meine Ticwatch hat vor ein paar Tagen den Geist aufgegeben: Bildschirm ist aus, auf dem LadegerĂ€t nur ein kurzes Vibrieren und sonst nichts. Das gleiche Verhalten war vor einigen Wochen schonmal aufgetreten, aber nach ein paar Tagen Entladung ist die Uhr nochmal zurĂŒckgekommen – diesmal bleibt alles dunkel.

Daher habe ich mich auf dem Markt fĂŒr Smartwatches umgesehen und ein paar GerĂ€te von Fitbit, Fossil und Garmin in die engere Auswahl genommen. Garmin ist fĂŒr meine Zwecke etwas zu spezialisiert, Fitbit hat zwei interessante GerĂ€te, die aber noch nicht verfĂŒgbar sind. Ausserdem wollte ich eine Android Smartwatch und kein System eines anderen Herstellers.

Daher ist es schliesslich die Fossil Carlyle HR geworden:

Die Carlyle HR mit einem Analogziffernblatt von Fossil

Die Spezifikationen sind gut:

  • Snapdragon Wear 3100
  • 8 GB Speicher, 1 GB RAM Arbeitsspeicher
  • 1.28″ AMOLED / 416 x 416 / 328 ppi Display

Die Uhr fĂŒhlt sich sehr viel schneller an als die Ticwatch und das Display hat einen gedimmten Modus, der das Ziffernblatt trotzdem noch gut lesbar darstellt. In direktem Sonnenlicht war es allerdings doch schwer abzulesen, da musste ich die Uhr dann kurz aufwecken, damit die Informationen wirklich gut zu erkennen waren.

Statt des Silikonarmbands habe ich mir direkt ein Metallarmband von einem Dritthersteller mitbestellt, die gleiche AusfĂŒhrung mit Magnetverschluss, die ich auch an der vorherigen Uhr getragen habe. SilikonarmbĂ€nder mit Schnalle sind nicht mein Favorit und von dem letzten habe ich irgendwann auch Hautirritationen bekommen.

Das erste Workout habe ich mit der Uhr auch gleich getrackt, wie ĂŒblich musste ich die Uhr dazu auf die Innenseite des Handgelenks drehen, damit mir die Knöpfe nicht in die Hand drĂŒcken. Zu dem Zeitpunkt war noch das Silikonarmband dran, deshalb war das etwas umstĂ€ndlich. Mit dem Magnetverschluss geht es heute hoffentlich etwas schneller.

Alles in allem gefĂ€llt mir die Uhr sehr viel besser. Das GehĂ€use ist etwas kleiner und vor allem nicht mit so viel Kram versehen. Schlicht und schwarz. Das Betriebssystem bietet keine Überraschungen, aber deshalb wollte ich auch wieder eine Android Smartwatch und nicht irgendetwas anderes.

Ich denke, die Entscheidung fĂŒr die Fossil Carlyle HR war richtig. Wenn mir die nĂ€chsten Tage keine Fehler auffallen, wird die Uhr wieder sehr schnell unsichtbar am Handgelenk werden und mir nur noch auffallen, wenn ich sie nicht umhabe.

*Update* Mittlerweile trage ich die Uhr ein paar Wochen und kann ein erstes Urteil abgeben: Die Uhr sieht auf jeden Fall besser aus als die vorherige. Sie ist etwas kleiner, was besser an mein Handgelenk passt. Allerdings bringt das auch Nachteile: WLAN lasse ich fast immer abgeschaltet, weil die Batterie ansonsten nicht mal einen Tag durchhĂ€lt. Die Verbindung zum Telefon besteht natĂŒrlich trotzdem, und wenn ich den ganzen Tag zuhause bin, schalte ich das WLAN auch mal fĂŒr Updates ein.

Wie die Battery mit eingeschaltetem WLAN durchhĂ€lt, wenn ich nicht den ganzen Tag zuhause wĂ€re, kann ich im Moment nicht sagen. Ich empfinde das also im Moment nicht als Nachteil, solange alle Funktionen der Uhr fĂŒr mich nutzbar sind auch wenn das WLAN abgeschaltet bleibt.

Kategorien
Technology

OnePlus 8 Pro: Erster Eindruck

Heute kam das OnePlus 8 Pro bei mir an. Deutlich schneller als erwartet. Die Ersteinrichtung ist wie bei allen Android-Telefonen eine Sache von wenigen Minuten, inklusive der wichtigsten Anwendungen wie Nextcloud, AndOTP, Keepass2Android und MailDroid.

Anschliessend hab ich zwei SchnappschĂŒsse mit der Kamera gemacht, bei normalem Licht im Wohnzimmer:

Der Fokus auf dem normalen Bild ist natĂŒrlich falsch auf einer der hinteren BlĂŒten gelandet, aber in der Nahaufnahme sieht man die Details sehr schön.

Übers Wochenende werde ich natĂŒrlich noch ein paar Fotos und wahrscheinlich auch ein Workout Video machen. Das Ergebnis gibt’s dann wieder in einem Update hier im Blog. 😀

Kategorien
Technology

Move React files into custom directories

This morning I tried to rebuild my instapaper clone for Nextcloud from PHP and plain javascript to React, but I needed to move the compiled javascript and CSS files into a custom directory structure for the nextcloud app release. I’m using create-react-app and react-app-rewired and apparently there is no simple way to modify the output directory „build“ to something different.

To avoid additional tools and steps in my process, I decided to write a piece of javascript and execute it with node after building my app via npm. To do this I created the following file move.js next to package.json:

const path = require('path');
const fs = require('fs');

const build = path.resolve(__dirname, 'build');
const target = path.resolve(__dirname, '..');

const errorLogger = (err) => err && console.log(err);

[path.join(target, 'js'), path.join(target, 'css')].forEach(dir =>
  fs.readdir(dir, (err, files) => {
    if (err) throw err;
    files.forEach(file => fs.unlink(path.join(dir, file), errorLogger));
  })
);

// copy javascript+css into custom directories
fs.readdir(build, (err, files) => {
  if (err) throw err;
  // copy javascript+map files
  files.filter(file => {
    return file.endsWith('.js') || file.endsWith('.map');
  }).forEach(file =>
    fs.copyFile(path.join(build, file), path.join(target, 'js', file), errorLogger)
  );
  // copy CSS files
  files.filter(file => {
    return file.endsWith('.css');
  }).forEach(file =>
    fs.copyFile(build + '/' + file, target + '/css/' + file, errorLogger)
  );
});

Now I can modify my npm scripts in package.json:

"scripts": {
  ...,
  "build": "react-app-rewired build && node move.js"
},

When running npm build the files are now copied into the proper directories for JS and CSS in my nextcloud app structure.

Kategorien
Technology

Bestellt: OnePlus 8 Pro

Es wird langsam Zeit, mein aktuelles Smartphone Sony XZ Premium durch ein neues Modell zu ersetzen. Nach ein paar Tagen Recherche habe ich mich entschlossen, das neue OnePlus 8 Pro zu bestellen.

Ich hatte letztes Jahr schon mit dem 7 T Pro geliebĂ€ugelt, allerdings war es mir noch etwas zu frĂŒh, das Sony auszutauschen. Aber ich hatte darauf spekuliert, dass OnePlus dem 7er wieder ein ordentliches Upgrade spendieren wird und das war auch so. Jetzt bin ich also nach 6 Jahren wieder zurĂŒck bei OnePlus. 😎

Der Versand soll nĂ€chste Woche starten und das Telefon wird vor dem 05. Mai bei mir ankommen – so die Notiz bei der Bestellung. Ich hab natĂŒrlich das schwarze Modell genommen. Leider kann man keine microSD Karte mehr in das Telefon stecken, aber im Moment komme ich auch mit 2x 64GB aus, also werden die 128GB im 8 Pro wohl auch ausreichen…

Ich bin gespannt, wann das Telefon kommt und ob ich wieder so zufrieden damit sein werde, wie mit dem OnePlus One und meinem jetzigen Sony XZ Premium.

Kategorien
Technology

KubeConEU wurde verschoben

Eigentlich wollte ich Ende MÀrz zur KubeConEU. Durch die letzten Meldungen zur Grippewelle und COVID-19 hatte ich mich schon gefragt, ob die Konferenz wirklich stattfindet bzw. ob ich wirklich an einen Ort möchte, an dem viele Menschen aus vielen LÀndern zusammenkommen. Die Entscheidung wurde mir jetzt abgenommen: die Konferenz wurde auf Juli/August verschoben.

The health, safety, and wellbeing of our attendees and staff are our highest priority, and we know that what makes KubeCon + CloudNativeCon such a great event is the people who gather there. Thus, after discussions with many community members, we have made the difficult decision to postpone KubeCon + CloudNativeCon Amsterdam (originally set for March 30 to April 2, 2020) to instead be held in July or August 2020.

https://events.linuxfoundation.org/kubecon-cloudnativecon-europe/attend/novel-coronavirus-update/
Kategorien
Technology

Vorbestellt: Sony Xperia XZ Premium

Seit ein paar Wochen beschĂ€ftige ich mich wieder mit Smartphones, da mein aktuelles OnePlus One mittlerweile in die Jahre gekommen und AkkukapazitĂ€t verloren hat. Ausserdem startet es öfter mal neu, was besonders nervig ist, wenn man gerade Musik oder Podcasts hört. Die Neustarts liegen auch nicht am verwendeten Custom ROM, das Verhalten war mit unterschiedlichen ROMs gleich


Wie auch immer. Der Titel sagt es ja schon: Ich habe mir das neue Xperia XZ Premium von Sony vorbestellt. Ausschlaggebend war die Hardware: neue Generation der Snapdragon CPU, sehr gute Kamera, erweiterbar durch SD-Karten.

Vorbesteller bekommen auch noch den Kopfhörer Sony MDR-100ABN dazu, wenn sie die IMEI des Telefons bis zum 31.07.2017 bei Sony Wow registrieren. Ich bin nicht an dem Kopfhörer interessiert, aber wenn ich ihn anschliessend bei Ebay fĂŒr einen guten Preis verkaufe, sinkt der Preis des Telefons auf ein ertrĂ€gliches Mass. Hoffentlich klappt das alles.

Nochmal zum Telefon selbst:

  • Snapdragon 835 (neuste Generation)
  • 4GB RAM, 64GB interner Speicher
  • 5,5”/14cm 4k Display (nur bei Videos u.Ă€., normaler Betriebsmodus ist anscheinend regulĂ€res 1080p)
  • 3230mAh Akku (nicht besonders groß, vor allem fĂŒr das 4k Display)
  • Frontkamera 13MP, 22mm Weitwinkel F2.0
  • RĂŒckkamera 19MP, 25mm Weitwinkel F2.0, Zeitlupe (bis zu 240FPS, konnte ich in einem Video-Review erkennen – aber niemand spricht darĂŒber, vielleicht muss ich dann mal ein eigenes Video dazu machen, wenn ich das Telefon habe) und Superzeitlupe mit 960FPS (ist allerdings begrenzt auf 0,2s, da muss man schon sehr genau drĂŒcken)

Die Superzeitlupe ist natĂŒrlich ein technisches Highlight, aber 0,2s sind schon sehr, sehr wenig fĂŒr ein Video. Da muss man schon sehr viel Übung haben oder mehrere AnlĂ€ufe aufzeichnen, wenn man eine bestimmte Sequenz in Superzeitlupe aufnehmen möchte. FĂŒr mich ist da die normale Zeitlupe mit 120FPS oder evtl 240FPS interessant. Wenn ich damit mein Training filme, wird die die Analyse der Technik nochmal sehr viel einfacher. Ausserdem kann ich damit meine Gehversuche in der Videobearbeitung weiter machen.

Jetzt muss ich mich aber noch ein paar Wochen gedulden, der offizielle Verkaufsstart fĂŒr das Handy ist der 01.06.2017. Ich hoffe, dass die Vorbestellungen dann auch als erstes geliefert werden und nicht wie bei manchen Computerspielen, die im Laden schneller verfĂŒgbar sind als fĂŒr die Vorbesteller.

Das war’s auch erstmal. Ich denke, ich werde noch ein paar Posts machen, wenn ich das Handy wirklich in der Hand habe. Ich werde diesmal auch versuchen, das offizielle ROM drauf zu lassen – aber rooten muss sein, glaub ich. Ohne Adaway halte ich nicht lange durch.

Kategorien
Technology

Docker image for Wallabag v2

Sometimes I want to save articles that I want to read for later, because I don’t have the time to read right now. There are a couple of free online services that you can use, like Instapaper or Pocket. The services all work the same:

  • you give them a link to a webpage you want to read later
  • they scrape the page and store the text
  • when you got time, you open the service in your browser or a mobile app and read the article
  • you can save, delete, star the article

But with my ongoing quest to avoid services and host my own versions of them, I began using my own installation of Wallabag a couple weeks ago. Of course I decided to run it in a Docker container. Wallabag provides an official docker image you can use to get started. It works fine, although I had an issue when trying to run it behind a reverse proxy. But I worked around that and Wallabag in general works good enough that I don’t feel the urge to switch back to Instapaper every time I use it. The android app could use some love, but – again – it works good enough that I don’t want to hang myself everytime I use it.

Then I had a couple of issues with the docker container on my server. I tried to restart a couple of my container and while checking the process list of the server I noticed a defunct process pointing to the s6 and nginx services in the Wallabag container. This lead to a full server reboot, because I couldn’t kill the process and I couldn’t get rid of the container.

Because I don’t like rebooting my server just because I have a stray container running, I build my own docker image for Wallbag based on php:apache image and without any kind of additional supervisor. I run a couple other containers based on this image and I never had any issues with them, so I hope there won’t be any stray processes on my server anymore.

To use my image, just run the following command on your command line:

docker run --rm -p 8080:80 -v ./data:/var/www/wallabag/data moritanosuke/wallabag-docker

After the container is up, you can access your Wallabag at http://localhost:8080. All data will be stored in the directory data, so you should be able to stop/start the container and all your stored articles should still be there. Please note that I use the option --rm, so the container will be removed as soon as it is stopped.

Personally I like to run my containers via docker-compose. Here’s an example for your docker-compose.yml:

version: '2'

services:
  wallabag:
    image: moritanosuke/wallabag-docker
    ports:
    - 8080:80
    volumes:
    - ./data:/var/www/wallabag/data
    environment:
    - SYMFONY_ENV=prod

Now you can just run docker-compose up and you should be able to access your Wallabag at http://localhost:8080 again.

My docker image is slightly bigger, 260MB for an apache image instead of 150MB for the official image based on Alpine Linux – but I take that if I don’t have to reboot my server every couple of weeks.

If you want to try Wallabag, please give my image a shot and report any issues so I can improve it.

Kategorien
Technology

Dockerfile to build qdirstat

Today I wanted to check how much diskspace I wasted in my home directory. On windows I’d use WinDirStat and on linux there is the alternative qdirstat. Unfortunately there is no pre-build binary for my distribution, so I decided to build from source. But I don’t want litter my system with Qt dependencies, so I decided to build it in a docker container. Here’s my Dockerfile:

First you have to create an image from this Dockerfile:

# copy the Dockerfile into a new directory and run the following command in a terminal in that directory
docker build -t moritanosuke/qdirstat .

Now you can start a container from this image to clone and build qdirstat:

# run the container
docker run --rm -it -v $(pwd):/usr/target moritanosuke/qdirstat

Now you should have the executable in the current directory. The owner will be root, but you should be able to run it on your local machine now – assuming that you have all dependencies to run Qt applications already installed. The container was removed right after it completed the build, so the only thing left to do is removing the image:

docker rmi moritanosuke/qdirstat

This is now my preferred way to build random open source projects without messing up my local machine. In earlier times I used full blown VMs with snapshots, but this is even faster.

Kategorien
Technology

Changing volume for the current audio device using pactl

I’m still in the process of setting i3wm up for use on my desktop and laptop computers. Today I noticed that my configuration still used a hardcoded value when changing the volume for my audio device. But I’m using a Xonar soundcard on my desktop, a logitech headset for my gaming needs and regular speakers on both the desktop and the laptop. I had to figure out how to get the current audio device and change the volume for that, instead of “just the first” audio device.

Luckily, the command line has all thing ready for this task and i3 makes it easy to configure it. The command pactl list short sinks produces output like this:

0 alsa_output.pci-0000_01_00.1.hdmi-stereo module-alsa-card.c s16le 2ch 44100Hz SUSPENDED
1 alsa_output.pci-0000_00_1b.0.analog-stereo module-alsa-card.c s16le 2ch 44100Hz SUSPENDED
2 alsa_output.usb-ASUS_Xonar_U7-00-U7.analog-stereo module-alsa-card.c s16le 2ch 48000HzRUNNING

Now it’s easy to get the device currently in use with simple grep and awk commands:

pactl list short sinks|grep RUNNING|awk '{print $1}'

This commands return the first row of the above output, i.e. 2 when I’m using my Xonar soundcard. Now I can modify my keybinding for the media keys on my keyboards or the scrollwheel on the Xonar device. Here’s the section from my configuration file (see all in my github repo):

# Pulse Audio controls
#increase sound volume
bindsym XF86AudioRaiseVolume exec pactl set-sink-volume $(pactl list short sinks|grep RUNNING|awk '{print $1}') +5%
#decrease sound volume
bindsym XF86AudioLowerVolume exec pactl set-sink-volume $(pactl list short sinks|grep RUNNING|awk '{print $1}') -- -5%
# mute sound
bindsym XF86AudioMute exec pactl set-sink-mute $(pactl list short sinks|grep RUNNING|awk '{print $1}') toggle