MIT Solid, a primer – not yet description

Reading Time: < 1 minute

Cybernetics and unified communications. Information age. Digital telepathy.

Ok, no telepathy. Let’s stick to real world. SOLID (project at MIT). A project backed by Sir Tim Berners-Lee, who was key discoverer and what more, the person who actually implemented some of the central software around HTTP, aka the protocol that makes possible what we see nowadays as the Web.

The Web is a information retrieval and transmission protocol built on top the fundamental workhorse of Internet, the TCP/IP protocols. Web is the pages, graphics, and code that comes from a server (running a HTTP server, or just ‘web server’ in plain English).

Well, what does SOLID aim for?

I discovered the whole thing only very recently. Tim Berner-Lee’s startup Inrupt is the embodification of the project (or something?) I also noticed there’s a Github repository for the technology itself!

What are the actual goals and deliverables? I don’t know yet. Let’s find out!

First, let’s watch this video:

Magna Carta for the Web (Youtube)



Jukkasoft welcomes the WP Gutenberg Editor

Reading Time: 4 minutes

Of Mountains & Printing Presses

The goal of this new editor for WordPress, called ‘Gutenberg’, is to make adding rich content to WordPress simple and enjoyable. This whole post is composed of pieces of content—somewhat similar to LEGO bricks—that you can move around and interact with. Move your cursor around and you’ll notice the different blocks light up with outlines and arrows. Press the arrows to reposition blocks quickly, without fearing about losing things in the process of copying and pasting.

What you are reading now is a text block the most basic block of all. The text block has its own controls to be moved freely around the post…

… like this one, which is right aligned.

Headings are separate blocks as well, which helps with the outline and organization of your content.

A Picture is Worth a Thousand Words

Handling images and media with the utmost care is a primary focus of the new editor. Hopefully, you’ll find aspects of adding captions or going full-width with your pictures much easier and robust than before.

Beautiful landscape
If your theme supports it, you’ll see the “wide” button on the image toolbar. Give it a try.

Try selecting and removing or editing the caption, now you don’t have to be careful about selecting the image or other text by mistake and ruining the presentation.

The Inserter Tool

Imagine everything that WordPress can do is available to you quickly and in the same place on the interface. No need to figure out HTML tags, classes, or remember complicated shortcode syntax. That’s the spirit behind the inserter—the (+) button you’ll see around the editor—which allows you to browse all available content blocks and add them into your post. Plugins and themes are able to register their own, opening up all sort of possibilities for rich editing and publishing.

Go give it a try, you may discover things WordPress can already add into your posts that you didn’t know about. Here’s a short list of what you can currently find there:

  • Text & Headings
  • Images & Videos
  • Galleries
  • Embeds, like YouTube, Tweets, or other WordPress posts.
  • Layout blocks, like Buttons, Hero Images, Separators, etc.
  • And Lists like this one of course 🙂

Visual Editing

A huge benefit of blocks is that you can edit them in place and manipulate your content directly. Instead of having fields for editing things like the source of a quote, or the text of a button, you can directly change the content. Try editing the following quote:

The editor will endeavor to create a new page and post building experience that makes writing rich posts effortless, and has “blocks” to make it easy what today might take shortcodes, custom HTML, or “mystery meat” embed discovery.

Matt Mullenweg, 2017

The information corresponding to the source of the quote is a separate text field, similar to captions under images, so the structure of the quote is protected even if you select, modify, or remove the source. It’s always easy to add it back.

Blocks can be anything you need. For instance, you may want to add a subdued quote as part of the composition of your text, or you may prefer to display a giant stylized one. All of these options are available in the inserter.

You can change the amount of columns in your galleries by dragging a slider in the block inspector in the sidebar.

Media Rich

If you combine the new wide and full-wide alignments with galleries, you can create a very media rich layout, very quickly:

Accessibility is important — don’t forget image alt attribute

Sure, the full-wide image can be pretty big. But sometimes the image is worth it.

The above is a gallery with just two images. It’s an easier way to create visually appealing layouts, without having to deal with floats. You can also easily convert the gallery back to individual images again, by using the block switcher.

Any block can opt into these alignments. The embed block has them also, and is responsive out of the box:

You can build any block you like, static or dynamic, decorative or plain. Here’s a pullquote block:

Code is Poetry

The WordPress community

If you want to learn more about how to build additional blocks, or if you are interested in helping with the project, head over to the GitHub repository.

Thanks for testing Gutenberg!



Why Human Computer Interaction plays a big role?

Reading Time: 2 minutesDo you know Kevin Warwick? He’s a professor of computer science, who has willingly turned himself into a guinea pig. The stuff going on around him is really interesting and barrier-breaking.

Humans sense the world in a restricted way, vision being the best of the senses. Humans understand the world in only 3 dimensions and communicate in a very slow, serial fashion called speech. But can this be improved on? Can we use technology to upgrade humans?

Definitely! We are already using tech. There’s actually so much of it that we don’t see it anymore. Washing machines, cars, phones, lawnmowers, satellite TV, hospital equipment, etc. Really the amount of tech is HUGE!

Our life is kind of modern Fordism. We come out from an incubation house (hospital), followed by processes which modify us to be fit to later execute labor functions. And child-bearing. Then at some point our body says “I’m out of here” and we die.

Some want to assign religious and other meaning to our life, but if we’re dead
honest, our mission is to multiply and survive. Of course, there’s a huge number
of interesting side-effects taking place: innovations, love, having fun, building all kinds of things, having culture, etc.

What we can improve on, my guess:

* speed of neuronal activity and thus the effect on cognitive functions
* resilience of the human body
* tolerance for toxins
* the human-computer interaction (HCI)

HCI is essential. This is the whole essence of acceleration.

We could think that people do not need tech, if the body and mind itself is enhanced. But I would think that tech is often cheaper and more practical, at least in the short run.

And if there’s something available now, vs. 10 years from now, we will want to choose the short-term possibility – at least for time being.

Mobile phones were one of the first cybernetic extensions to everybody. People now have whole new ways of communicating. Take IRC, instant messaging, forums, blogs – they’re all forms of communication!


3D-grafiikkaa Linuxilla, osa 2

Reading Time: 3 minutesTänään asennetaan OpenGL- kirjasto C-ohjelmointia varten. Aiempi osa kertoi taustoja 3D-ohjelmoinnista Linuxilla.

Ohjelmointiympäristön palikoiden asentaminen valmistaa kolmanteen osaan. Tänään ei vielä päästä itse koodin äärelle.

3D-grafiikka erityisesti tietokoneella perustuu lähes aina kolmioihin (‘triangles’). Viivan piirtoon on olemassa tunnettu ja vanha Bresenhamin algoritmi. Myös rasterisointiin, eli koordinaattien muuntamisessa lopputulokseksi (pikseleiksi) voidaan käyttää kolmioiden tapauksessa Bresenhamia (hyvä lähde kolmiontäyttöalgoritmeihin, Javalla).

Tuleeko tästä ihka aito pelimoottori?

Ei aivan! 🙂 Tässä on jo kuitenkin tulossa “pelimoottorin” ainekset. Todellisuudessa ohjelmistoarkkitehtuuria kannattaa miettiä toki, mutta blogisarjan tähtäimessä on pieni  demo, jolla päästään jo jyvälle.

GPU, piiri vai kortti? Miksi?

Muista, että GPU:n tärkein hyöty on siis vauhdittaa 3-ulotteisen maailman piirtoa; se ottaa pois ohjelmoijan harteilta paljon sellaista raskasta soutamista (algoritmeja), jotka on jo keksitty tuhanteen kertaan. GPU on siis tietokoneen prosessori, jota kutsutaan usein “grafiikkapiiriksi” tai vanhemman fyysisen muodon perusteella ‘grafiikkakortiksi’. PC-tietokoneisiin, jossa on tilaa fyysisesti, voidaan laittaa kiinni väylään emolevylle lisäkortteja, jotka lisäävät ominaisuuksia ja GPU:n kohdalla koneen grafiikkakykyjä.

GPU on siis elektroniikkaa, joka sisältää rinnakkaisia polkuja: koska kolmiulotteisen grafiikan laskis ennassa lopulta saavutettavan FPS-lukeman taustalla on paljon numeroiden laskemista, grafiikkaprosessori on suunniteltu erittäin laajasti rinnaislaskentaa hyödyntäväksi. Tällöin saadaan kerralla laskettua hyvin samanlaisia matemaattisia asioita nopeasti.

Ennen GPU:ita ohjelmoija itse teki softalla nämä rutiinit. Pikselit laskettiin yksi kerrallaan. Päästiin vaatimattomampaan tulokseen: piti joko alentaa resoluutiota, jolloin laskentaa on vähemmän määrällisesti, tai tyytyä yksinkertaisempien 3D-efektien ja mallien tuottamaan usein huonomman näköiseen lopputulokseen.

Commodore 64 -aikakauden 1MHz :n nopeudella toimivat prosessorit pystyivät tukemaan ihan kohtuullista vektorigrafiikkaa. Keinot ovat monet, sanoi akka kun kissalla pöytää pyyhki! Siis; tuo 1 megahertsi = tuhannesosa 1 GHz:stä. Resursseja ei ollut liikaa, toisaalta Commodoren näyttö oli aina (vain) 320×200 pikseliä eli yhteensä 64000 kpl; vertaa alla 4K-näyttöjen määriin, yli 8 miljoonaa.

Täytyy muistaa että resoluutioiden lisääntyessä on kyse kertolaskusta, joten laskutoimitus suoritetaan jotta voidaan verrata työmääriä eri resoluutioiden kohdalla. Esimerkiksi ns. 4K-näyttö on nimensä mukaisesti 4000 pikseliä. Koska 4K-standardeja on muutamia, voidaan ottaa vertailuksi kaksi yleistä:

  • DCI 4K jossa 4096 x 2160 = 8,8 miljoonaa pikseliä
  • 4K UHD jossa 3840 x 2160 = 8,3 miljoonaa pikseliä

Miten liike (animaatio) saadaan aikaiseksi?

Naiivi idea on piirtää, ja sen jälkeen ennen uuden framen piirtämistä tyhjentää koko ruutu (erase). Eli räpsytellään ruutua, ikäänkuin: ennenkuin piirretään uusi kuva, niin pyyhitään taulusienellä vanha pois juuri ennen uuden piirtoa. Tällä on omat ongelmansa, joihin on myös ratkaisut. GPU hoitaa nämä oikeasti, veikkaisin. Mutta: ei mennä vielä näin pitkälle – näihin palataan myöhemmin tulevissa blogeissa. Keskitytään toistaiseksi tiukasti tuohon kolmioiden piirtelyyn ja ensimmäisen ohjelman aikaansaamiseen.

Älä nysvää – vaan valjasta prosessori töihin!

Meitä, ohjelmoijina, kiinnostaa grafiikkaprosessorin (GPU:n) valjastaminen tekemään operaatiot. GPU osaa laittaa ruudulle 2-ulotteista pikselidataa. GPU tuntee vaikka mitä lisätemppuja. Yksinkertaisimmatkin grafiikkaprosessorit pystyvät tarjoamaan nykypäivänä kaikki ominaisuudet hienojen pelien tekemiseen. Isoimmat erot tulevat lopulta siinä, kuinka suuriresoluutioisen näytön GPU jaksaa pitää pyörimässä esimerkiksi 50, 60 tai 100 framea sekunnissa.

Ennen kuin GPU voi antaa näytönohjaimelle 2-ulotteisen valmiin taideteoksen, se laskee kaikenlaista tarvittavaa: pyörittelee esineiden koordinaatteja kolmiulotteisesti, värjää pintoja, laskee varjojen valoisuuksia, laskee mitkä esineet peittävät toisia esineitä; voi laskea heijastuksia; asettaa tekstuureja kohdilleen pinnoille; ja näin poispäin.

Me ohjastamme prosessoria ainoastaan korkealla tasolla: kerromme..

  • mitä piirretään (objekti-data eli esineet)
  • miten asiat väritetään (valaistus + tekstuurit eli täytenahat)
  • millaisia erikoisefektejä halutaan (sumua? Tulta, savua?) esineiden lisäksi
  • mistä näkövinkkelistä (“kamerasta”) kuvaus tehdään

Kirjastojen asennus

OpenGL asentuu, kunhan tietää minkänimistä pakettia etsiä. (Eli: “kaikki on helppoa, kunhan osaa”. Jep jep)

Monesti ainakin itse hieman turhaudun sen kanssa, että “saman asian tekemiseksi on miljoona tapaa”. Linux-maailmassa tuo edellämainittu vielä korostuu, koska useilla eri distroilla (jakelupaketti) on hieman erilainen käsitys siitä, missä kansioissa asioiden pitäisi olla. Onneksi ollaan jo nykypäivänä kohtuullisen lähellä jonkinlaista standardi-käsitystä.

Linuxin 3 tarpeellista grafiikkaohjelmoinnin pakettia

  1. libGL (on siis openGL-kirjasto)
  2. GLU (OpenGL korkeamman tason funktiot ja rakenteet)
  3. freeGLUT (auttaa tekemään valmiita 3D-ohjelmia)

Asiaa selittää mm. tämä sivu. Lyhyesti sanottuna:

  • libGL toimii rajapintana oikean grafiikkakortin ja ohjelmakoodin välillä (alin taso)
  • GLU

Palatko halusta tietää lisää?

“GL” tulee sanoista Graphics Library. GL on tehokas SGI-yrityksen tekemien työasemien grafiikkastandardi. Silicon Graphics oli pioneeri tietokonegrafiikan alalla; he tekivät niin elokuvien erikoistehosteita kuin arkkitehti- ja suunnittelutoimistojen tehokkaat SGI-työasemat.

Näissä tietokoneissa on vakiona aikaansa nähden (1990-luku) erittäin tehokkaat grafiikkakortit. Ohessa on Silicon Graphicsin perustajan Jim Clarken suunnittelema ns. Geometry Engine -piisiru, suurennettuna.

Mitä seuraavaksi?

Osa 3 tulee tarjoamaan jo toimivan ohjelman.


OpenGL ja Linux – 3D grafiikan alkeet

Reading Time: 2 minutesOpenGL on määritelty kokonaan ns. sinisessä kirjassa (OpenGL 4.5 Blue book). Esimerkkikoodeja ja käytännöllistä apua tarjoaa taas puolestaan Red book. (RedBook -esimerkit OpenGL 3D-koodia)

“Sinisen kirjan” laajuus voi hätkähdyttää. Toisaalta siihen kannattaa suhtautua enemmänkin käsikirjana. Lisäksi tuota isoa sivumäärää selittää se, että myös OpenGL -standardia noudattavien laitteiden valmistajien pitää saada erittäin tarkka kuvaus rajapinnasta. Eli kaikki ei suinkaan kosketa normaali ohjelmoijaa, joka työskentelee rajapinnan “tällä puolen”, käyttäjänä.

3D-grafiikassa peruskysymys on: miten luoda 2-ulotteiseille (“sileälle”) näytölle kuva, joka saa ihmisen ajattelemaan, että hän katselee aitoa kolmiulotteista tilannetta?

Tätä on tahkottu aina 1970-luvulta asti. Tietokonegrafiikka on kulkenut mielenkiintoisen kehityspolun. Alkuun jokainen ohjelmoija teki asiat aivan alusta alkaen itse, käsin ohjelmoimalla. Oli pakko opetella matriisien matematiikkaa (matriisialgebraa) ainakin jollain perustasolla. Tietokoneiden tehot olivat noin 1/1000 nykyisestä, eikä erillistä grafiikan piirtoon erikoistunut tehostinpiiriä ollut vielä olemassa (GPU – graphics processing unit). Asiat olivat siis varsin visaisia.

Toisaalta edelleen, 2018, voi olla hyvä tietää perusteet ihan ruohonjuuritasolta alkaen. Se ei enää tosin ole pakollista. Voit aivan hyvin alkaa tehdä pelejä tai muuta 3D-grafiikkaa vaativia ohjelmia ilman raskasta teoriaa koodauksesta.

Pää pinnalla – esimerkkejä valmiina

Kuten sanoin, erityisesti 3-ulotteisen grafiikan ohjelmoinnissa voi tulla joskus liikaa konsepteja vastaan. Hahmotan itse tietokonegrafiikan siten, että on olemassa hyvin yksinkertainen geometrian säännöstö – se, miten tietokone simuloi meidän ihmisten kokemaa valon kulkua (ja lopulta aivojen tulkintaa siitä). Tietokone pyritään saamaan  piirtämään sellaisia muotoja (pikseleitä käyttäen) jotka saavat tilan illuusion aikaiseksi.

Loput on “kuorrutusta” eli jos käytettäisiin ohjelmoinnista ja tietojenkäsittelytieteestä tuttua termiä, niin se olisi “sugaring” tai syntactic sugar. Ohjelmoinnissa on myös samoin hyvin yksinkertainen ydin: aritmetiikka ja bittien siirtely paikasta toiseen. Kaikki muu on lisättyä sokeria.

Toisaalta, jos käy niin että tuntuu tulevan liikaa konsepteja vastaan, tällöin voit hyödyntää aivojen luovaa tilaa – esimerkit yllä saattavat antaa suoraan oivalluksia, jos ajat ne koneellasi. Älä tartu vielä kovin paljoa lähdekoodiin, jos siltä tuntuu.

Miten esimerkkiohjelmista voi oppia?

Käännä ohjelmakoodi yksi kerrallaan; sen jälkeen aja ohjelma, katso mitä tapahtuu — ja opiskele termejä.

Lisään kunnollisen sanaston pian tänne. Joskus englanninkieliset erikoistermit karkottavat tehokkaasti, koska ne saattavat olla avainasemassa tietyn konseptin oppimisessa. Erityisesti kun mennään grafiikassa jälkikäsittelijöiden (“shaders”) eli erilaisten efektien pariin, tulee muutamia uusia termejä.

Redbook -ohjelmaesimerkkien kääntäminen

RedBook tarjoaa hyvin yksinkertaisia C-kielisiä lähdekoodeja OpenGL:stä. Ne kannattaa kääntää ja ajaa. Koska jokainen esimerkki menee mekaanisesti samanlaisella kääntökomennolla, senkin voi skriptata halutessaan.

Otetaan Redbook -arkisto levylle

Otetaan kerralla koko paketti RedBookin lähdekoodeista, ja puretaan se:

wget https://www.opengl.org/archives/resources/code/samples/redbook.zip
unzip redbook.zip

Nyt esimerkit ovat juuri luodussa kansiossa “redbook”, joten mennään tutkimaan:

cd redbook

Red Bookissa on 56 erilaista C-kielistä listausta. Jokainen kääntyy samalla tavalla.

Alla pieni osa ohjelmista:

$ ls -la

Otetaan ensimmäisenä lyhyin listaus (tai oikeastaan, pienin tiedosto).

gcc cube.c -o cube -lGL -lGLU -lglut

gcc on aika hiljainen, joten jos kaikki meni ok, niin näet vain shellisi kehotteen. gcc on tehnyt ‘cube’ nimisen ajettavan ohjelman (käännöstuotteen nimen voi antaa -o vivun avulla, kuten yllä)

Tuloksena siis ajettava ohjelma ‘cube’. Käynnistetään:



mobile network · mobiles · Uncategorized

Pax mobility – 5G?

Reading Time: 2 minutesTechnology doesn’t go very linearly forward.

There are many things we await with eager expectations. One of these is the 5G network.

I’ve been keen to observe and stick my spoon in to the “cutting edge” for 30+ years: I was lucky enough, you could say, to have parents that thought it would be wise to get the guy familiarized with computers. Oh boy, I did.

Let’s recap: What is 5G network?

5G is the fifth generation of a mobile network. It describes with one term the set of technologies that will create faster and better mobile network; a data and voice network that can serve the images, text, voice, and all forms of media for phones, tablets, and other 5G-enabled devices.

5G mobile network technology kind of falls into what I perceive as:

  • very lucrative, promising technology that could once again revigorate the UX of mobile usage
  • a massive investment world-wide
  • interesting as a technological innovation in its own right; yet..
  • ..an innovation that isn’t that revolutionary, rather evolutionary.

On researching the 5G network I found that for the average joe, it’s rather elusive and somewhat elongated transition that hasn’t perhaps clarified itself as strongly as previous evolutions in mobile technology.

5G in short will be done by

  • increasing the density – ie. number of mobile base stations; note: not necessarily the large perceivable “masts”, but rather smaller tranceivers (radio transmitter / receivers) that have 5G-compliant hardware and a software stack
  • implementing a compatible counterpart to the mobile devices (phones and tablets)

Second observation (as of 11/2018): it’s not yet there.

Sure, there’s a great momentum, and 5G will be implemented. But right now, going around to a cellular shop, you can’t ask for a 5G phone. Even if you’d get one, there would simply be no 5G networks to utilize!

I visited 2 shops in October 2018, and asked for the 5G handset availability and close future prospects. These were quite nil. In the words of a sales person, “I’d not yet be worried at the 5G at all as a criteria for purchasing a phone.”

Why I expect a lot of positive influence from 5G?

If you come to think of it, “mobile” practically has been b-l-o-a-t-i-n-g. Even though the hardware has become better, there’s a sense of diminishing returns. Did I get the information I was looking for? Yep. By waiting at least 1, perhaps sometimes 5-10 seconds. That’s seconds. Dude. We were supposed to have lightning fast stuff by the year 2020.

Imagine a 1970s scifi movie, where there’s an intelligent robot talking to the main characters. The protagonist asks the robot for data. Robot waits….. waits….. waits…. waits… seconds pass by. One… two… three… four… rolls some kind of graphic in front of the protagonist so that she doesn’t get angry with waiting. Six seconds… seven.. Finally, the robot utters an answer. Impressive?

No. What went wrong?

It’s not actually that simple. Yet again, it is. No rocket science. Let’s get back to some of culprits and the future of 5G in the second part!