Windows 10: Still bad at handling multiple displays with different DPI settings

People are probably aware and used to that plenty of 3rd party software don’t handle well multi display setup with different DPI’s. The sad part is that not even the controls accessible via taskbar on Windows 10 are rendered properly.

  • The tooltip bubbles of hidden icons are in different size than the not hidden ones.
  • The volume panel and input method switcher scale up quite differently.

windows-multi-display-dpi

Anker: Extended battery that also expands

Two years ago I bought Anker extended battery for Samsung Galaxy S5. I used it during few longer trips while I kept it stored and checked it every 6 months when not used. Yet after two years the battery expanded…

anker-battery-1

anker-battery-2

I never had such issue with batteries form Mugen or original ones. I some times encounter expanded batteries like that but it’s usually either really old battery kept in a device or some ultra cheap one. Well, too bad that the warranty is “only” 18 months.

Don’t be fooled by w3schools, UTF-8 is not the default HTML5 charset

w3schools.com writes on various of their pages that

The default character encoding in HTML5 is UTF-8.

Even if you read the full page, you will probably get the impression that when you don’t specify encoding in HTML5, it will fallback/default to UTF-8. Which is simply not true. (UTF-8 is used as default in places like form submission but not when loading and setting encoding of a web page.) Just try creating following sample page:

<!DOCTYPE html>
<html>
 <body>
 <p>
 Příliš žluťoučký kůň úpěl ďábelské ódy.
 </p>
 </body>
</html>

It is displayed in Chrome or Firefox like this:

chrome-utf8-no-bom

The reason for this is quite obvious. HTML5 specification basically says that it defaults to ASCII-compatible character encoding which can any of many encodings including Windows-1252 (meaning ASCII).

Or as stated in Determining the character encoding, windows-1252 is Suggested default encoding.

So for proper UTF-8 usage there must be UTF-8 BOM at the beginning of the file or you must specify encoding in one of few ways (as w3c requires).

Android Wear 2.0: No more ambient notifications (peek mode)

Ambient peek mode is not just deprecated, it’s completely removed from Android Wear 2.0 onward.

Ambient mode is great, it keeps the screen always on. No need to twist your arm to see time. Especially if you have a watch with (transflective) display that doesn’t need backlight (Sony Smartwatch 3, Moto 360 Sport, Casio WSD-F10).

What can be even better? Add the last notification to that. So then you can see both time and your last notification on display (without backlight and without the need to move arm).

Now that’s gone…

.setAmbientPeekMode(WatchFaceStyle.AMBIENT_PEEK_MODE_VISIBLE)
.setPeekOpacityMode(WatchFaceStyle.PEEK_OPACITY_MODE_OPAQUE)

Yep, these are the Notification Changes in Android Wear 2.0, also see comments on /r/androidwear (Reddit).

everyday-ambient-peek

There goes the great usability of my Everyday digital watch face.

So, what’s the solution? Develop user notification observing service on phone that will provide notification content as complication to watch faces? That duplicates one Android Wear feature and kind of complicates it…

Complications for (Android Wear and Apple Watch) are good in general. However in this particular use case it means that instead of two lines/methods that allowed the use of ambient peek mode, it will require way more code in two different apps.

Observing notifications on phone and providing them to complication: The issue here is that the last notification may not match the actual last notification on watch (as there may be local only notifications). Another issue is that already configured notification blacklist that is managed by Android Wear and this app will need to duplicate that (with user configuring both lists).

All My… (Xposed Tweaks) feature: Compact Volume Panel

“Compact Volume Panel” is one of many features/tweaks in my Xposed module (since version 0.4.3 this tweaks is compatible with TouchWiz devices running Android 6.0). This particular tweak trims down the size of the system volume panel. As you can see on the screenshot of Youtube (before and after), it gets rid of all the white space covering one third of watched video.

touchwiz-compact-volume-panel

There’s one downside though. If you expand the volume panel to see all (four) volume streams, there are no text labels next to them. Unfortunately TouchWiz uses the same icons for all volume streams (icons are different on CyanogenMod).

There are ways to customize the volume panel in similar way even without Xposed or root (like Noyze or SoundHUD) but it requires background running service so it won’t be as power efficient as using this tweak.

PayPal and their completely useless monthly emails

Every month PayPal sends email instructing me to view my recent transactions. There’s Log In Now button that takes me to the PayPal (video playing) homepage.

paypal-monthly

Return-Path: <bounce@mail.paypal.com>
Delivered-To: <e@mail.server>
Received: from mail.server
	by mail.server (Dovecot) with LMTP id gDmDGSyhf1eAPgAAqXVTCg
	for <e@mail.server>; Fri, 08 Jul 2016 14:48:44 +0200
Received: from localhost (localhost [127.0.0.1])
	by mail.server (Postfix) with ESMTP id 5B896611
	for <e@mail.server>; Fri,  8 Jul 2016 14:48:44 +0200 (CEST)
X-Spam-Flag: NO
X-Spam-Score: -6.215
X-Spam-Level:
X-Spam-Status: No, score=-6.215 tagged_above=-999 required=6.2
	tests=[BAYES_50=0.8, DKIM_SIGNED=0.1, DKIM_VALID=-0.1,
	DKIM_VALID_AU=-0.1, HTML_IMAGE_RATIO_06=0.001, HTML_MESSAGE=0.001,
	T_FILL_THIS_FORM_SHORT=0.01, URG_BIZ=0.573, USER_IN_DEF_DKIM_WL=-7.5]
	autolearn=no autolearn_force=no
Authentication-Results: mail.server (amavisd-new); dkim=pass (2048-bit key)
	header.d=mail.paypal.com
Received: from mail.server ([127.0.0.1])
	by localhost (mail.server [127.0.0.1]) (amavisd-new, port 10024)
	with ESMTP id 4ZX9RklyCFml for <e@mail.server>;
	Fri,  8 Jul 2016 14:48:42 +0200 (CEST)
Received: from mta105b.pmx1.epsl1.com (mta105b.pmx1.epsl1.com [142.54.244.105])
	by mail.server (Postfix) with ESMTPS id 27AA160C
	for <e@mail.server>; Fri,  8 Jul 2016 14:48:41 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; d=mail.paypal.com; s=pp-epsilon1; c=relaxed/relaxed;
	q=dns/txt; i=@mail.paypal.com; t=1467982122;
	h=From:Subject:Date:To:MIME-Version:Content-Type;
	bh=0FJrQUoSLR/R4yQzZNUiH+PsVOliAPbMStKVnxq7PvE=;
	b=J1cKlB2l2RXPYI7lAoTxV69iRbikcvPRg6ar5+uMjb1py4d6CeDUidLeEoL8payF
	O4ICSRWV0RdNPhY/ka8bcTsMgyD1FGDd/dXuI0e+O/fjRDisq7+7wbcqZWK9vWKd
	sfxo4qD0ydPbuSGs9HGdWIga/99I97e2tdhVrUsGC6dqEZqvdcRPhcoDrjKh4iPk
	hYDnpZvBzwN5UJRoZYrrkbH/ZBo27v0V1+QI/oZizysl0JSM3fO/gwhxdBCj1ntH
	ptffhHl+ecPNy2iYhlN2d3BZFRXDXHdETIrGFtw2ytwzU3zQJQJ8d21eqDlL5UEO
	FMHH5wZfdkdzaiKQoLvLKA==;
Received: from [10.233.19.183] ([10.233.19.183:53679])
	by pc1udsmta2n20 (envelope-from <bounce@mail.paypal.com>)
	(ecelerity 3.5.0.35861 r(Momo-dev:tip)) with ECSTREAM
	id F7/F3-03462-A21AF775; Fri, 08 Jul 2016 08:48:42 -0400
List-Unsubscribe: <mailto:bounce@mail.paypal.com?subject=list-unsubscribe>
Message-ID: <HP2v200000155ca8cb6deb83955f4bbcfb648141@mail.paypal.com>
MIME-Version: 1.0
Reply-To: "noreply@mail.paypal.com"
 <noreply-HP2v200000155ca8cb6deb83955f4bbcfb648141@mail.paypal.com>
Subject: View your recent transactions now.
From: "PayPal" <paypal@mail.paypal.com>
To: e@mail.server
Date: Fri, 8 Jul 2016 12:48:42 +0000
Content-Type: multipart/alternative;
 boundary="-=Part.6982f5d.49a92c9e798c69ea.155ca8d8e15.2f7d72b4d1e48053=-"

It’s no scam, the email is genuine, it really comes from PayPal. Unfortunately there are no options to turn of these emails.

paypal-notifications

I tried contacting PayPal few times in the past. I always got confirmation email informing me they will reply within the next 24 hours and that was it, no further message. I guess it’s probably because it’s “handled” by the European branch.

OnePlus 3 has extra hardware button, so they removed scheduled “Do not Disturb”

Every Android device since version 5.0 has native support for “Do not Disturb” mode (sometimes also called Interruptions/Down time/Priority mode or Zen mode in source code). With the current version of OxygenOS, OnePlus 3 is probably the first device that comes with crippled DnD: If you use Google backup/restore to transfer data to OnePlus 3, you end up with some(how/times) starting DnD but not ending according to your schedule. OnePlus staff promises they fix the issue – DnD will not go on or off according to previously restored schedule.

oneplus-3-dnd

The fact is that OnePlus removed various DnD settings (most importantly schedule for Priority mode) and they claim it’s because the phone has extra hardware slider:

It’s hard to implement with a hardware override, basically if we allow the “normal process” to happen (say we allow a software DnD in only the “ringer” position of the alert slider) if the Alert Slider is any other position, the software DnD will not work, as the hardware button will always override the software settings. This can be very confusing from a UX perspective as a user will most likely see this feature as broken and say there is a bug. We are looking at possible implementations of it, but nothing is decided at the moment.

Source: OnePlus Staff Member reply from discussion at forums.oneplus.net

Any sane person could probably suggest possible implementation:

  • Position A – software managed, position B – Silent…
  • Position A – software managed, position B – One time triggered Silent mode until when next Priority mode ends…
  • Option to use the slider for something completely else (rotation lock, flashlight, songs switching…)

After all Apple is able to offer scheduled DnD while having hardware switch/mute.

Make NVMe bootable by modding BIOS on your 4 years old motherboard

Just like in the smartphone market, most motherboards usually receive few BIOS updates within one year and that’s it. No single new feature ever comes to old motherboard BIOS.

With my less than 4 year old motherboard (Asus P8Z77-V PRO Thunderbolt), I can upgrade to few fast non-NVMe starages on PCI-E but it won’t be as fast and efficient as NVMe. The great thing about PC modularity is that even few years old PC can get USB-C or M.2 support via PCI-E adapters (that provide enough speed and power).

However the most trivial yet most complicated thing is to get the NVMe storage in PCI-E adapter boot as system drive. As these motherboards already have UEFI and we use modern operating systems (Windows 8/8.1/10), it’s all about software. Asus introduced NVMe boot support to newer lines of motherboards and (as usual) not backported it to older lines.

The most amazing thing is that you actually can get full NVMe support in your BIOS. Just follow this [Guide] How to get full NVMe support for Intel Chipset systems from 6-Series up on how to mod and flash BIOS for your motherboard.

asus-nvme

I didn’t try that yet but based on all the feedback it seems working pretty well. Luckily this makes my setup of mentioned motherboard together with Intel i7-3770K and 32 GB DDR3 RAM less obsolete. (Thanks Asus, now I have reason to hate you too.)