Die Pandemie hat meine Macbook Batterie zerstört.

Vor anderthalb Jahren ersetzen lassen, und trotzdem ist jetzt ist der Akku aufgebläht und beginnt das Gehäuse zu verformen.

Wieso ist mir das Vorher jahrelang nicht passiert und jetzt plötzlich nach so kurzer Zeit?

Die Antwort fand ich im Systembericht:

Informationen zum Batteriezustand:
Anzahl der Zyklen: 20

Ich hatte also mein Macbook während anderthalb Jahren gerade mal 20 mal vom Strom genommen. Das vertragen Lithium-Ionen Akkus scheinbar nicht, die wollen regelmässig entladen und geladen werden und fühlen sich am wohlsten wenn sie nicht dauernd auf 100% aber auch nicht zu tief entladen sind.

Kein Wunder: vor der Pandemie war das Macbook immer dabei, im Zug, in Sitzungzimmern, bei Lieferanten, etc.

In Pandemiezeiten mit Lockdown und Co. ist er nun die ganze Zeit im Homeoffice am Strom. Das hat den Akku wohl getötet.

Neuere Macbooks (jene die mit USB-C geladen werden) haben dazu ein Batterie Management was ich bei stationärem Einsatz dringend empfehle:

Meiner hat das leider noch nicht:

Bleibt also nur der Hinweis: Regelmässig den Mag-Safe Stecker ausstecken und den Mac auf Batteriebetrieb laufenlassen.

Globaler Tastenkürzel für Mute/Unmute von Microsoft-Teams auf Mac

Wer kennt es nicht, es ist ein Video Meeting am laufen und man ist vorbildlich stumm geschaltet weil man gerade nicht am sprechen ist. Während man gerade in einem anderen Programm am Mitschreiben oder Tickets am organisieren ist, kommt die Frage: „Und was meinst du dazu?“. Dann sucht man verzweifelt das Meetingfenster und den „Unmute“ Knopf, während die Teilnehmer einen darauf hinweisen dass man gemutet sei.

Schön wäre ein Global auf jedem Monitor sichtbarer Knopf oder ein globaler Tastenkürzel, der auch funktioniert wenn das Meeting Programm nicht im Vordergrund ist.

Microsoft Teams bietet leider keines von beidem (auch wenn es schon oft gewünscht wurde: https://techcommunity.microsoft.com/t5/microsoft-teams/global-custom-hotkey-support-for-teams-especially-mute/m-p/1929994 , https://microsoftteams.uservoice.com/forums/555103-public/suggestions/40624330-global-keyboard-hotkey-for-mute-unmute-plus-mute-i).

Abhilfe schafft beim Mac das Automatisierprogramm „Hammerspoon“ und ein kleines Script.

  • Hammerspoon installieren: https://www.hammerspoon.org
  • Nach dem starten die Config öffnen:
  • Folgendes Script hineinkopieren, speichern und den Editor schliessen:
  • Die Config reloaden:
  • Danach hast du zwei Knöpfe in der Titelleiste , der Erste bringt Teams in den Vordergrund, der Zweite wechselt zwischen Mute und Unmute, egal ob Teams im Vordergrund ist oder nicht.

Mute/Unmute funktioniert auch Global mit dem Tastenkürzel Ctrl-§ (kann im Script auch angepasst werden).

Mit git global Projekt-Dateien ignorieren

Jedesmal wenn ich mit PhpStorm (oder WebStorm) ein Projekt von Github öffne, erscheint die Meldung, ob ich den Ordner .idea einchecken möchte.
Das möchte ich aber vor allem in fremden Projekten nicht.
Um dies auszuschliessen, einfach die folgenden Zeilen ausführen, und es wird global von git ignoriert:

 git config --global core.excludesfile ~/.gitignore_global
 echo ".idea" >> ~/.gitignore_global

Unbekannte Bildschirmauflösung hinzufügen bei bei Ubuntu 14.04

Ich verwende ein Notebook mit Ati Grafikkarte und habe einen externen Bildschirm mit 1920×1200 Pixel Auflösung angeschlossen. Dieser wurde aber nicht erkannt und hatte somit eine schlechte Auflösung.

Schritte zum Lösen des Problems:

Um herauszufinden was für Monitore überhaupt an welchen Anschlüssen angeschlossen sind, folgenden Befehl ausführen

$ xrandr
#eDP1 connected primary 1920x1080+1920+0 (normal left inverted right x axis y axis) 344mm x 193mm
#1920x1080 60.1*+ 59.9
#
#DP1 connected 1024x768+0+0 (normal left inverted right x axis y axis) 518mm x 324mm
#1024x768 60.0
#800x600 60.3 56.2
#848x480 60.0
#640x480 59.9

Mein falsch erkannter Bildschirm hängt also am Anschluss DP1. Mit folgendem Befehl habe ich mir eine „Modeline“ der gewünschten Auflösung des Bildschirms erzeugt:

$ cvt 1920 1200 60
# 1920x1200 59.88 Hz (CVT 2.30MA) hsync: 74.56 kHz; pclk: 193.25 MHz
Modeline "1920x1200_60.00" 193.25 1920 2056 2256 2592 1200 1203 1209 1245 -hsync +vsync

Da es jetzt ans editieren von xorg.conf geht, und wir einen weg zurück haben möchten, am besten kurz ein backup machen:

sudo cp /etc/X11/xorg.conf /etc/X11/xorg.conf.backup

Jetzt ein „Monitor“ Eintrag in /etc/X11/xorg.conf erstellen und den vorher ermittelten Anschlussnamen und die Modeline eintragen. Der „PreferredMode“ muss genauso heissen wie der Name in der Modeline:

Section "Monitor"
    Identifier "DP1"
    Modeline "1920x1200_60.00" 193.25 1920 2056 2256 2592 1200 1203 1209 1245 -hsync +vsync
    Option "PreferredMode" "1920x1200_60.00"
EndSection

Jetzt den Laptop neustarten, und der Bildschirm wird ab jetzt erkannt. Eventuell muss man noch die Bildschirmauflösung in den normalen Systemeinstellungen unter Anzeigegeräte auswählen und speichern.

Warum Ext-JS ?

Warum habe ich mich für Ext-JS entschieden?

Erstens mal die Professionalität:

  • Es werden regelmässig neue Versionen veröffentlicht
  • Es ist mittlerweile schon die Version 5, hat also schon ein gewisses Wachstum hinter sich
  • Es wird bei den Entwicklern Testing verwendet, Unittests, und sogar an die Kunden weitergegeben
  • Es ist alles Modular aufgebaut uns sauber durchgeplant, alles passt zu allem.

Zweitens, die Langlebigkeit. Viele, teils grössere Firmen verwenden schon ExtJS, wonach es nicht nur ne Eintagsfliege sein kann (sollte):

  • Zyxel auf ihren Zywall Firewalls
  • Kerio auf der Web-Administrationsoberfläche
  • PA Servermonitor für die Reports und Diagramme
  • Typo3

Drittens, schnellere Entwicklungszyklen

  • Dank ExtDesigner kann man Formulare blitzschnell entwerfen und in Anwendungen einbauen
  • Da der Code insgesamt schöner ist, gibt es weniger „Leichen“ oder unverständlichen Code, der dann später sehr viel Reparaturarbeit benötigen würde.
  • Es wird uns Arbeit abgenommen uns ständig auf neue Browser(-Versionen) einzustellen, dies nimmt uns ExtJS komplett ab.

Dies gilt vor allem für Web-Anwendungen. Für Öffentliche externe Webseiten könnte man sich auch andere Technologien entscheiden, wenn man sich auf die obengenannten Gesichtspunkte stützt.

Ein kleiner Vergleich von ExtJS und Jquery: http://www.grantshepert.com/post.cfm/jquery-and-or-extjs

Javascript – URL und Unicode

Falls man mal blöderweise einen Ajax-Request macht, bei welchem in der URL irgendwelche Sonderzeichen sind, kann es sein, dass je nach Browser Überhaupt nichts beim Server ankommt.

So passiert bei einer Webapplikation, seitdem ich die komplette Seite auf Unicode umgestellt habe.

Die Lösung für mich war, die ganze url vor dem Absenden durch encodeURI() zu schicken.

Damit werden die Zeichen encodiert (z.B. %20 für einen Abstand) und die meisten Server-Programmiersprachen besitzen einen Befehl um dies wieder rückgängig zu machen oder machen dies schon automatisch.

Verwendung von GTD(-light) in Outlook

Wie kriegt man seine Mailflut in den Griff, so dass man nichts wichtiges vergisst, aber auch wichtiges von unwichtigem Trennen kann?

Unter http://www.toolblog.de/archives/905 gibts eine ganze Ladung Anleitungen, aber sie gehen davon aus, dass man alles in Outlook macht, inklusive die Tasks.

Da ich aber für Tasks Nimbus-Todo/Jira/Chandler verwende, benutze ich in Outlook nur ein GTD angelehntes abgespecktes Prinzip in Outlook. Ich habe die Ordner:

  • @1 NEXT
  • @2 SPÄTER
  • @3 WARTEN AUF
  • @4 Vielleicht_Irgendwann
  • @5 Referenzmaterial

Das @ und die Nummern dienen der Sortierung, damits ganz oben kommt.

Hier ein Screenshot:

Vorgehen:

Beim Durcharbeiten des Posteingangs gucke ich jedes Mail an und entscheide OB und WANN etwas zu erledigen ist. Nach dem Durcharbeiten sollte das Postfach leer sein.

Keine Aktion nötig:

Wenn das Mail nur Informationsmässig ist, lege ich es in meine Struktur unter @Referenzmaterial ab, wenn es sich nicht lohnt es aufzubewahren -> löschen.

Der Ordner @Vielleicht_Irgendwann ist für Sachen wo ich nicht sicher bin ob ich es Überhaupt machen will.

Aktion nötig:

Wenn ein Mail sofort beantwortet werden kann, und ich weniger als 2 Minuten dazu brauche, mache ich es sofort.

Wenn es länger dauern sollte verschiebe ich es in @NEXT oder @SPÄTER, je nach Wichtigkeit.

Jeden Morgen wird @NEXT und @SPÄTER einmal komplett durchgeguckt um zu gucken ob sich die Prioritäten geändert haben: entsprechend in den anderen Ordner schmeissen.

Danach während dem Tag den @NEXT Ordner abarbeiten.

Wenn ich beim Abarbeiten etwas delegieren oder per Mail nachfragen will, leite ich das Mail an die Person weiter. Den Ordner „Gesendete Objekte“ habe ich als Favorit angelegt, klicke drauf, nehme das oberste Mail was ich gerade verschickt habe und verschiebe dieses in den Ordner @WARTEN AUF. Der Ordner wird ca. Wöchentlich mal durchgeguckt. So verliere ich delegierte Aufgaben nicht aus den Augen.

Hibernate Modus bei Macbook

Ich benutze mein Macbook nicht allzu regelmässig, und im Gegensatz zum Windows-Laptop gibt es nur einen Ruhezustand und kein Hibernate. Dies bedeutet, der Macbook braucht dauernd Batterie und jedesmal wenn ich ihn aufklappe, meldet er, die Batterie sei gleich leer, ich müsse an den Strom.

Man kann den Ruhezustandmodus allerdings mit einem Shell-befehl umstellen. Dies geht aber auch einfacher, indem man das Plugin „SmartSleep“ installiert, welches dann in den Systemeinstellungen zu finden ist, und sich so komfortabel in den „richtigen“ stromlosen Hibernatemodus umstellen lässt.

https://www.jinx.de/SmartSleep.html

Mac Automatisches Ändern des Hostnamens per DHCP verhindern

Mac OSX hat die etwas „spezielle“ Eigenschaft, dass er im DHCP-Betrieb nicht nur die IP-Adresse automatisch Übernimmt, sondern auch den Hostnamen.

So kann es vorkommen das mein Macbook statt GSA-MHE-Macbook plötzlich GSA-ABI heisst, weil ABI letztesmal diese IP hatte. Im schlimmsten Fall gibts sogar IP-Konflikte.

Man kann dieses Verhalten Ändern, indem man die Datei /etc/hostconfig anpasst:

Die Zeile

HOSTNAME=-AUTOMATIC-

durch

HOSTNAME=irgendwas

ersetzen.

Es kann sein, dass die Zeile noch gar nicht existiert, dann einfach die Zeile zuunterst anhängen.