środa, sierpnia 31, 2022

Moja triada spokoju to jednak nie triada a tetrada spokoju ;-)

Dotarło do mnie dziś, że jak pisałem o traiadzie spokoju to się tak zakochałem w idei triady, że zapomniałem, że to jest jednak nie triada, a tetrada bo są w niej nie 3, a 4 cosie ;-)

Wymieniłem już:

  • medytacje,
  • pomodoro,
  • spacery
zapomniałem o czwartej rzeczy, czyli grze w Dooma ;-)

Wtedy to już są 4 rzeczy, które tworzą tetrade spokoju:
  • medytacja,
  • pomodoro,
  • spacer,
  • Doom
;-)
Doom wnosi szybki trening w planowaniu i egzekucji ;-) bo są w koło cele i problemy, których priorytet zależy od tego jak są niebezpieczne, ale nie jest to tak, że silniejszy przeciwni jest zawsze ważniejszy, czasem silniejszego można zostawić na potem. Wszystko dzieje się też w szybkim tempie i pomyłka drogo kosztuje. Więc człowiek chcąc nie chcąc robi sobie ćwiczenie w priorytetyzacji i zarządzaniu zasobami ;-)

Jeden problem, na te wszystkie 4 rzeczy czasem po prostu brakuje czasu ;p



Podobne postybeta
Triada spokoju, albo triada antychaosowa ;-)
Steam Deck OLED po 24h :-)
Próby panowania nad chaosem
Głupie oszczędności
Cywilizacja migających diod i lampeczek ;-)

wtorek, sierpnia 30, 2022

Toole do CI są dziwne ;-)

Nie przepadam za wszelkimi narzędziami w stylu TeamCity, GitLab (CI) czy Jenkins, ogólnie za wszystkimi tymi narzędziami do CI.
Ale ciekawa sprawa, mimo wszystko, mimo tego, że te języki tam stosowane są dziwne, że jest to często i gęsto bardzo barokowe, jak człowiek pamięta, że na 99% gdzieś jest tam w tekście tych plików yml wpisane coś co się przekłada na basha ;-) i że można w końcu dojść do tego jak na tym zapanować....
To daje się nad tym zapanować ;-)
Oczywiście zawsze jest haczyk ;-) i często tym haczykiem jest to, że by default jakieś joby/pipeline'y/taski są zafiksowane na brancha, albo domyślnie środowisko zawsze czyta z mastera.... 
Ale to tylko dodaje atrakcyjności tym sprawą....
Szczególnie, że prawie zawsze jak człowiek się z tym bawi to MUSI, bo coś się właśnie wali i pali i trzeba ratować, a tu np. build nie chce pójść ;p



Podobne postybeta
Kupię sobie jednak Copilota
Copilot za bardzo pomaga i czasem trzeba go wyłączyć ;-)
Serwisy mniejszej miłości ;-)
Kariera IT, jak iść w górę i jak iść w bok ;-)
+2 czy +6?

niedziela, sierpnia 28, 2022

Triada spokoju, albo triada antychaosowa ;-)

Mam taką swoją triadę spokoju ;-)

Wygląda mniej więcej tak:

  • Pomodoro
  • Medytacja
  • Spacer
Jej celem jest zapewnienie tego bym był w miarę spokojny i szczęśliwy.
Czasem jednak o niej zapominam ;-) 
Mam nawet na telefonie przez to pokazywane jak go otwieram, ale też nie zawsze zauważam ;-)

Ale o co chodzi w działaniu tej triady spokoju? ;-)

Pomodoro jest po to by w sytuacji gdy jest za dużo rzeczy do zrobienia, albo jestem za bardzo rozkojarzony mieć takie momenty po te 25 minut gdy robię 1 rzecz naraz.
To jest trudne, jak masz wiele priorytetów naraz i za mało informacji by dokonać jakiejkolwiek priorytetyzacji. 
Wtedy pomodoro wprowadza jakąś chociaż ułudę spokoju, bo przez te 25 minut zajmujesz się tylko jedną rzeczą.
Nie działa to zawsze, bo jak masz spotkanie po spotkaniu to nie zawsze masz czas na nawet 1 pomidora między...
No i często można zapomnieć.

Medytacja jest po to by się wyciszyć, czy też skupić. Cel jest podobny jak używania pomodoro, wprowadza jakiś porządek do chaotycznego dnia. Jest 10 minut gdy nic nie robisz, próbujesz uważać na swój oddech i tyle, oczywiście po paru minutach do Ciebie dociera, że zamiast obserwować oddech od paru minut robisz plany co dziś zrobisz, albo rozważasz jakiś problem. Wtedy trzeba sobie z tego zdać sprawę i odsunąć to od siebie, jak się nie da to przyjrzeć się temu, tej myśli i zwykle wtedy odpływa. I na jakieś 5-10 sekund jest spokój, zapominamy i znów pojawia się inna myśl i znów po jakimś czasie do Ciebie dociera "ej, przecież ja znów planuje/myślę o X" ;-)
Działać działa, ale czasem człowiek nie może wysiedzieć i go nosi. Do tego ponieważ to jest jednak jakiś wysiłek często prościej internet przeglądać.

Spacer jest po to by mieć jakiś wysiłek fizyczny i by mieć czas na myślenie. Jak się uda jeszcze by ten spacer był np. "rytuałem przejścia" od pracy do domu, albo od domu do pracy to jeszcze lepiej, ale tutaj pandemia przeszkodziła i to straszliwie.
Do tego podobno (ja tego nie mam za często bo zbyt często słucham podcastów idąc ;-)), sam akt "iścia" i widzenie przesuwającego się świata powoduje, że nasz mózg się skupia? Coś dobrego w każdym bądź razie ;-)
Znów, nie zawsze się chce iść, bo to jednak wysiłek, bo szkoda czasu, bo pada, bo gorąco, bo nie ma gdzie, a bo może jeszcze to zrobię zanim wyjdę i tak dalej....

Ale z obserwacji, ta triada pomaga, nawet jej kawałki pomagają ;-)




Podobne postybeta
Moja triada spokoju to jednak nie triada a tetrada spokoju ;-)
Jak zwiększyć swoje IQ?
Próby panowania nad chaosem
Pomodoro z positive reinforcement? ;-)
Zaszumienie....

czwartek, sierpnia 18, 2022

Mój Macbook ma 4 lata

No to mój Macbook Pro 2018 ma już 4 lata.


Działa nadal dobrze, choć przyznam, że momentami dostaje zadyszki jak ma otwarte 3 przeglądarki z dużą ilością kart, 3 razy IntelliJ, Obsidiana i Notion....

Ale jak go kupowałem to planowałem go na lata i dostał wtedy max pamięci czyli 32 GB RAM i najbardziej wypasioną wersję CPU, jakieś i9 od Intela ;-)

Jest niezły, ale czasem czuć jego wiek.... przed kupnem nowego powstrzymują mnie:
* jednak nowe są tylko z M1, jak będzie M2 i 48, czy 96 GB ;-) to czemu nie,
* ARM, jednak czasem lubię odpalić Parallels, a podobno Parallels na M1 (i M2) odpalać potrafi tylko ARMowego Windowsa... a ja mam Windowsa dla paru starych gier ;-)
* 22k za nowego to jest jednak dużo monet ;-)

Ale tak ogólnie jestem zadowolony z tych 4 lat mojego laptopa ;-), całkiem dobrze działał i działa, miał na początku problem, że głośniki trzeszczały i w Internecie było dużo rozważań czy to się w ogóle da naprawić... a naprawiali softem ;-)
Dostał rozdęcia baterii... wymienili mi ją za darmo ;-) więc moja bateria w 4 letnim MBP ma dopiero 16 cykli za sobą ;-) (dla porównania w moim MBA, który ma ciut ponad 2 lata ma ich 158 ;-))
Co ciekawe klawiatura w nim nadal wydaje się działać... ale to może być też przez to, że tylko przez pierwsze parę miesięcy używałem klawiatury laptopa, później prawie zawsze był podłączony do zewnętrznej klawiatury ;-)

Ogólnie polecam ;-)


Podobne postybeta
16 GB to zbrodnia...
Laptop
Dla Java'y Apple Silicon M1 to jednak nadal x86 ;-)
Bestyjka - nowy mac podróżny ;-)
Czyżbym miał już zbyt wolny komputer? ;-)

wtorek, sierpnia 02, 2022

Żenienie Todoist z Obsidian przy pomocy Pythona ;-)

Zawsze brakowało mi połączenia ToDo z miejscem gdzie mógłbym mieć notatki i żeby to było jeszcze przeszukiwalne ;-)

No JIRA tak prawie działa, ale przecież nie będę trzymał JIRAy na swoim komputerze, a do tego ile by mnie to w ogóle kosztowało.

Stąd spróbowałem pożenić prostym skryptem w Pythonie Todoista z Obsidianem :-)

Działa to tak, że jak uruchamia się skrypt to pobiera moje aktualne taski z Todoista, i jeśli są w odpowiednim projekcie to tworzy w odpowiednim katalogu Obsidiana pliki z danym taskiem, do tego dodaje do Obsidiana dokument ToDo z listą rzeczy do zrobienia.

Na razie używałem tego dziś i wydaje się pomagać :-)

Skrypt wygląda tak:

import urllib
import urllib.request
import json
import os.path

projectFilter = <ID PROJECT WORK>

token = "<TOKEN FOR TODOIST API>"

headers = {"Authorization":"Bearer "+token}

url = "https://api.todoist.com/rest/v1/tasks"

req = urllib.request.Request(url, headers=headers)
response = urllib.request.urlopen(req)
jsonResponse = response.read()

tasks = json.loads(jsonResponse)

# print(json.dumps(tasks, indent=4, sort_keys=True))

pathToObsidian="<Obsidian Vault Location>"
path=pathToObsidian+"<Subfolder to keep tasks>"

content="# ToDo #\n-----\n"
for task in tasks:
projectId=task["project_id"]
if projectId!=projectFilter:
continue
title=task["content"]
# OK, for me it works in this way that when I'm adding stuff to Todoist using Python and Alfred my work tasks have [Work] in front, so I want to remove it
fName=title.replace("[Work]","").replace("/"," or ").strip()
desc=task["description"]
url=task["url"]
print(title)
print(json.dumps(task, indent=4, sort_keys=True))
try:
fName=path+"/"+fName+".md"
titleStr=title.replace("[Work]","").strip()
content=content+"* [["+titleStr+"]]\n"
if os.path.exists(fName):
continue
outF=open(fName,"w+")
outF.write("# "+titleStr+" #\n"+desc+"\n[In Todoist]("+url+")")
outF.close()
print("Success with "+title)
except:
print("Problem.....")
print("Problem with "+title)
outF=open(pathToObsidian+"/ToDo.md","w+")
outF.write(content)
outF.close()

Teraz wystarczy to dodać np. do crontaba i uruchamiać co np. 15 minut i mamy magię ;p
Brakuje tutaj dużo, np. zamiast używać nazwy pliku lepiej by było używać ID taska i tak dalej, ale to popełniłem wczoraj koło 2 w nocy ;p
A używałem dziś "w pracy" i działa ;-)


Podobne postybeta
Mistral czeka na książkę
Rube Goldberg machine do reminderów ;-)
Kiedy skończyć pracę...
Jak nie zapomnieć kupić biletu miesięcznego - revised ;-)
Jak nie zapomnieć kupić biletu miesięcznego ;-)

niedziela, lipca 10, 2022

Bookmarklet do robienia CSV z obligacjami i ich oprocentowaniem ;-)

[Update]
Niestety złe ludzie od strony z obligacjami mieszają z IDkami, więc mój piękny skrypt na jakiś czas przestał działać ;-) Najpierw go zupdatowałem przez poprawienie po prostu ręcznie na nowe IDki, teraz dodałem "mechanizm" do znajdowania IDików ;-)
Do tego dodałem nowy bookmarklet do pobierania ważonego oprocentowania ;-) [czyli zbieramy procent ze wszystkich emisji, później liczymy średnią ważoną oprocentowania, gdzie wagą jest kwota zakupu, dzięki temu mamy takie pi razy oko pojęcie ile w roku zarobimy]
[Koniec update]

Jeśli ktoś kupuje polskie obligacje to wie, że strona do tego ssie od strony usability ;-)
Jest tam np. możliwość pobrania pliku Excela, ale po pierwsze to Excel ;-) po drugie, nie ma tam w ogóle informacji o oprocentowaniu.
Żeby zobaczyć oprocentowanie trzeba zaś wykonywać karkołomne operacje i próbować najeżdżać na nazwę emisji by może zobaczyć oprocentowanie:


I normalnie chcąc zobaczyć jakie mam "średnie" oprocentowanie, najpierw pobierałem plik Excela, później przechodziłem przez kolejne emisje i sobie przepisywałem ostatni numerek...
Strasznie to było męczące.

Stąd dziś prezentuję ten oto bookmarklet ;-)
(przeciągnij go do bookmarków, wejdź na stronę od obligacji, zaloguj się, zmień może liczbę wyświetlanych obligacji i kliknij na ten bookmark, powinna Ci przeglądarka zaproponować pobranie pliku CSV z nazwą obligacje.csv, aha w tym CSV za separator dziesiętny robi kropka, nie przecinek, więc niektóre programy mogą mieć problem, np. Numbers na macOS upiera się, że ponieważ to Polska to ma być przecinek... więc zmieniłem sobie w całym systemie bo ja uznaję tylko kropkę ;-))

Którego kod wygląda mniej więcej tak:

// sadly this part is only for hacky way of finding what are Ids
function findIdLambda(elem,list,func) {
var id = elem.id;
if (id && func(id)) {
list.push(id);
}
for (var i=0; i<elem.childNodes.length; i++) {
var child = elem.childNodes[i];
findIdLambda(child,list,func);
}
}

function findId(elem,idStart,list) {
findIdLambda(elem,list,x => x.startsWith(idStart));
}

var list = [];
findId(document,"stanRachunku",list);
var id = list.filter(x => x.endsWith("data")).filter(x => x.indexOf("idt")!=-1)[0];
var no = id.split("idt")[1].split("_")[0]*1;
var idxNo = no;

function findQtipId(pattern) {
var list = [];
findIdLambda(document,list,x => x.startsWith(pattern));
return list[0];
}
//end of hacky way for finding proper Ids

const mouseoverEvent = new Event('mouseover');
function amount2number(s) {
var nbrsp=String.fromCharCode(160);
return s.replace(nbrsp,"").replace(',',".").replace(nbrsp+"PLN","");
}
function getPercents(idx) {
var id = findQtipId("qtip-stanRachunku:j_idt"+idxNo+":"+idx+":j_idt");
console.log(id);
var element=document.getElementById(id);
var data=element.innerText.split("%");
var res = [];
for (var i=0; i<data.length; i++) {
var line=data[i];
line=line.trim();
if (line.length==0) continue;
var l=line.split(" ");
res.push(l[l.length-1]);
}
return res;
}
var table=document.getElementById("stanRachunku:j_idt"+idxNo+"_data");
var data=table.childNodes;
var content="id,number,value,actual value,cycle,%,redemption date\n";
for (var i=0; i<data.length; i++) {
var line = data[i].childNodes;
// ugly hack... but without this it will not be visible, and we would not be able to get percents
line[0].firstChild.dispatchEvent(mouseoverEvent);
var emId=line[0].innerText;
var number=line[1].innerText;
var value=line[3].innerText;
var actual=line[4].innerText;
var redemption=line[5].innerText;
var percents=getPercents(i);
var cycle = percents.length;
var percentage = percents[percents.length-1];
var l=[emId,number,amount2number(value),amount2number(actual),cycle,percentage,redemption];
var cl = "";
for (var j=0; j<l.length; j++) cl+=l[j]+",";
cl=cl.substring(0,cl.length-1);
content+=cl+"\n";
}
console.log(content);
var blob = new Blob([[content]],{type: "text/csv"});
console.log(blob);
var downloadObj = window.URL.createObjectURL(blob);
console.log(downloadObj);
var a = window.document.createElement('a');
a.href = downloadObj;
a.text = "obligacje.csv";
a.download = "obligacje.csv";
a.click();

Jak działa? ;-)
Prosto ;-)
Najpierw szuka tabelki z danymi, dziwnie na wszystkich kontach na jakich sprawdzałem (dokładnie 2 ;-)) tabelka zawsze nazywa się "stanRachunku:j_idt138_data". Później idzie przez jej linie i zbiera dane, czyli nazwę emisji, liczbę obligacji, ich wartość nominalną, wartość w chwili obecnej, datę wykupu i numer roku, oraz oprocentowanie.
Te dwie ostatnie wartości bierze hackiem ;-) okazuje się, że trzeba najechać na nazwę emisji by w ogóle pojawił się tooltip który pokaże interesujące nas wartości, po to jest linia:
  line[0].firstChild.dispatchEvent(mouseoverEvent);
która to linia wysyła event mouseover do elementu i wtedy pojawia się odpowiedni tooltip, który sobie pobieramy w getPercents ;-) 
Na końcu tworzony jest plik CSV i link do jego pobrania, który się sam z siebie klika ;-)
Wtedy przeglądarka proponuje nam pobranie danych :-)
Jedna uwaga, to są zawsze dane z aktualnej strony... więc jak ktoś ma więcej niż 20 emisji to dobrze zmienić liczbę widocznych na danej stronie na 50, a jak ktoś ma więcej niż 50 to trzeba niestety się bawić w klikanie bookmarkletu na każdej podstronie.
Nadal to jednak prostsze niż "stara" metoda ;-)


Bookmarklet by policzyć Procent z obligacji, zrobiony przy pomocy Bookmarklet Makera


Podobne postybeta
Ile w tym i przyszłym miesiącu z odsetek za obligacje?
Ile z obligacji... odsłona 2 ;-)
[Updated] Czytanie Pocketa ;-)
Ściana, czyli rozbijam się na onclick ;-)
Go dla Java'owca ;-) odcinek 2 "kontenery dwa ;-)"

niedziela, czerwca 26, 2022

Java szybsza na M1 jako X86 niż jako ARM ;-)

I okazuje się, że przynajmniej w pewnych sprawach, np. w całkowaniu numerycznym ;-) Java na M1 jest szybsza gdy działa w trybie emulacji x86-64, niż gdy działa w trybie aarch64 (czyli "natywnym" ARMowym dla M1).

Odpaliłem na laptopie z M1 programik do całkowania numerycznego (w obszarze od -10 do 10, w prawie 21.5 mln kroków, w pętli która sprawia, że wykonuje się to 10 razy).

Na Macbooku 16 z M1 z 2021 roku.

No i dla Java 11 (od Azul) wyniki są takie:

x86-64: 5611 ms
aarch64: 7528 ms

Podobne wyniki są dla Java 18.

Ciekawiej się robi dla Oracle'owej Java 18 ;-)

x86-64: 5811 ms
aarch64: 31340 ms

Czyli w przypadku JVM od Oracle'a jest wersja dla ARMa o 5.4 raza wolniejsza ;-)

Nie umiem powiedzieć czy chodzi o różnice w implementacji HostSpota czy może o jakiś kod natywny.

Ale i tak intrygujące :-)





Podobne postybeta
W końcu dane z M1, które w Java'ie mówią, że to jest ARM :-)
Dla Java'y Apple Silicon M1 to jednak nadal x86 ;-)
Wszędobylska Java :-)
JNA, czyli w Java'ie też można :-)
"os.arch", "os.name", "sun.arch.data.model" co to jest i co pokazuje na jakiej maszynie i OSie? ;-)

sobota, czerwca 25, 2022

DevoXX 2022

No i był DevoXX :-)

Było całkiem fajnie, znów spotkałem ludzi z którymi pracowałem w innych firmach, albo takich którzy pracują już w innych firmach ;-)

Spotkałem też ludzi z mojej przyszłej firmy ;-)

Tak patrząc na konferencje stwierdzam, że jak człowiek zaczyna to chodzi głównie na prezentacje i one są bardzo ciekawe bo wszystko jest nowe.

Z czasem więcej czasu spędza na spotykaniu ludzi, których zna z innych firm ;-)

W końcu prezentacje są tylko dodatkami do spotykania ludzi ;-)

Ale i tak nic nie pobije DevoXX 2019 i towarzystwa ;-)




Podobne postybeta
Konferencje są przereklamowane
OOo2GD 1.8.1 - i znów poprawki
Po Devoxx'ie
Chce komputerów, które będą "seamless"
Co umie OpenOffice.org2GoogleDocs ;-)

piątek, czerwca 10, 2022

Telefon jako repeater WiFi ;-)

Właśnie dokonałem odkrycia ;-)

Można używać telefonu jako repeatera WiFi ;p

Android od pewnej wersji (w tym telefonie jest Android 13 w wersji tej testowej, ale na 100% działa to też na Androidzie 12, a wydaje mi się, że jeszcze wcześniej na wcześniejszych też to miałem) pozwala na dzielenie się Internetem nie tylko z sieci komórkowej, ale też z sieci WiFi ;-)

No i w miejscu gdzie teraz jestem Internet jest taki sobie.... w moim pokoju go praktycznie nie ma, więc przez ostatnie parę godzin używałem telefonu jako HotSpota i dzieliłem się moim Internetem z NJU...

Ale coś mnie naszło i włączyłem HotSpot w drugim telefonie, zaniosłem go do przedpokoju w którym spokojnie łapie "miejscowy" Internet, podłączyłem do tego lokalnego... i nagle mam Internet w komputerze podpiętym do mojego HotSpota, ale to nie jest ten Internet z NJU, a "miejscowy" dla którego telefon robi za swoisty repeater ;-)




Podobne postybeta
Pixel i iPhone mają chyba inne "filozofie" pracy z radiem ;-)
Migracja
USB-C w iPhonie dobra rzecz :-)
Przydatne i nieoczywiste "narzędzia" czy rzeczy, które pomagają w podróżach
Kolejny "projekt" na GitHub ;-) LocaleSSID

środa, czerwca 08, 2022

Ostatni on-call ;-)

Ponieważ zmieniam wkrótce pracę to zaczynam wypadać z różnych dodatkowych rozrywek, np. od niedzieli z on-call'a i przez to dziś miałem od 1:00 do 13:00 ostatni dyżur na on-call'u ;-)

Który zakończyłem uroczystym odinstalowaniem PagerDuty ;-)


Później odinstalowałem moją aplikacyjkę do pokazywania ile mi zostało czasu do on-call'a i ile czasu na on-call'u ;-)

O tym odinstalowaniu to już miewałem fantazje ;-)



Podobne postybeta
On-call....
Kiedy następny on-call?
A może by tak nosić drugi telefon specjalnie do on-call'a?
Zgubiłem dźwięk...
9 miesięcy bez on-call&#39;a - to jest super :-)