En ole koskaan erityisemmin kiinnostunut JavaScriptistä — perinteisten tyypitettyjen kielten suunnasta tulevalle “kaikki käy” -asenne ei tule luonnostaan, minkä lisäksi kaikenlaisten kirjastojen ja alustojen kirjo on jokseenkin masentava. Samaan aikaan on toki pakko myöntää, että JS on nykypäivää ja kehittynyt hurjasti takavuosien turhista mouseover-ajoista. Aina välillä olisi myös ihan kätevää saada oma Processing-kikkare webaselaimen kautta muiden nähtäväksi, kun Java-applettien aika on auttamattomasti ohi.
Olen käyttänyt sillanrakennukseen aiemmin Processing.js:ää, joka kuitenkin lakkasi jossain vaiheessa päivittymästä eikä ollut muutenkaan koskaan täysin ongelmaton. Pienet kikkarat siirtyivät kyllä, mutta vähänkin mutkikkaamman pätkän kanssa tuli nopeasti seinä vastaan. Tuoreempaa tulokulmaa edustaa välimallin ratkaisu P5.js, joka on lähinnä kirjasto Processingin käteviä funktioita JS:lle. P5.js on sikäli virallinen ja tunnustettu, että sitä voi kirjoitella suoraan Processingin editorilla, kunhan vaan asentaa tarvitun laajennuksen. Sketsiä ajettaessa lopputulos menee suoraan tabiksi oletusselaimeen, eikä ympärille tarvitse onneksi räpeltää itse mitään HTML/CSS-purkkaa.
Ensimmäisenä yritelmänä oli joulun aikaan sopiva piirto-ohjelma, joka peilaa hiirellä piirrettävän viivan kahteentoista kertaan symmetrisesti. Härpättimellä saa helposti aikaan etenkin lumihiutaleita (sekä pitsipöytäliinoja):
Lumi on jo peittänyt canvasin webasessa.
Perustutoriaaleja googlaamalla pääsi nopeasti alkuun, eikä kokeiluun paljoa aikaa seonnut. Melko varmasti joitakin asioita tuli tehtyä tarpeettoman kierosti, mutta pluralismi näyttää olevan JS:lle luonteenomaista. Saman asian voi tehdä monella eri tavalla ja hyvin kyseenalainenkin “ratkaisu” saattaa vahingossa toimia. Mieluummin tietysti opettelisin alusta saakka niitä hyviä tapoja. Muuttujien näkyvyysalue ja esittely tuntuu edelleen hiukan randomilta: perinteinen var-tapa on oikeastaan ihan suoranaisen huono, mutta nykyään on sentään tarjolla järkevämpi let.
Sormiharjoituksena tiivistin vielä koodin mahdollisimman lyhyeksi, missä puuhassa tuli opittua sitä sun tätä uutta jekkua. Luettavuus on edelleen yllättävän hyvä, joten en varmaankaan osannut vielä käyttää kaikkia mahdollisia optimointikonsteja: frozen3.js. Pätkää voisi toki vielä merkittävästi lyhentää toiminnallisuutta heikentämällä — vaikkapa kumituksen poistolla ja värejä rumentamalla — mutta moinen kikkailu ei ole järin kiinnostavaa. Tulipa nyt tätäkin kokeiltua ja tulevaisuudessa ehkä lisääkin.
Värkkäilin 2016 retrograafikoille Pixel Polizein, joka on tarkoitettu pikemminkin toisaalla piirrettyjen kuvien tarkastamiseen kuin yleiseen formaatista toiseen konvertointiin ja ditherointiin (vaikka sillä formaattikonversioita kohtuudella pystyykin tekemään). Siinä missä tekstigraffaeditorilleni löytyi nopeasti käyttäjäkunta, jäi Poliisi hieman marginaaliin, kenties siksi, että samat asiat sai tehtyä muillakin ohjelmilla.
Alkuinnostuksen voimin jaksoin väsätä tukea aika monelle plattikselle ja moodille, mutta lopulta se polttoaine oli käytetty ja 2017 tein enää pieniä korjauksia. Sen jälkeen tuli yli kolmen vuoden tauko, ja kuvittelin jo koko projektin tulleen tiensä päähän – näinhän on tunnetusti käynyt monille muillekin innolla aloitetuille graffatyökaluille. Läsähdyksestä huolimatta prokkis toimi kuitenkin hyvänä olio-ohjelmointi- ja ohjelmistosuunnitteluharjoituksena: kokonaisrakenne on kohtuullisen selkeä, uusia koneita on helppo lisätä eikä missään ole kohtuuttoman mutkikkaita söheröitä, joihin en uskaltaisi enää itsekään koskea. Samaa ei voi valitettavasti sanoa PETSCII-työkalusta, joka mutatoitui pikaisen yhden illan kokeilun ympärille.
Innostuin päivittämään petskariedikkaa jälleen tänä syksynä sieltä täältä, etenkin kun Processing 2:ssa jumittamisesta alkoi tulla todellisia ongelmia. Lopetin siis vetkuttelun ja kohtuullisen pienin muutoksin sain siirryttyä Processing 3:een. Sitä myötä muistin myös Poliisin ja hyvin pikaisesti modernisoin senkin. Kopypastesin samalla mukaan uudistettua UI-koodia toisesta projektista, mitä myötä käyttöliittymä hieman koheni. Jo pelkästä P3:een siirtymisestä koitui jotain etuja korjattujen tiedostopolkujen ja uudemmilla JRE:n versioilla toimimisen muodossa.
Samaltahan se näyttää.
P3:ssa ei voi enää pompotella piirtäessä grafiikan pehmennystä pois smooth/noSmooth-funktioilla, joten oli pakko valita pikselien erottuvuuden vuoksi pehmentämätön graffa. Asiasta ei onneksi sanottavaa harmia koitunut muuten kuin hieman rösöisempien painonappien muodossa. Eri zuumitasoja kokeillessa huomasin käyttöliittymätekstien menevän joskus kuvan päälle, joten tulipa korjattua sekin pitkäikäinen bugi samalla. Katsotaan nyt, mitä teen seuraavaksi: retrokoneita ja niiden graffamoodeja olisi loputtomasti, mutta energiaa taas ei ole loputtomasti, joten jollei jostain paljastu suurta lojaalia käyttäjäkuntaa, niin taidan tyytyä lähinnä korjailemaan pikku bugeja.
Selvisin mustasta perjantaista muuten vähin ostoksin, mutta “jos vielä yksi” -hengessä tuli sentään hankittua Bluetooth-kaiutin, joita olen punninnut jo ennenkin Sonystä JBL:ään. Tällä erää kokoelmiin päätyi tanskalaisperäinen SACKit MOVEit, jossa on kokoa ja näköä – kuvista oli hieman vaikea päätellä todellista kokoa, ja paketista paljastuikin melkoinen mölli. Kajari ei ole enää sellaista kokoluokkaa, että sen voisi noin vain heittää reppuun reissuun lähtiessä, ja painoakin on turhan paljon toistuvaan kuskailuun. Lisäksi reissukäyttöä kampittaa osaltaan erillisen oman muuntajan tarve, siinä missä muita purkkeja pystyy tyypillisesti lataamaan vaikkapa läppärin usbista kännykkäpiuhalla; akulle lupaillaan sinänsä jopa 12 tunnin kestoa, mikä riittää moneen tarkoitukseen hyvin.
Pelkistettyä on.
Ulkoisesti Muuvit näyttää pelkistetyn selkeältä. Päällä on napit äänenvoimakkuudelle, pauselle, BT-parittamiselle ja tietysti virtanappi. Kankaan voi vaihtaa, jos sen väri ei silmää miellytä, mutta hieman kikkailun puolelle se kenties jo menee. Takana on niin ikään minimalistinen valikoima portteja: virtaliitin, USB vaikkapa kännykän lataamista varten ja äänisisäänmeno. Itse olen hieman luovuttanut BT-äänien kanssa, mutta kyllähän tuon sai kännykkään yhdistettyä ja ääntä toistettua.
Käytössä purnukka on toiminut ainakin toistaiseksi mukavan lägittömästi, mitä ei valitettavasti voi sanoa kaikista kilpailijoista – (nysän) audiojohdon kytkemisestä ei kulu pitkään ennen kuin soitto soi. Plussaa niin ikään vinkunoiden puutteesta, vaikkakin vertailu on hieman epäreilu oman erillisen muuntajan vuoksi. Päällä olevat napit ovat mukavan jämäkät ja selkeät, mutta äänenvoimakkuuden säätö on toteutettu hieman kummallisesti: nopeasti nappia takomalla ei tapahdu juuri mitään, vaan volo muuttuu havaittavasti ainoastaan pidemmällä painalluksella ja menee sitten helposti yli tai ali halutun voimakkuuden. Ehkäpä tuohon voisi tottua pikku harjoittelulla.
Mutta sitten sivuseikoista pääasiaan eli äänenlaatuun. Toisin kuin pienissä kajareissa, möllissä on aivan selvästi erottuva vasen ja oikea kanava, joten ainakin jonkinlainen stereokuva on mahdollinen. Bassopäästä ei sovi ihmeitä odottaa, mutta on sitä siellä ja sävy on miellyttävä. Diskantit toistuvat nekin ihan kelvollisesti, mutta valitettavasti keskialueella on tukkoisuutta ja rosoa, mikä vaikuttaa esimerkiksi laulun ja puheen kuulumiseen. Taustalla renkutukseen käy, mutta kajarin epämusikaalisen luonteen vuoksi en hankkisi sitä yhtään vakavampaan musiikin kuunteluun. Äänenvoimakkuutta riittää yli kohtuullisen tarpeen, mutta lujaa posottaessa toisto menee nopeasti ikävän purkkimaiseksi, joten käytännössä suurimmilla voloilla ei ole juuri käyttöä.
Verdict: vajaan satasen nätti purkki on hintansa väärti, mutta äänentoisto ei ole erityisen puhdasta, ja suuri koko sekä paino eivät suosi helppoa mukana kuskaamista.
Pitkän jähnäilyn jälkeen päätin lopulta yrittää PETSCII-editorini päivittämistä Processing 2:sta Processing 3:lla toimivaksi. Yhtäältä P2 alkaa olla jo ammoinen versio, eikä sillä tehtyjen softien toimivuus nykykoneilla ole enää taattua, ja toisaalta sorsaversiosta kiinnostuneille on melkoista riesaa roikottaa koneella vanhentunutta ohjelmaa vain tämän takia. En mitenkään erityisemmin itse rakasta P3:a, sillä se ei ole joka suhteessa parannus aiempiin, mutta minkäs teet.
Processing 3 – haaskataanpa tilaa oikein kunnolla näihin tabien väleihin 🙁
Parin illan pakerruksen jälkeen uskoisin saaneeni jo suunnilleen kaiken toimimaan tyydyttävästi. Osa korjauksista oli triviaaleja, kuten ikkunan koon asetuksen vaihtaminen settings()-funktioon ja args:n kohdalla lisätarkistus, ettei taulukko ole null – P2:ssa taulukko on tyhjä, jos komentorivillä ei ole annettu parametreja. Ikkunan otsikko vaihdetaan nykyään surface.setTitle()-funktiolla aiemman framen sijasta.
Mutkikkaat asiat ovat kuitenkin mutkikkaita, ja etenkin esikatseluikkunan kanssa taistellessa oli usko loppua. Vanha (sekin huono) tapa avata toinen ikkuna ei enää toiminut alkuunkaan, mutta toisaalta esimerkeistä löytyy nykyään ihan semivirallinenkin keino kahden ikkunan käyttöön. Ongelmat alkavat siinä vaiheessa, kun toinen ikkuna pitäisi pystyä sulkemaan ilman, että koko ohjelman suoritus loppuu. Päädyin siihen, että toista ikkunaa ei kannata edes yrittää sulkea, vaan se on parempi piilottaa, kun sen halutaan olevan “kiinni”. Lopulta esikatseluikkunan koodista tuli selkeämpi ja siistimpi kuin vanhasta, joten ainakin tämä muutos oli parannus.
Toinen suuri kompastuskivi oli vasemman ja oikean shift-näppäimen toisistaan erottelu, joka oli jo ennenkin hankalaa ja vaati keyPressed(KeyEvent ke)-purkkaamista. Nyt vanha konsti ei toiminut enää ollenkaan, mutta onneksi keyEvent-oliosta saa edelleen kaivettua AWT:n eventin, jonka alta löytyy tuttu KeyEvent.KEY_LOCATION_LEFT. Tämäkin tapa on jo menossa kiellettyjen listalle, mutta ainakin toistaiseksi se vielä toimii. Olisi tietysti yksinkertaisinta, jos Processing vain suoraan tukisi shiftien erottelua, mutta se lienee turha toivo.
Oikeasti merkittävä parannus olisi, jos saisin höskän toimimaan 2D-kiihdytettynä, mutta tällä hetkellä piirtokoodi on niin tiukasti sidottu pikselien suoraan sorkkimiseen, että se ei ole kohtuudella mahdollista. Vaihdoin kokeeksi grafiikkaengineksi P2D:n, mutta se oli lähinnä ruma ja läginen (tämä on toki kiinni lähinnä omasta piirtokoodistani), joten olkoon toistaiseksi. Linuxilla ja Windowsilla kiihdyttämätönkin ikkuna on aivan tarpeeksi nopea, mutta Mäkillä meno on hieman hyhmäistä nykyisillä Javan versioilla, joissa ei ole enää Applen optimointeja mukana.
In Processing 2 it was relatively easy to tell the difference between the right and left shift by overriding keyPressed(java.awt.event.KeyEvent ke), but in Processing 3 event handling has changed and the function doesn’t even get called any more. I really really wanted to use the two keys differently and came up with this blurb for the keyPressed() handler:
if(keyCode==SHIFT)
{
java.awt.event.KeyEvent ke;
ke=(java.awt.event.KeyEvent)keyEvent.getNative();
if(ke.getKeyLocation()==KeyEvent.KEY_LOCATION_LEFT)
{
// It's the left shift
}
}
Note that this will only work with the default renderer, as the others don’t use AWT. The “solution” is also deprecated, so it might stop working any time and then we need another hack to work around the issue. Things would be so much easier if Processing simply provided a different keyCode for the two keys, but I wouldn’t hold my breath waiting for that.
Nurkkiini oli jäänyt aikansa palvellut Buffalo AirStation WHR-HP-G300N (myös lisänimillä High Power N300 tai Nfiniti!), joka alkoi vaikuttaa serrikamalta 100 Mbitin etherneteineen ja 802.11n-wlaneineen, sillä olin jo muutama vuosi sitten siirtynyt gigabitin ja 802.11ac:n aikaan. Eräänä päivänä pälkähti päähäni kuitenkin ajatus siitä, saisiko Buffalosta korvaajan vähän niin ja näin toimiville USB-WLAN-pulikoille. Siispä googlaamaan.
Päässä hetkellisesti lainasojottimet, koska lainasin varsinaiset sojottimet eteenpäin.
Reitittimille vaihtoehtoisia firmiksiä värkkäävä DD-WRT-projekti on iloinen asia, ja AirStationillekin löytyy tukea. Hieman yllättäen myös itse Buffalo on jaellut DD-WRT:tä “Professional”-nimellä – vakkari on nimeltään “User-Friendly”, minkä osuvuudesta voi kyllä olla montaa mieltä. Ajattelin pelata varman päälle ja asensin Buffalon jakelupaketin, vaikka se jo muutaman vuoden vanha onkin. Samalla nimellä on ilmeisesti myyty kahta vähän erilaista purkkia, mikä saattaisi aiheuttaa hankaluuksia, mutta päivitys meni sisään ihan sutjakasti ja käyttöliittymä muutti muotoaan:
Täältähän löytyy kaikenlaista uutta.
Alkuperäinen ajatukseni oli laittaa Buffalo Client Bridge -moodiin, jossa ethernet-nartsan päässä istuva PC pääsisi ulkoverkon IP:llä maailmalle ja purnukka olisi periaatteessa läpinäkyvä. Yhdistelmä omaa osaamattomuuttani, huonoja ohjeita ja sekalaista toimimattomuutta toppasi yrittelyn kuitenkin ennen pitkää. Seuraavaksi sopivin ja luotettavampi vaihtoehto on tavanomaisempi Client-moodi, joka lähtikin odottamattoman helposti tulille.
Tärkeimmät asetukset ovat paikoissa Wireless–Basic Settings ja Wireless–Wireless Security, joihin laitetaan tiedot siitä wlanista, johon Buffalon pitäisi liittymän. Minimissään paljon muuta ei oikeastaan tarvitakaan, paitsi omaan luotavaan lankaverkkoon liittyvät asetukset paikasta Setup–Basic Setup. Monenlaisia säätöjä toki riittää ja langattoman verkon “advanced settings” -täpän takaa löytyy nopeuteen oleellisesti vaikuttavia juttuja, kuten antennien lähetysteho. Täällä ja etenkin täällä lisätietoja aiheesta. Hyödyllinen välilehti on myös Status–Wireless, jolta näkee yhteyden nopeuden ja laadun.
Jäikö projektista mitään oikeasti käteen? Väittäisin, että kyllä. 24/7 toimimaan tarkoitettu reititin on vakaampi laite kuin kyseenalaisen USB-ohjaimen ja hataran portin perässä roikkuva kyseenalainen USB-pulikka kyseenalaisine ajureineen ja virransäästöineen – etenkin Linuxin tapauksessa. Yhteys ei ole katkennut kertaakaan sen enempää kolmen tunnin pingaamisella kuin kymmenien gigojen kopioinnissakaan. Tietokoneen päässä riittää toimiva ethernet-portti ja ylimääräisenä pikku plussana vapaaksi jää yksi USB enemmän.
Sivumennen tuli opittua yhtä sun toista langattomista verkoista – ainakin se, kuinka ongelmaisia ne ovat piuhalla kytkemiseen verrattuna. Aikanaan nopeaksi mainostettu 802.11n ei ole välttämättä juuri sen kummempi kuin g-verkkokaan, jollei käytössä ole 40 MHz kaistanleveyttä ja useampia kuin yksi antenni (Buffalossa on sentään molemmat). Lähetystehot, maakohtaiset rajoitukset ja preamblet olivat joskus toki tulleet jo vastaan, mutta tämän säädön myötä niihin tuli tutustuttua paremmin, samoin kuin joihinkin uusiin Linuxin verkkotyökaluihin.
An update of my older post about recent Nvidia cards’ G3D marks (which, again, might be realistic or not). Some of the old figures had changed, and of course the new Ampere cards are of interest. Still PETSCII, but as the image has grown too big, not directly viewable on a real C-64 any longer 🙁
Hard numbers backed up by facts.
Super, Ti and such models excluded in order to avoid clutter, but in this benchmark at least the 2080 Ti is as fast as the 3070, and the 1080 Ti almost reaches the 2080. The 1030 looks slightly better than last time and, judging by my own experiences, its placement is more realistic now. The next update will probably come after the low-end Amperes arrive.
After some recent updates it seems my old compositor toggle script may not work on all setups – for example two of mine. Marco doesn’t react to the compositor setting change or even the graphical Window Settings preference. Need to do things a bit more complicated way then:
#!/bin/sh
case $1 in
on)
gsettings set org.mate.Marco.general compositing-manager true
gsettings set com.linuxmint.desktop mate-window-manager marco-composite
marco --replace &
nvidia-settings --assign CurrentMetaMode="nvidia-auto-select +0+0 { ForceCompositionPipeline=On }"
;;
off)
gsettings set org.mate.Marco.general compositing-manager false
gsettings set com.linuxmint.desktop mate-window-manager marco
marco --replace &
nvidia-settings --assign CurrentMetaMode="nvidia-auto-select +0+0 { ForceCompositionPipeline=Off }"
;;
esac
Again, call it something like compositor.sh, copy it to /usr/local/bin and chmod a+x compositor.sh as root. The parameters on and off will toggle the compositing.
As a sidenote, the compositor started getting stuck in several situations on my main machine: turning the screen off and on would make the GUI get stuck, and likewise for display sleep. Updating to a newer driver version (455.23.04) seems to have remedied the situation.
Hankin Acer C710 -Chromebookin muistaakseni 2013 ja se palveli kohtuullisen hyvin kevyessä käytössä jokusen vuoden. Isona plussana mallissa olivat kohtuullisen täysi näppis (myöhempiä karsittiin), vaihdettavat muistit ja normaali 2,5″ kiintolevy, joka oli helppo vaihtaa SSD:hen. Kehittäjämoodi ja Crouton kohensivat kummasti elämänlaatua, kun Chrome OS:n rinnalle sai pyörimään Linux-softat, jotka täydensivät rajallista ohjelmavalkoimaa. Jossain vaiheessa totesin, ettei Chrome OS oikeastaan tehnyt mitään itselleni hyödyllistä, joten asentelin koneeseen SeaBIOSin ja normaalin Mintin, joka toimikin kelpo lailla lukuun ottamatta valmiustilaa.
Aika ajoi kuitenkin lopulta Chromebookin ohi, kun tehot alkoivat käydä riittämättömiksi ja akkukin hiljalleen lerpahti. Kone oli käytännössä joutilaana kaapissa muutaman vuoden, kunnes päätin entisöidä sen alkuperäiseen asuunsa: tarrat vek (tunnin kihnutus) ja Mintin tilalle takaisin Chrome OS. Jälkimmäinen tehtävä vaikutti lähes toivottomalta, koska olin joko tuhonnut tai hukannut järjestelmän palautusimagen, eikä laitetta periaatteessa palauteta ilman sitä luonnontilaan. Ohjeiden avulla sain kuitenkin firmiksen takaisin, sillä asennusskripti osasi ladata ja modifioida alkuperäisen tiedoston – ainakin C710:lle.
Ihan helposti palautus ei sittenkään tapahtunut, sillä käyttis palautetaan vielä erikseen ja siihen tarvittava työkalu ei toiminut Linuxilla. Googlaus auttoi jälleen ja sain tehtyä palautustikun onnistuneesti … paitsi että kaksi ensinnä kokeilemaani tikkua eivät toimineet syystä tai toisesta. Lopulta sentään Kingstonin vanha rähjäinen DataTraveler osoittautui toimivaksi.
Näin vanhat Chromebookit eivät ole enää päivitysten piirissä, vaikka rauta sinänsä ei olekaan juuri heikompaa kuin huonoimmissa uusissa ‘bookeissa. Chrome OS jää niin ollen versioon 65.x, joka ei valitettavasti riitä uusiin kiinnostaviin ominaisuuksiin, kuten Android- ja Linux-softien ajamiseen. Ikä painaa konetta muutenkin pahasti, joten se luultavasti pääsee jo viettämään eläkepäiviään kaapin nurkkaan ilman työvelvoitteita.