Lumineskaj Ŝonĝoj

Semajnaj Babiloj por Junio 9a, 2022

Geese!, 2018-11

Jam pasis kelka tempo! Mi aldonis Esperanton verzion de mia retejo, kaj mi elĉerpigis energion por skribado. Sed, nun, mi revenas kaj estas tempo por babili ian.

Slipkesto

aŭ, tiel la mondo vokis ĝin, la Zettlekasten.

Dum la lasta jaro kaj multaj monatoj, mi uzas Slipkeston (aŭ dua menso). Mi ne estas bona pri procesi mian akumuladon da informo. Sed, eĉ dum mia akumulado kreskas, mi malkovras kaj mi ordas tre valoran informon, kaj mi povas poste trovi ĝin.

Obsidian estas mi ilo, sed mi plejparte uzas la bazan programo sen kromprogramoj. Mi ŝatas la facilon de ŝaltas inter redaktado kaj prezantado. Ĉar mi povas facilege ligili novan dosieron kaj mi povas facilege sekvi la ligilojn, mi pli ofte disigas miajn notojn al pli malgrandaj partoj.

Dum la sekvaj monatoj, mi malkaŝos partojn de mia reala slipkesto. Plejparte de la filmoj kaj klarigorj, kion mi povas trovi sur la interreto, estas tre baza pri la filozofio kaj la avantaĝo de la slipkesto. Do, mi volas malkaŝi konkretan verkon.

Bluedento

Mi havas multajn interesajn kaj mi ofte kolektas novajn interesajn. Mi finfine ekprenis la BlueR bibliotekon por Rusto kaj komencis esplori la ekzercan horloĝon, kion mi aĉetis antaŭ kelkaj jaroj. Por fari tion, mi eklernis pri Bluedento.

La kerna Bluedenta specifo estas pli longa ol 3000 pagojn! Mi pesensas, ke tio estas tre, tre troa. Ne estas maniero por ajna persono, aŭ eĉ malgranda grupo de personoj, kompreni la tutan dosieron. Eble tio estas bona, ĉar multaj centoj da paĝoj estas pri la fisikaj ligilaj tavoloj. Sed, mi ne komprenas ion de la bazaj konceptoj ĉar la dosiero estas tro granda.

Sed ĉi tie estas la bazaj elementoj, pri kio mi scias.

  • aparato
  • profilo
  • servo
  • servklaso
  • karakterizia
  • posedaĵo
  • GATT

Estas multaj serviloj, kio havas difinitajn normojn. Ekzemlpe, mi elŝutis la “Battery Service” dosieron kaj legis ĝin. Mi sufiĉe komprenas por konekti al mia aŭdilo kaj legi la baterian tavolon el ĝin.

Sed, por mia ekzerca horloĝo, mi trovis ĉi tiun bazan informon:

device: Device { adapter_name: hci0, address: E3:09:3A:69:A9:9E }
    address_type:         LeRandom
    name:                 Some("ID115Pro")
    uuids:                Some({00001800-0000-1000-8000-00805f9b34fb, 00000af0-0000-1000-8000-00805f9b34fb, 00001801-0000-1000-8000-00805f9b34fb})
    paired:               false
    connected:            true
    trusted:              false
UUID processing
    Ok(GenericAttribute)    Ok(GenericAttrib)
    Err(00000af0-0000-1000-8000-00805f9b34fb)    Err(00000af0-0000-1000-8000-00805f9b34fb)
    Ok(GenericAccess)    Ok(GenericAccess)

Ne estas klara al mi, kion tio signifas. Mi pensas ke la uuid-oj sur la aparato signifas servilajn UUIDojn. Ĝi samas al mi, ke iu de la UUIDoj ne estas sciita. Mi ne eblas trovi ion, kio estis kompreneble sur la horloĝo. Mi pensas, ke ciuj de la useblaj informoj, kion mi volas, estas konservita en la GenericAccess-a ecoj.

Mi ne nun povas daŭri, sed mi ankoraŭ trovis Bluedentan mezurilon por Androido, kaj mi eble instalos tion kaj uzu ĝin por registri transakcion inter mia poŝtelefono kaj la horloĝo. Sed, tio estas por alia tempo.

Antaŭ mi foriras, ĉi tio estas simila eligo de mia programo, por mia aŭdilo. Tio estis pli interesa:

device: Device { adapter_name: hci0, address: 00:1B:66:CD:B0:82 }
    address_type:         LePublic
    name:                 Some("LE-MOMENTUM 3")
    icon:                 Some("audio-headset")
    class:                Some(2360324)
    uuids:                Some({0000feed-0000-1000-8000-00805f9b34fb, 00001108-0000-1000-8000-00805f9b34fb, 00001200-0000-1000-8000-00805f9b34fb, 0000111e-0000-1000-8000-00805f9b34fb, 0000180a-0000-1000-8000-00805f9b34fb, 0000fdce-0000-1000-8000-00805f9b34fb, 0000110d-0000-1000-8000-00805f9b34fb, 931c7e8a-540f-4686-b798-e8df0a2ad9f7, 0000180f-0000-1000-8000-00805f9b34fb, 00001801-0000-1000-8000-00805f9b34fb, 0000110e-0000-1000-8000-00805f9b34fb, 00000000-deca-fade-deca-deafdecacaff, 0000110c-0000-1000-8000-00805f9b34fb, 1ddce62a-ecb1-4455-8153-0743c87aec9f, 0000110b-0000-1000-8000-00805f9b34fb, 0000fe03-0000-1000-8000-00805f9b34fb, 00001800-0000-1000-8000-00805f9b34fb})
    paired:               true
    connected:            true
    trusted:              true
UUID processing
    Ok(GenericAttribute)    Ok(GenericAttrib)
    Err(0000110c-0000-1000-8000-00805f9b34fb)    Ok(AvRemoteTarget)
    Err(0000110b-0000-1000-8000-00805f9b34fb)    Ok(AudioSink)
    Err(0000111e-0000-1000-8000-00805f9b34fb)    Ok(Handsfree)
    Err(00001200-0000-1000-8000-00805f9b34fb)    Ok(PnpInfo)
    Ok(DeviceInformation)    Err(0000180a-0000-1000-8000-00805f9b34fb)
    Ok(BatteryService)    Err(0000180f-0000-1000-8000-00805f9b34fb)
    Ok(GenericAccess)    Ok(GenericAccess)
    Err(0000110e-0000-1000-8000-00805f9b34fb)    Ok(AvRemote)
    Err(00001108-0000-1000-8000-00805f9b34fb)    Ok(Headset)
    Err(0000110d-0000-1000-8000-00805f9b34fb)    Ok(AdvancedAudio)

battery service detected: Service { adapter_name: hci0, device_address: 00:1B:66:CD:B0:82, id: 35 }
    0000180f-0000-1000-8000-00805f9b34fb
characteristic: Characteristic { adapter_name: hci0, device_address: 00:1B:66:CD:B0:82, service_id: 35, id: 36 }
    [100]

Multaj UUID-oj estas serviloj, aliaj estas servilaj klasoj. Estas multi pli, kiun mi forigis, ĉar mia programo ne rekonis ilin. Mi ne scias, kion mi povas fari per ĉi tiun. Ĉi tiu montras, ke aŭdilo realigas normajn interfacojn, por ke komputilo povas konekti kaj uzi ĝin per normajn pelilojn.


Mi intenca limigis min al tempo, do mi povas esti certa ke mi skribus ĝin, kaj tempo finiĝis. Mi devas fari aldonajn esploron kaj tre multaj por lerni. Mi afiŝos, kion mi learnas, kiam me lernas pli.

Multaj Lingvoj, Finfine

Hieraŭ, mi finfine disponigis multlingan formon de mia retejo!

Mi tradukis multajn artikolojn, sed mia antaŭa reteja programo ne komprenas ke multaj artikoloj estas samaj, sed en malsama lingvoj. La nova programo komprenas tion, do mi povas facile krei artikolon en multaj lingvoj, kaj la programo ligos ilin kune.

Mia defio: skribi novan artikolon en Esperanto, kaj traduki ĝin al la angla.

Mi afiŝos tion sabate!

(Fakte, mi denove faris tion kun ĉi-tiu artikolo!)

FitnessTrax 0.1.0

Saluton, kaj bonvenon reen!

Hodiaŭ, mi povas anonci, ke mi cirkuligis FitnessTrax, versio 0.1!

FitnessTrax estas sana kaj trejnada programo, ke estas konstrukcita por individua uzantoj, kaj sekvas la privatecan politikon de resti ĉion de via dateno sur via propra komputilo. Dateno ke vivas tie, ne povas esti eksplautata de kompanio, ke ne eble konsideras vian privatecon.

Tio estas la unua versio de la programo, ke mi pensas estas taŭga por hejmaj uzantoj. Dum ĝi estas malbela kaj limigita nuntempe, ĝi estas uzebla. Dum la sekvaj kelkaj versioj, mi planas bele stiligi la programon, kaj aldoni multajn aliajn datenojn.

FitnessTrax estas GTK 3 programon. Ĝi aktuale povas instalita de fonto. NixOS derivado baldaŭ estos havebla. Mi ne aktuale faras instalado de Crates.IO, Ubuntu, aŭ Flatpack, sed ĉiuj tri estas en mia plano.

Historio

Ĉi tio estas la kulmino de multaj jaroj da laboro kaj studado.

Mi unue komencis kroniki miajn pezon kaj biciklajn veturojn en 2003. Mi nur uzis simplajn tekstajn dosierojn. Tio funkcias dum longa tempo, sed estas neebla fari grafeojn, kaj mi ne povas vidi koheran bildon de unu tago en mia historio sen legi el multaj diversaj dosieroj.

En 2013, mi komencis provi meti ciun informon al unu datumbazon. Mi neniam volis agorda apartan datumbazoservilo. Krom esti tre kompleksa por programo, ke nur ricevos kelkajn skribojn po tago, aparta datumbazoservilo pliigas la penon necesan por instali aplikon, kaj malfaciligas sekurkopiojn.

Do, mi komencis kun SQLite datumbazo kaj Haskell retservilo. Dum la jaroj, mi migris el SQLite al enigita tempa seria datambuzo, tiam el Haskell al Haskell kaj Javascript, tiam al Rust kaj Javascript, Rust kaj Typescript, kaj finfine al Rust en denaska GTK aplikado.

Dum la jaroj, mi provis multajn reprezentojn de la datumoj ĝis mi havis ion, ke plejparte taŭgis la padronojn. Mi akceptis la Rekordan datumstrukturon, tiam mi difinis Pezon, Paŝojn, Tempo/Distancon, Daŭron, kaj SetRep kiel Rekordoj. En mia tempo kun Cloud City, mi lernis el diversaj uloj, kiuj estas tre bonaj pri arkitekturo, ke mi komprenis kiel konstruii mian aplikadon.

Eble ŝajnas stulte, ke aplikado kiu nur estas glorigita kalkultabelo, povas daŭri tiom da tempo por konstrui. Sciu ke mi konstruis tiun aplikadon sen helpo, kaj mi faris multajn erarojn. Mi ekkonis multe, kaj mi esperas, ke mi uzu tion en mia kariero. Mi ne pensas ke mi povis fari pli bone.

Honoras Amelia, antaŭ du jaroj

Hodiaŭ, antaŭ du jaroj, mi vekiĝis al la novaĵo, ke mia amiko, Amelia, mortis.

Amelia estis la viktimon de transphobia en nia lando, kaj nesufiĉa respondo al mensa malsano en nia lando. Ŝi memmortigis antaŭ ses monatoj, ke ŝi pasigis intermite en malsanuloj. Ekde tiam, mi partoprenis en iujn el la sama enhospitiligaj programoj kiel ŝi. Kvankam mi resaniĝis, ŝiaj spertoj daŭrigas memorigi min, ke iuj sistemoj ne sufiĉas, ke ni ne povas premesas transgenran inkluzon, eĉ en ŝtato kun leĝaroj, ke apogas transgenrajn rajtojn.

Miaj sentemoj estas malsimplaj. Mi ne plu sentas akran doloron, sed mi kreskas tial mi memoras ŝin, kaj sentas iom da doloro, ĉiun tagon. Ĉiu tago mi pensas pri la aferojn, kiujn ŝi povus fari, kaj la aferojn, kiujn ŝi jam faris por progresi matematikon kaj sciencon. Aferojn, kiujn mi ne povas kompreni, ĉar ŝi estis genia.

Do, hodiaŭ ni memorhonoras la datrevenon de la morto de Amelia, kaj ni daŭre batalas por la inkluzo kaj la digno de transgenraj homoj, kaj la destigmatizado de mensa malsano ĝis ĝi estas kiel neregebla tiel iu ajn alia malsano.

CV

Savanni D'Gerinel

512-947-0226
savanni@luminescent-dreams.com