Steven
Steven5 min lukuaika

Rauhallinen ohjelmisto: vilkkuvan kytkimen tappaminen ja chatin opettaminen kertomaan, missä tilassa se on

Kaksi pientä GeekBye-julkaisua, ei näyttäviä ominaisuuksia — vain asetuskytkin, joka lakkasi vilkkumasta, ja chat-avustaja, joka vihdoin kertoo, vastasiko se kokoustilassa vai koodaustilassa. Näin paljon "rauhallinen ohjelmisto" oikeasti maksaa, yksi yksityiskohta kerrallaan.

Tuote
Suunnittelu
Kehitys
GeekBye-julkaisut
Rauhallinen ohjelmisto: vilkkuvan kytkimen tappaminen ja chatin opettaminen kertomaan, missä tilassa se on

Kaikki julkaisut eivät ole sotatarinoita. Jotkut ovat vain luettelo pieniä, lähes näkymättömiä asioita, jotka olivat hiljaa väärin — sellaisia, jotka eivät kaada mitään mutta saavat sovelluksen tuntumaan hieman epäluotettavalta, hieman hermostuneelta, hieman ei-omaltasi. GeekBye v2.0.3 ja v2.0.5 olivat kaksi sellaista. Ei uusia ominaisuuksia. Vain rauhaa.

"Rauhallinen ohjelmisto" kuulostaa mielialalta. Se on itse asiassa kasa täsmällisiä päätöksiä. Tässä kolme niistä.

Kytkin, joka ei osannut päättää

Oli asetuskytkin — se, joka ohjaa äänen palautusta —, joka vilkkui, kun sitä napsautti. Kosketa se päälle, ja hetken se näytti päällä, sitten napsahti takaisin pois, sitten asettui. Pieni visuaalinen änkytys, mutta silmä nappaa sen, ja se tulkitaan sovellus ei ole varma, mitä se tekee.

Syynä on klassinen käyttöliittymän kilpailutilanne nimeltä optimistinen päivitys. Kun napsautat kytkintä, sovelluksella on kaksi vaihtoehtoa: odottaa, että asetus todella tallentuu, ja päivittää kytkin vasta sitten (oikein, mutta tuntuu hitaalta), tai kääntää kytkin heti ja tallentaa taustalla (tuntuu välittömältä). GeekBye teki jälkimmäisen — kääntää heti —, mutta se myös luki takaisin tallennetun arvon, kun se palasi. Joten järjestys oli tämä: napsautat, kytkin kääntyy optimistisesti päälle, todellinen tallennettu arvo saapuu hetkeä myöhemmin, ja yhden kehyksen ajan nämä kaksi olivat eri mieltä ja kytkin pomppasi näkyvästi.

Korjaus on saada optimistinen arvo ja vahvistettu arvo täsmäämään siististi — kytkin sitoutuu valitsemaasi tilaan ja lakkaa epäilemästä itseään, kun tallennus vahvistuu. Sen ohella v2.0.3 teki epäglamurin tekstiläpikäynnin: äänen palautuksen kuvausta lyhennettiin niin, että se linjautuu sisarrivien kanssa, ja asetusten sanamuotoja inhimillistettiin. Mikään tästä ei ole ominaisuus. Kaikki tämä on ero asetuspaneelin välillä, joka tuntuu rakennetulta, ja sellaisen, joka tuntuu huolella hiotulta.

Kierros, joka ei halunnut lähteä

Uuden käyttäjän kierrokset ovat hyödyllisiä täsmälleen kerran. Ongelma on tuossa kertaluontoisuudessa: kun olet nähnyt sen, perehdytyspeitto, jota et voi sulkea, muuttuu sekasotkuksi, joka viestii tämä sovellus luulee sinun olevan yhä uusi. v2.0.3 korjasi molemmat päät — tuotekierroksen voi nyt piilottaa, ja jos sen todella haluaa takaisin, on Toista kierros -painike. Näytä se, kun se auttaa, väisty, kun ei, ja anna käyttäjän kutsua se esiin omilla ehdoillaan. Sen kunnioittaminen, ettei käyttäjä ole enää uusi, on oma pieni rauhan muotonsa.

Avustaja, joka ei halunnut kertoa, miten se ajatteli

Tämä on se, jolla oli oikeasti väliä, ja se liittyy syvempään ongelmaan, jota olimme jäljittäneet.

GeekByen avustaja vastaa eri tavalla kontekstista riippuen. Kokouksessa "mitä mieltä olet tästä?" pitäisi saada keskusteleva, kokoustietoinen vastaus. Koodausistunnossa samojen sanojen pitäisi saada tekninen. Joten taustapalvelin ajaa kysymyksen oikean kehyksen läpi — kutsu sitä kokoustilaksi tai koodaustilaksi —, ja tämä kehystys todella muuttaa saamaasi vastausta.

Pulma: sovellus ei koskaan kertonut, kumpi tila vastasi. Joten kun avustaja antoi sinulle koodinmakuisen vastauksen keskustelevaan kysymykseen — tai vastasi koodikysymykseen kuin juttelisit —, näytti siltä kuin tekoäly olisi vain väärässä. Se ei ollut väärässä; se oli toisessa tilassa, eikä sinulla ollut keinoa nähdä sitä. Piilotettu tila sai oikean käytöksen näyttämään rikkinäiseltä. (Itse tilalogiikka on isompi työ — orkestroija, joka päättää, miten koodausistunnon aikana vastataan ei-koodauskysymyksiin —, mutta mikään siitä ei ole sinulle hyödyksi, jos et näe päätöstä, jonka se teki.)

v2.0.5 lisäsi chattiin vain luettavan tilamerkin: pienen etiketin, joka näyttää, vastasiko avustaja kokoustilassa vai koodaustilassa. Vain luettava on koko pointti — se ei ole säädin, jonka asetat, vaan ikkuna päätökseen, jonka järjestelmä on jo tehnyt. Lakkaat arvailemasta, miksi vastaus tuntuu oudolta; näet kehyksen, josta se tuli.

Yksityiskohta, joka tekee merkistä rehellisen

Tässä on insinöörivalinta, jonka kannattaa antaa eteenpäin, koska se on sellainen asia, joka erottaa päälle liimatun ilmaisimen luotettavasta.

Tilatieto tulee taustapalvelimelta osana suoratoistettua vastausta — pieni mode-kehys palvelimen lähettämien tapahtumien virrassa. Mutta vanhempi asiakas, joka on tätä ominaisuutta vanhempi, ei tietäisi, mikä mode-kehys on; parhaimmillaan se jättää sen huomiotta, pahimmillaan renderöi jotain sekaisin menevää. Joten asiakas ilmoittaa kyvykkyytensä: se lähettää pyynnön otsakkeen, joka sanoo osaan näyttää tilamerkin, ja taustapalvelin lähettää mode-kehyksen vain asiakkaille, jotka sen lähettivät. Vanhat asiakkaat eivät koskaan saa signaalia, jota eivät osaa käsitellä; uudet asiakkaat saavat juuri sen kehyksen, jota pyysivät.

Se on yhden otsakkeen kättely, ja se on ero "lisäsimme ominaisuuden" ja "lisäsimme ominaisuuden rikkomatta ketään, joka ei ole vielä päivittänyt" välillä. Sama katselmuskierros tiukensi loput käytöksestä: merkki tyhjentää itsensä nollauksessa ja keskustelukontekstin muuttuessa (vanhentunut tilaetiketti on oma pieni valheensa), ja se näkyy vain chat-näkymässä, johon se kuuluu.

Mitä kaksi "ei-ominaisuutta" julkaisua opetti meille

  1. Hermostuneisuus on luottamussignaali. Vilkkuva kytkin, pomppaava katkaisin, etiketti, joka viipyy kehyksen liian pitkään — mikään niistä ei ole vika kaatumisen mielessä, mutta jokainen niistä kuiskaa tämä sovellus ei ole aivan hallinnassa. Rauha on näiden kuiskausten poissaoloa, ja ansaitset sen yksi kilpailutilanne kerrallaan.
  2. Piilotettu tila saa oikean käytöksen näyttämään vialta. Avustaja teki oikein ja sai siitä syytöksen pelkästään siksi, ettei käyttäjä nähnyt kehystä. Kun järjestelmäsi tekee näkymättömän päätöksen, joka muuttaa tulosta, näytä päätös — vain luettava merkki on usein koko korjaus.
  3. Uusien ominaisuuksien pitäisi olla näkymättömiä asiakkaille, jotka eivät voi käyttää niitä. Kyvykkyysotsakkeen kättely tarkoittaa, että tilasignaali tavoittaa vain asiakkaat, jotka osaavat renderöidä sen. Taaksepäin yhteensopivuus ei ole myöhemmin päälle liimattu versiotarkistus; se on asiakas, joka kertoo, mitä se ymmärtää, ja palvelin, joka kunnioittaa vastausta.

Nämä ovat julkaisuja, joista kukaan ei kirjoita muutoslokin otsikoita, ja ne ovat iso osa syytä, miksi GeekBye v2 tuntuu siltä kuin tuntuu. Julkaisusta, jolle tämä rauha rakennettiin, katso mitä versio 2 oikeasti vaatii (v2.0.0). Sen rinnalla tehdystä luotettavuustyöstä päivä, jolloin sovelluksemme DDoS-hyökkäsi itseään vastaan (v2.0.1) ja miksi tekoälymuistiinpanotyökalusi lopettaa nauhoituksen kesken kokouksen (v2.0.9).

Aiheeseen liittyvät artikkelit

Yksi CSS-muuttuja, viisi katselmuskierrosta ja Swift-työkaluketju joka valehteli
Steven
Steven5 min lukuaika

Yksi CSS-muuttuja, viisi katselmuskierrosta ja Swift-työkaluketju joka valehteli

GeekBye v2.0.7 teki koko overlaystä säädettävän läpikuultavan — mikä kuulostaa yhden rivin CSS-muutokselta ja ei todellakaan ollut sitä. Todellinen tarina on siinä, mitä koodikatselmus nappasi: kaksi pintaa jotka kieltäytyivät haalistumasta, tallennuspalkki joka näytti väärältä samalla peittävyydellä, ja käännetty binääri joka heilahti 672 tavua koska omat dokumenttimme kertoivat katselmoijalle väärän Swift-version.

Ohjelmistokehitys
Suunnittelu
Build
Mac-sovelluksesi myöntää mikrofonin käytön — ja unohtaa sen joka käynnistyksellä
Steven
Steven5 min lukuaika

Mac-sovelluksesi myöntää mikrofonin käytön — ja unohtaa sen joka käynnistyksellä

GeekBye pyysi mikrofonin käyttöoikeutta, myönsit sen, ja se toimi. Seuraava käynnistys: poissa. Eikä sovellus näkynyt lainkaan kohdassa Järjestelmäasetukset → Mikrofoni. Syyllinen oli macOS:n turvaominaisuus, joka ajoi sovellusta hiljaa polusta, joka katoaa — tässä on diagnoosi ja yhden kehotteen korjaus.

macOS
Käyttöoikeudet
Ohjelmistokehitys
Reaaliaikainen transkriptio, kun palomuuri estää WebSocketit
Steven
Steven4 min lukuaika

Reaaliaikainen transkriptio, kun palomuuri estää WebSocketit

Yritysverkot rakastavat sallia HTTPS:n ja tappaa hiljaa WebSocket-päivityksen. Se rikkoo huomaamatta reaaliaikaisen transkription. GeekBye v2.0.8 vaihtaa automaattisesti puhtaaseen HTTPS-siirtoon — ja sen julkaisu paljasti bugin, joka olisi tehnyt koko ominaisuudesta hyödyttömän.

Transkriptio
Verkot
Ohjelmistokehitys