Azért néhány golyó szétgurult – hogyan maradj mégis fókuszban

A Marble Machine lenyűgöző szerkezet, és egyszerre nagyon hervasztó is. Nehéz irígység nélkül szemlélni: itt van valaki, aki talán sokkal kúlabb dolgot hozott létre, mint amit én valaha fogok? Kösz.

Igazán értékelni talán az tudja, aki dolgozott valaha olyasmin, amihez nem volt recept, csak a fejében létezett. Ilyenkor korántsem “kész” a dolog fejben – amennyire én ezt értem és megtapasztaltam – inkább egy koncepció, vezérfonal adott. Aztán a munka része az is, hogy felgöngyölítsük, felfedezzük minden egyes ponton, hogy melyik elagázáson haladjunk rovább. Visszakanyarodva az eredeti gondolathoz, ez a gép az intuíció és a fókusz diadala.

Persze izgalmas, mikor megszólal ez a gép, de milyen hosszú út vezet odáig? Hogyan lehet végig kitartani, hinni benne? Ez is irigylésre méltó: hogyan képes valaki ennyire rajta maradni egy projekten? El tudjuk képzelni hány és hány buktatót és újratervezést rejtett? Nos nem, talán el sem tudjuk képzelni. De azt sem gondolnánk, hogy az alábbi videó végén így nyilatkozik:

“I think if I look back on 2019, I’m afraid what I’m going to see because I was in a procrastionaion mess”

Ezek után azt hiszem meg akarjuk nézni.

There is one skill to rule them all and that is focus

Thank you for coming to my Ted talk – de valójában ez tényleg ilyen egyszerű, és el is hangzik a videóban: egyszerű, de nehéz megvalósítani. Nem véletlenül hozom a Ted-es párhuzamot, ott is sokszor ugyanerről van szó. Egy 10 perces talktól nem változik meg az életünk, onnantól jön még a munka.

A munka során a konkrét feladatokon kívül ez volt még egy olyan dolog, amit Martin megtanult: hogyan érjünk el célokat és hogyan érjük el a fókuszt. Hosszú időn át rendkívül elégedetlen volt a projekt előrehaladásával és a saját teljesítményével, és folyamatosan agyalt rajta, hogyan tudná a hatékonyságát növelni. Két egyszerű kérdésben tisztázódott le benne: hogyan határozzunk meg célokat és hogyan fejlesszük a fókuszáltságunkat.

Első lépés: hogyan érjünk el célokat?

Mint egy rossz motivátor könyvben. Létezik egy úgynevezett “goal setting theory” :

  1. sokat segít, ha egyátalán állítunk fel célokat
  2. a célok jellege meghatározó a siker velószínűségére nézve

Vagyis, mielőtt egyáltalán nekiállunk elérni a céljainkat, érdemes őket kritikusan megvizsgálni: jó célok ezek?

Első tanács: tanuljunk meg jó, egyre jobb célokat kitűzni. Na de hogyan? Martin szerint a legfontosabb nézőpont: gondolkozzunk el rajta, hogy a céljiaink internalizált (belső) vagy externalizált (külső) célok. Például egy teniszező gondolhat úgy egy meccsre: “az a célom, hogy megnyerjem”, illetve úgy is, hogy “a legtöbbet fogom kihozni a képességeimből ezen a meccsen”. Az előbbi egy külső cél, amely külső tényezőkön múlik, ilyen módon törékeny. Utóbbi belső cél, csak olyan dolgokon múlik, amelyek felett uralkodhatunk. Ebben áll a dolog nyitja: olyan célt határoztunk meg, amiért tehetünk is. (A teniszezős példa William B. Irvine: A Guide to the Good Life c. könyvéből származik.)

A másik: legyünk óvatosak a célok “méretével” kapcsolatban, vagyis hogy mennyire rövid vagy hosszú távon kivitelezhetők. Példa: “az a célom, hogy világkörüli turnéra induljak a Marble Machine X-el” – ha ez a célom minden nap, elbukom minden nap. Nem számít, milyen keményen dolgozom. A céljainkat egyszerűbb lépésekre kell bontani, de az extrém módon egyszerűekig. Azonban a legegyszerűbb feladatokkal sem biztos hogy végzünk, és ez további frusztrációhoz vezet. Így jutunk oda, hogy “a célom, hogy fókuszált maradjak egész nap”. Nevet. “Öt perce hallgatsz, és ezzel tudtam előállni?”

It’s like a war with your brain – az a fránya dopamin

Ez pedig elvezet a második lépéshez: hogyan tanuljunk meg fókuszálni? Egy ilyen hosszú projekt, mint a Marble Machine X nem túl hálás, nem jutalmaz túl hamar. Különösen nehezek az ismétlődő munkák: megcsinálni a hetedik hajlított csövet a hatodik után – és lesz összesen 38.

Hirtelen azon kapta magát, hogy regisztrált a chess.com-ra és 5 perces blitzeket kezdett játszani. Mert az sokkal izgalmasabb. Ismerős? Izgalmasabb, vagyis dopamin termelődéssel jár. Csökkentsük hát a dopamin termelést! Martin számára ez volt a kulcs abban, hogy megtanuljon fókuszálni és unalmas, hosszadalmas, de hasznos dolgokat csinálni. De a dolgok elég rosszra tudnak fordulni.

Elmondása szerint önmagában a puszta gondolat, hogy meg kellene néznie, írt-e valaki Whatsappon már “jutalmazó” érzést jelentett. Ahogy a blitz game-k a chess.com-on (amelytől hirtelen új célja támadt: tanulmányozni a gyalogszerkezeteket). Természetesen ez újabb frusztráció forrása: nem haladt a projekttel. Szóval ilyen, amikor a viselkedésünket hagyjuk a dopamin által kontrollálni. Hogyan lehetne ezen változtatni?

Irány a detox!

Ez mindenkinél máshogy néz ki. Először azonosítsuk azokat a dopamin-vezérelt tevékenységeket, viselkedést, amelyek megakadályoznak a hosszú távú céljainkban.

Számára ilyen a munka közbeni zenehallgatás volt, ezt fokozatosan elhagyva gyakorlatilag megtanult alacsonyabb dopaminszint mellett is fókuszáltan dolgozni. Így jóval könnyebb volt ellenállni, hogy újabb löketért induljon a Whatsappra vagy a chess.com-ra. Dominóhatásként jellemzi: ha egyszer már sikerült visszanyesni a dopamin-vezérelt cselekvést, egyre több fronton fog sikerülni. Ha sikerült fókuszban maradni, a nap végén úgy érezzük mintha máris a hosszú távú céljainkat sikerült volna teljesíteni.

Végszó

Martin számára ez volt a kulcs: nem az eredmény minőségével, hanem sokkal inkább figyelem és a fókusz minőségével törődve radikálisan változott a mindennapi élete. Szerinte a minket körülvevő unaloműzők szépen lassan aláaknázzák a kreativitásunkat. Ő is ennek az áldozata volt korábban, ahogy mindenki más is.

Attiny85 programozás Arduino Nano-val

E remekbe szabott leírás alapján tegyünk össze egy Attiny85 programozásra alkalmas eszközt. Ilyen módon meglehetősen kevés hozzáadott értékkel, de talán érthetőbben közöljük. Jó lesz!

Hozzávalók:

  • Arduino Nano
  • Attiny85
  • 10 uF kondenzátor
  • LED

ISP mód

Tegyük az eszközünket ISP módba. Ehhez szerencsére találunk példát az Arduino IDE-ben: File -> Examples -> ArduinoISP – töltsük fel módosítás nélkül.

Installáljuk az Attiny85 támogatást

File -> Preferences -> Additional Boards Manager URLs alatt adjuk meg a következőt: https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json.

(Ha időközben használhatatlanná válna az URL, David A. Mellis Githubján nézzünk körül.)

Tools -> Board -> Boards manager alatt válasszuk ki az “attiny”-t (David A. Mellis félét) és installáljuk.

Ha minden jól megy, a Tools->Board alatt van Attiny szekciónk.

Kössük be az Attiny85-öt

Ehhez tekintsük meg az Attiny85 pinoutot (az Arduino könnyebb, rá van írva):

https://components101.com/microcontroller/attiny85-pinout-datasheet
  • 5V – VCC
  • GND – GND
  • D13 – PB2
  • D12 – PB1
  • D11 – PB0
  • D10 – PB5 (RESET)
  • RST – 10 uF C – GND*

*Itt máris hozzáadott értékről tudunk számot adni: az eredeti leírásban hibásan szerepel, hogy az elektrolitkondenzátor anódját (+) csatlakoztassuk a GND-hez, természetesen forítva kell eljárnunk.

Felkészülés Attiny85 feltöltésre

Az alábbiakat állítsuk be:

  • Tools -> Board: Attiny25/45/85
  • Tools -> Processor: Attiny85
  • Tools -> Clock: Internal 8MHz
  • Tools -> Programmer: Arduino as ISP*

*jegyezzük meg, hogy AVRISP mkii-n szoktuk használni…

Alapból 1MHz-n működik az Attiny85, ezért kell még egy Tools -> Burn Bootloader.

Izgi!

Puding

Elvileg jók vagyunk, nyissuk meg a blink example-t (File -> Examples -> Basics -> Blink). Módosítsuk a pin-t 13-ról 0-ra. (Vagy LED_BUILTIN-ről 0-ra.) Upload.


// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(0, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(0, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);                       // wait for a second
  digitalWrite(0, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);                       // wait for a second
}

Na és ezt most nehezebb tesztelni, kell külön áramforrás, amiről meghajtjuk az Attiny-t. A példában 3V gombelemet használnak – a ledet már-már szokásosnak mondható módon fordított polaritással bekötve. De a szükséges áramot lehozhatjuk az Arduinoról is (az eredeti bekötéseket természetesen megszakítva):

  • PB0 – LED – GND
  • 3.3V – VCC
  • GND – GND

Profit!

Aki ilyet vesz azt már annyira nem érdekli a világ

Azt hiszem a TC egyik legnagyobb megfejtése az volt, hogy már indulásakor is sokkal inkább foglalkozott az autós ember valódi igényeivel és nézőpontjával, mint akármelyik másik “autós” “műsor”. Talán az első nem újságírásnak látszó promó volt a témában, népszerű is lett. De most nem ez a lényeg.

Számomra ez az autó annak a szimbóluma, hogy mire képes az “ember” (autóipar), ha egyébként nem kötik aféle limitek, hogy a terméket egy jobb módú középosztálybelinek is meg kéne tudni venni. Nem értelmetlen veretés, minden részlete kimunkált és indokolt. Már-már katarktikus.

Szivárgó absztrakciók

Joel Spolsky egy 2002-es cikkében ír a “szivárgó absztrakciók törvényéről” (leaky abstractions law). Nagyon helyesen már az elején tisztázza, mi is az az absztrakció:

It is what computer scientists like to call an abstraction: a simplification of something much more complicated that is going on under the covers.

Joel Spolsky: The Law of Leaky Abstractions (https://www.joelonsoftware.com/2002/11/11/the-law-of-leaky-abstractions/)

Kicsit általánosabban – és ez a meghatározás ismerősebb lehet – az absztrakció a lényeges és lényegtelen tulajdonságok szétválasztása, és a lényegtelen figyelmen kívül hagyása. Hétköznapi absztrakció például a számfogalom, nagyszerűen tudunk vele dolgozni, anélkül, hogy tudnánk, hogy hány darab valamiről beszélünk éppen. Nem lényeges. (Lásd bővebben a Wikipedián.)

Joel a TCP/IP protokollt hozza példának: a TCP egy olyan protokoll, ami megbízhatóvá teszi az IP protokoll segítségével történő adattovábbítást. Az IP megbízhatatlan, a rá épülő TCP viszont megbízható. Joel definíciója szerint tehát a TCP olyan absztrakció, amely elrejti előlünk az IP megbízhatatlanságát. Igen ám – érvel Joel – ha azonban elvágjuk a kábelt, vagy egyszerűen csak egy nagyon lassú hálózati szegmensben próbálunk adatot továbbítani, könnyen lehet, hogy az üzenetünk nem érkezik meg. Vagyis megbízható absztrakció ide vagy oda, kikönyököl a “megbízhatatlanság”. Ahogy mondja, “szivárog” az absztrakció. Itt érkezünk el az általa megfogalmazott törvényhez:

All non-trivial abstractions, to some degree, are leaky.

Vagyis, minden nem triviális absztrakció valamilyen szinten szivárog. Az igazi probléma ezzel az, hogy az informatika tele van absztrakciókkal. Sőt, ahogy ez a tudomány fejlődik, egyre több egymásra épülő absztrakcióval dolgozik. Ezzel még nem lenne gond, mivel ezek pont azt célozzák meg, hogy ne kelljen a részletekben elvesznünk, hanem foglalkozhassunk magasabb szintű dolgokkal . Viszont ezen absztrakciók többsége leaky, vagyis szivárog. Ami azt jelenti, hogy hiába rejtette el előlünk a működést, mégis tisztában kell lennünk vele. Vagyis, ahogy egyre magasabb és magasabb szintre lépünk, egyre nehezebb megfelelően jártas szakemberré válnunk. Eddig Joel érvelése.

Személyes megjegyzésem ehhez az, hogy érdekes a felvetés, azonban érdemes lenne tovább kutatni a témában, illetve pontosítani az absztrakciók lehetséges hibáit. Joel példáiból kicsit úgy tűnik, hogy számára bármelyik absztrakció leaky, amit “el lehet rontani”. Nem gondolom, hogy a TCP absztrakciója rossz lenne azért, mert nem kezeli az elszakadt kábel problémáját. Egyébként kezeli: tudjuk, ha nem ért célba az üzenet. A TCP nem állítja, hogy célba fog érni az üzeneted, csak azt, hogy tudjuk, hogy célba ért, és tudjuk, ha nem. Nem attól megbízható, hogy mindig célba ér, hanem attól, hogy tudjuk, mi történik, és erre aztán lehet reagálni. Vagyis az IP protokoll megbízhatatlanságát mindkét esetben sikerrel rejti el. Ilyen értelemben tehát a TCP rossz példa, a TCP egy jó absztrakció. (Egyébként az eredeti cikkben más példákat is hoz, és több jogos észrevétele van, de a TCP-vel kapcsolatban szerintem téved.)

Terra Nil

Helyreállítani az ökoszisztémát egy lepusztult, szétmérgezett tájon: nem hangzik túl izgalmasan. Fogalmam sem volt, miről szól ez a játék, viszont csak a képeket látva tudtam, hogy ki kell próbálni.

Szerencsére “tanfolyam” nélkül játszható, vagyis inkább sikerült elég jól burkolni: az első pályát szinte elrontani se lehet, itt megtanulhatjuk az alapokat. A másodikon viszont már ugyanilyen bambán építkezve DEFEAT a jutalmunk – igen, ez egy ilyen békésnek tűnő játékban is előfordul. Ha eltekintünk attól, hogy tulajdonképpen egy optimalizációs feladatot próbálunk intuícióból megoldani, egéz jól el lehet vele lenni. Vagy pont ezért?

Angolul tudni kell

Sok mindent el lehet kerülni az életben. Nem muszáj megtanulni főzni. Bár érdemes. Úszni sem feltétlen kell, bár ezt még inkább. Vidáman lehet élni anélkül, hogy tudnánk autót vezetni, síelni vagy pálinkát főzni.

Angolul viszont meg kell tanulni. Olvasni, hallgatni, és beszélni.

Ez azért kapott egy külön posztot, mert ennyire fontos.

Web dev

Arra az esetre, ha nem vagyunk elégedettek a w3schoolsszal: rendkívül okos anyagok, Shay Howe jóvoltából.

Olyan részletekre kiterjedően, mint

To make text bold and place a strong importance on it, we’ll use the <strong> inline-level element. There are two elements that will bold text for us: the <strong> and <b> elements. It is important to understand the semantic difference between the two.

The <strong> element is semantically used to give strong importance to text, and is thus the most popular option for bolding text. The <b> element, on the other hand, semantically means to stylistically offset text, which isn’t always the best choice for text deserving prominent attention. We have to gauge the significance of the text we wish to set as bold and to choose an element accordingly.

https://learn.shayhowe.com/html-css/getting-to-know-html/#text-based-elements

JBPWAVE: Father

Akira The Don egy brit DJ, akinek eddig nem ismertem a munkásságát. Lofi, meaningwave (!), hip hop, trap stílusokban tevékenykedik.

Készített egy albumot JBPWAVE: Father címmel, amelyen Jordan Peterson hangját lofi hip hop stílusban keveri zenére. Nagyon kemény anyag, imádom az ilyeneket, amikor ennyire bevallottan űzzük, hogy everything is a remix, és egy érdekes valami születik belőle. A dolog viccességén túl még az is jó benne, hogy az egyébként fontos gondolatok mantraszerűen ismétlődnek, minden elcsépeltség nélkül – vagy akár azzal – és akkor mi van? Látszik, hogy idő van benne, nem csak véletlenszerűen van összedobálva, hanem koncepciója van az egésznek. Nagyszerű.

Spotify:

Hasonlót csinál élőben is, ez azért nehezebben indul be, a fenti anyag szerkesztettebb, koncepciózusabb:

És akkor még a MEANINGWAVE-ről: ha jól értem, a fickó épp most teremt egy új stílust – de nem kell nagy dolgokra gondolni, ennek ma korántsincs akkora súlya, egyszerűen csak valami, ami eddig nem volt, és működik. Van honlap, webshoppal, további albumokkal, meg rádió. Kicsit márka, kicsit stílus, de ez mindegy nekünk igazából.