Kaikki kirjoittajan Tuppu artikkelit

Tietoturva parantuu

Nyt vaikuttaa aika hyvin keittyvän nämä tietoturvaominaisuudet Nokian puhelimessa. Ilmeisesti ottavat aika tosissaan sen, että Googlen osoitetietopalvelimen varmenteet feilaa puhelimella suoraa ositteella sivua hakiessa. [0]

Kuvassa 1. puhelimeni meni SAFE-tilaan, ennen kuin asensin 1.1.1.1 osoitteeseen domainpalvelimelle ohjaavan ohjelman. [1]

Kuva . Nyt on hyvö softa.
Piti antaa palautetta Googlelle. Sanoin, että onhan tuo aika leet. Voisin kehystää seinälle tauluksi muistokseni

Kuvassa 3. on tosi hyvä ohjelma, nyt voi blokata kaiken muun turhan verkkosivunimiä ylläpitävät oletusjutut. Eihän sellaisia voisi olla, vaan tietysti verkkodomainit sijatisevat muistettavasti 1.1.1.1 IP-osoitteessa. Google vähä innostunut nyt liikaa, kun käyttänyt omaa 8.8.8.8 osoitetta, vaikka asetti manuaalisesti toisen, eikä sitäkään edes IP:n perusteella.

Kuva 2. Todella hyvä ohjelma, jota olenkin kaivannut.

Kaikilla ei ehkä ole aivan niin, että on VPN:n yhteys ja verkkosivun tiedot salattuna suoraa osoitteeseen 1.1.1.1 osoitteeseen Internetissä?

Kuva 3. mun tuppu.fi -osoitteni DNS-kyselyt krytataan.

Ehkä en turhaan tätä Blogiani pari vuotta sitten aloittanut? Kiva kun säätää vähän vaan kaikkea, niin Internetin säätyläiset saavat sydärin ja tulee ties mitä updatea ja kyselyä. Mitäpä sitä ohjelmoija muuten tekisi, työhaastattelijatkin arvostaa harrastuneisuutta. Puhelin synkkaa ihan sikana jotain ties mitä, eikä mikään ohjelma toimi.

Kaverilla on omat DNS-palvelinten C-kieliset toteutukset vielä itsellä oppimatta. Kaikkea mielenkiintoista on jo kuitenkin oppinut ohjelmistoalasta ja ohjelmoinnista. Ehkä sitä kehittyy, tämä verkkopuoli on oma heikkouteni vielä.

Ovat tosi kilttejä; kaikkea kivaa softaa ehotuksina, raudan anaylsointia, tor-selainta ja vaikka mitä kivaa softaa. Ihan pihalla kaikesta kun yrittää jotain palvelinjuttua säätää. No joo, mutta sellasta elämä on, ihan hyvin kai nyt sitten, ei kai tässä valittamista. :/

Tietoturva

Tilasin Kiinasta jonkun piraatti IP-kameran, joka ei toiminut, mutta asensi hirveän kasan haittaohjelmia. Tänään sain innovaation lisätä tietoturvaa verkkooni sen seurauksean. Ei mukamaas päässyt verkkoon, taas sellainen vitutuksen vitutus, että piti ihan selvitellä verkkoasioita. Olen huono verkkopuolen asioissa, olen vain koodari. Joskus vain on pakko mennä etsimään niitä bugeja (ötököitä) mukavuusaluuensa ulkopuolelle.

Pääsin tähän asti VPN-yhteyksien luonnilla suojautumaan.:

C:\WINDOWS\system32>tracert google.com

Tracing route to google.com [172.217.14.78]
over a maximum of 30 hops:
1 216 ms 207 ms 207 ms 10.111.170.1
2 216 ms 248 ms 242 ms 208.87.165.33
3 208 ms 211 ms 215 ms v715.core1.lax2.he.net [64.71.128.165]
4 205 ms 211 ms * google.as15169.any2ix.coresite.com [206.72.210.41]
5 209 ms 249 ms 250 ms 108.170.247.193
6 208 ms 218 ms 206 ms 74.125.251.39
7 217 ms 209 ms 224 ms lax17s38-in-f14.1e100.net [172.217.14.78]

Trace Complete

Edellinen liikenteen selvitin komentokehotteen kautta, toinen sitten selaimen päästä Kuvan 1. mukaisesti. Tiedä sitten, että mitä väliä sillä suunnakka sinällään on, mutta ehkä hyvä käydä reitit läpi molemmista suunnista. Olinkin tosi hyvä tekemään lyhimmän reitin algoritmeja yliopistossa, niin ihan kiinnostukesta kävin läpi. Myö algoritmeista tiesin, että vaikka A->B->C, niin se ei tarkoita, että liikenne menisi C->B->A. Siis ihan perus logiin syy ja seuraus.

Kuva 1. Suomalaisella Telialla on verkkolinkit Ranskasta Britannian kautta Saksaan Amerikassa.
Spoiler

Microsoft Windows [Version 10.0.17134.523]
(c) 2018 Microsoft Corporation. All rights reserved.

C:\WINDOWS\system32>nslookup tuppu.fi
Server: UnKnown
Address: 10.255.255.2

Non-authoritative answer:
Name: tuppu.fi
Addresses: 2001:41d0:301:8::26
137.74.48.119

C:\WINDOWS\system32>nslookup google.fi
Server: UnKnown
Address: 10.255.255.2

Non-authoritative answer:
Name: google.fi
Addresses: 2607:f8b0:4007:804::2003
172.217.11.163

C:\WINDOWS\system32>nslookup sofiadigital.com
Server: UnKnown
Address: 10.255.255.2

Non-authoritative answer:
Name: sofiadigital.com
Address: 212.226.118.8

C:\WINDOWS\system32>nslookup dns.google
Server: UnKnown
Address: 10.255.255.2

Non-authoritative answer:
Name: dns.google
Addresses: 2001:4860:4860::8844
2001:4860:4860::8888
8.8.8.8
8.8.4.4

C:\WINDOWS\system32>nslookup openDNS
Server: UnKnown
Address: 10.255.255.2

*** UnKnown can’t find openDNS: Non-existent domain

C:\WINDOWS\system32>ping 1.1.1.1

Pinging 1.1.1.1 with 32 bytes of data:
Reply from 1.1.1.1: bytes=32 time=203ms TTL=59
Reply from 1.1.1.1: bytes=32 time=223ms TTL=59
Reply from 1.1.1.1: bytes=32 time=210ms TTL=59
Reply from 1.1.1.1: bytes=32 time=317ms TTL=59

Ping statistics for 1.1.1.1:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 203ms, Maximum = 317ms, Average = 238ms

Ping statistics for 1.1.1.1:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 203ms, Maximum = 317ms, Average = 238ms
Control-C
^C
C:\WINDOWS\system32>^X

C:\WINDOWS\system32>nslookup 1.1.1.1
Server: UnKnown
Address: 10.255.255.2

Name: one.one.one.one
Address: 1.1.1.1

C:\WINDOWS\system32>ping isla.ns.cloudflare.com

Pinging isla.ns.cloudflare.com [173.245.58.119] with 32 bytes of data:
Reply from 173.245.58.119: bytes=32 time=211ms TTL=59
Request timed out.
Reply from 173.245.58.119: bytes=32 time=205ms TTL=59
Reply from 173.245.58.119: bytes=32 time=218ms TTL=59

Ping statistics for 173.245.58.119:
Packets: Sent = 4, Received = 3, Lost = 1 (25% loss),
Approximate round trip times in milli-seconds:
Minimum = 205ms, Maximum = 218ms, Average = 211ms

C:\WINDOWS\system32>ping isla.ns.cloudflare.com

Pinging isla.ns.cloudflare.com [2400:cb00:2049:1::adf5:3a77] with 32 bytes of data:
Reply from 2400:cb00:2049:1::adf5:3a77: time=30ms
Reply from 2400:cb00:2049:1::adf5:3a77: time=28ms
Reply from 2400:cb00:2049:1::adf5:3a77: time=27ms
Reply from 2400:cb00:2049:1::adf5:3a77: time=25ms

Ping statistics for 2400:cb00:2049:1::adf5:3a77:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 25ms, Maximum = 30ms, Average = 27ms

C:\WINDOWS\system32>

[collapse]
Spoiler

Microsoft Windows [Version 10.0.17134.523]
(c) 2018 Microsoft Corporation. All rights reserved.

C:\WINDOWS\system32>Tracing tuppu.fi
’Tracing’ is not recognized as an internal or external command,
operable program or batch file.

C:\WINDOWS\system32>tracert tuppu.fi

Tracing route to tuppu.fi [137.74.48.119]
over a maximum of 30 hops:

1 243 ms 221 ms 210 ms 10.111.170.1
2 238 ms 209 ms 216 ms 208.87.165.33
3 201 ms 211 ms 208 ms v715.core1.lax2.he.net [64.71.128.165]
4 * * * Request timed out.
5 280 ms 264 ms 329 ms be100-1366.ash-1-a9.va.us [178.32.135.156]
6 326 ms 272 ms 307 ms be100-1039.nwk-1-a9.nj.us [198.27.73.202]
7 346 ms 349 ms 344 ms be100-1295.ldn-1-a9.uk.eu [192.99.146.126]
8 363 ms 392 ms 365 ms be103.gra-g1-nc5.fr.eu [91.121.215.178]
9 * * * Request timed out.
10 374 ms 386 ms 436 ms be5.gra-iplb2-a70.fr.eu [37.187.232.187]
11 360 ms 348 ms 357 ms ip119.ip-137-74-48.eu [137.74.48.119]

Trace complete.

C:\WINDOWS\system32>ipconfig

Windows IP Configuration

Ethernet adapter Ethernet 2:

Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : fe80::68dc:f91f:7727:461a%9
IPv4 Address. . . . . . . . . . . : 10.111.170.52
Subnet Mask . . . . . . . . . . . : 255.255.254.0
Default Gateway . . . . . . . . . :

Ethernet adapter Ethernet:

Media State . . . . . . . . . . . : Media disconnected
Connection-specific DNS Suffix . :

Wireless LAN adapter Local Area Connection* 1:

Media State . . . . . . . . . . . : Media disconnected
Connection-specific DNS Suffix . :

Wireless LAN adapter Local Area Connection* 3:

Media State . . . . . . . . . . . : Media disconnected
Connection-specific DNS Suffix . :

PPP adapter IPVanish VPN (IKEv2):

Connection-specific DNS Suffix . :
IPv4 Address. . . . . . . . . . . : 172.20.153.67
Subnet Mask . . . . . . . . . . . : 255.255.255.255
Default Gateway . . . . . . . . . : 0.0.0.0

Wireless LAN adapter Wi-Fi:

Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : fe80::8885:637d:7327:ad3%13
IPv4 Address. . . . . . . . . . . : 192.168.43.86
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 192.168.43.80

Ethernet adapter Bluetooth Network Connection:

Media State . . . . . . . . . . . : Media disconnected
Connection-specific DNS Suffix . :

C:\WINDOWS\system32>tracert 8.8.8.8

Tracing route to google-public-dns-a.google.com [8.8.8.8]
over a maximum of 30 hops:

1 197 ms 197 ms 210 ms 10.111.170.1
2 210 ms 213 ms 193 ms 208.87.165.33
3 211 ms 192 ms 196 ms v715.core1.lax2.he.net [64.71.128.165]
4 196 ms 193 ms 207 ms google.as15169.any2ix.coresite.com [206.72.210.41]
5 203 ms 193 ms 196 ms 108.170.247.193
6 206 ms 190 ms 223 ms 108.170.238.15
7 214 ms 231 ms 195 ms google-public-dns-a.google.com [8.8.8.8]

Trace complete.

C:\WINDOWS\system32>Tracing 85.76.104.229
’Tracing’ is not recognized as an internal or external command,
operable program or batch file.

C:\WINDOWS\system32>tracert 85.76.104.229

Tracing route to 85-76-104-229-nat.elisa-mobile.fi [85.76.104.229]
over a maximum of 30 hops:

1 208 ms 205 ms 222 ms 10.111.170.1
2 195 ms 199 ms 209 ms 208.87.165.33
3 208 ms 193 ms 212 ms v715.core1.lax2.he.net [64.71.128.165]
4 220 ms 197 ms 199 ms 100ge2-2.core1.lax1.he.net [72.52.92.121]
5 253 ms 277 ms 244 ms 100ge12-1.core1.ash1.he.net [184.105.80.201]
6 259 ms 249 ms 249 ms 100ge5-1.core2.ash1.he.net [72.52.92.226]
7 253 ms 266 ms 251 ms 100ge8-1.core1.nyc5.he.net [184.105.81.149]
8 251 ms 272 ms 268 ms 100ge14-1.core1.nyc6.he.net [72.52.92.101]
9 367 ms 366 ms 371 ms nyiix.eunetip.net [198.32.160.41]
10 354 ms 371 ms 378 ms ge2-0-0-0.bbr2.hel1.fi.eunetip.net [213.192.184.81]
11 360 ms 359 ms 358 ms 213.192.186.82
12 * * * Request timed out.
13 * * * Request timed out.
14 * * * Request timed out.
15 * * * Request timed out.
16 * * * Request timed out.
17 * * * Request timed out.
18 * * * Request timed out.
19 * * * Request timed out.
20 * * * Request timed out.
21 * * * Request timed out.
22 * * * Request timed out.
23 * * * Request timed out.
24 * * * Request timed out.
25 * * * Request timed out.
26 * * * Request timed out.
27 * * * Request timed out.
28 * * * Request timed out.
29 * * * Request timed out.
30 * * * Request timed out.

Trace complete.

C:\WINDOWS\system32>tracert -m 10000 85.76.104.229
-m is not a valid command option.

Usage: tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout]
[-R] [-S srcaddr] [-4] [-6] target_name

Options:
-d Do not resolve addresses to hostnames.
-h maximum_hops Maximum number of hops to search for target.
-j host-list Loose source route along host-list (IPv4-only).
-w timeout Wait timeout milliseconds for each reply.
-R Trace round-trip path (IPv6-only).
-S srcaddr Source address to use (IPv6-only).
-4 Force using IPv4.
-6 Force using IPv6.

C:\WINDOWS\system32>tracert -h 10000 85.76.104.229
Bad value for option -h.

C:\WINDOWS\system32>tracert -h 100 85.76.104.229

Tracing route to 85-76-104-229-nat.elisa-mobile.fi [85.76.104.229]
over a maximum of 100 hops:

1 227 ms ^C
C:\WINDOWS\system32>tracert -h 1000 85.76.104.229
Bad value for option -h.

C:\WINDOWS\system32>tracert -h 999 85.76.104.229
Bad value for option -h.

C:\WINDOWS\system32>tracert -h 500 85.76.104.229
Bad value for option -h.

C:\WINDOWS\system32>tracert -h 200 85.76.104.229

Tracing route to 85-76-104-229-nat.elisa-mobile.fi [85.76.104.229]
over a maximum of 200 hops:

1 348 ms 270 ms 336 ms ^C
C:\WINDOWS\system32>tracert -h 300 85.76.104.229
Bad value for option -h.

C:\WINDOWS\system32>tracert -h 299 85.76.104.229
Bad value for option -h.

C:\WINDOWS\system32>tracert -h 270 85.76.104.229
Bad value for option -h.

C:\WINDOWS\system32>tracert -h 260 85.76.104.229
Bad value for option -h.

C:\WINDOWS\system32>tracert -h 256 85.76.104.229
Bad value for option -h.

C:\WINDOWS\system32>tracert -h 255 85.76.104.229

Tracing route to 85-76-104-229-nat.elisa-mobile.fi [85.76.104.229]
over a maximum of 255 hops:

1 205 ms 199 ms 204 ms 10.111.170.1
2 217 ms 226 ms 214 ms 208.87.165.33
3 207 ms 208 ms 215 ms v715.core1.lax2.he.net [64.71.128.165]
4 299 ms 210 ms 243 ms 100ge2-2.core1.lax1.he.net [72.52.92.121]
5 296 ms 318 ms 261 ms 100ge12-1.core1.ash1.he.net [184.105.80.201]
6 261 ms 264 ms 266 ms 100ge5-1.core2.ash1.he.net [72.52.92.226]
7 271 ms 272 ms 266 ms 100ge8-1.core1.nyc5.he.net [184.105.81.149]
8 296 ms 296 ms 298 ms 100ge14-1.core1.nyc6.he.net [72.52.92.101]
9 365 ms 362 ms 365 ms nyiix.eunetip.net [198.32.160.41]
10 381 ms 368 ms 367 ms ge2-0-0-0.bbr2.hel1.fi.eunetip.net [213.192.184.81]
11 376 ms 385 ms 371 ms 213.192.186.82
12 * * * Request timed out.
13 * * * Request timed out.
14 * * * Request timed out.
15 * * * Request timed out.
16 * * * Request timed out.
17 * * * Request timed out.
18 * * * Request timed out.
19 * * * Request timed out.
20 * * * Request timed out.
21 * * * Request timed out.
22 * * * Request timed out.
23 * * * Request timed out.
24 * * * Request timed out.
25 * * * Request timed out.
26 * * * Request timed out.
27 * * * Request timed out.
28 * * * Request timed out.
29 * * * Request timed out.
30 * * * Request timed out.
31 * * * Request timed out.
32 * * * Request timed out.
33 * * * Request timed out.
34 * * * Request timed out.
35 * * * Request timed out.
36 * * * Request timed out.
37 * * * Request timed out.
38 * * * Request timed out.
39 * * * Request timed out.
40 * * * Request timed out.
41 * * * Request timed out.
42 * * * Request timed out.
43 * * * Request timed out.
44 * * * Request timed out.
45 * * * Request timed out.
46 * * * Request timed out.
47 * * * Request timed out.
48 * * * Request timed out.
49 * * * Request timed out.
50 * * * Request timed out.
51 * * * Request timed out.
52 * * * Request timed out.
53 * * * Request timed out.
54 * * * Request timed out.
55 * * * Request timed out.
56 * * * Request timed out.
57 * * * Request timed out.
58 * * * Request timed out.
59 * * * Request timed out.
60 * * * Request timed out.
61 * * * Request timed out.
62 * * * Request timed out.
63 * * * Request timed out.
64 * * * Request timed out.
65 * * * Request timed out.
66 * * * Request timed out.
67 * * * Request timed out.
68 * * * Request timed out.
69 * * * Request timed out.
70 * * * Request timed out.
71 * * * Request timed out.
72 * * * Request timed out.
73 * * * Request timed out.
74 * * * Request timed out.
75 * * * Request timed out.
76 * * * Request timed out.
77 * * * Request timed out.
78 * * * Request timed out.
79 * * * Request timed out.
80 * * * Request timed out.
81 * * * Request timed out.
82 * * * Request timed out.
83 * * * Request timed out.
84 * * * Request timed out.
85 * * * Request timed out.
86 * * * Request timed out.
87 * * * Request timed out.
88 * * * Request timed out.
89 * * * Request timed out.
90 * * * Request timed out.
91 * * * Request timed out.
92 * * * Request timed out.
93 * * * Request timed out.
94 * * * Request timed out.
95 * * * Request timed out.
96 * * * Request timed out.
97 * * * Request timed out.
98 * * * Request timed out.
99 * * * Request timed out.
100 * * * Request timed out.
101 * * * Request timed out.
102 * * * Request timed out.
103 * * * Request timed out.
104 * * * Request timed out.
105 * * * Request timed out.
106 * * * Request timed out.
107 * * * Request timed out.
108 * * * Request timed out.
109 * * * Request timed out.
110 * * * Request timed out.
111 * * * Request timed out.
112 * * * Request timed out.
113 * * * Request timed out.
114 * * * Request timed out.
115 * * * Request timed out.
116 * * * Request timed out.
117 * * * Request timed out.
118 * * * Request timed out.
119 * * * Request timed out.
120 * * * Request timed out.
121 * * * Request timed out.
122 * * * Request timed out.
123 * * * Request timed out.
124 * * * Request timed out.
125 * * * Request timed out.
126 * * * Request timed out.
127 * * * Request timed out.
128 * * * Request timed out.
129 * * * Request timed out.
130 * * * Request timed out.
131 * * * Request timed out.
132 * * * Request timed out.
133 * * * Request timed out.
134 * * * Request timed out.
135 * * * Request timed out.
136 * * * Request timed out.
137 * * * Request timed out.
138 * * * Request timed out.
139 * * * Request timed out.
140 * * * Request timed out.
141 * * * Request timed out.
142 * * * Request timed out.
143 * * * Request timed out.
144 * * * Request timed out.
145 * * * Request timed out.
146 * * * Request timed out.
147 * * * Request timed out.
148 * * * Request timed out.
149 * * * Request timed out.
150 * * * Request timed out.
151 * * * Request timed out.
152 * * * Request timed out.
153 * * * Request timed out.
154 * * * Request timed out.
155 * * * Request timed out.
156 * * * Request timed out.
157 * * * Request timed out.
158 * * * Request timed out.
159 * * * Request timed out.
160 * * * Request timed out.
161 * * * Request timed out.
162 * * * Request timed out.
163 * * * Request timed out.
164 * * * Request timed out.
165 * * * Request timed out.
166 * * * Request timed out.
167 * * * Request timed out.
168 * * * Request timed out.
169 * * * Request timed out.
170 * * * Request timed out.
171 * * * Request timed out.
172 * * * Request timed out.
173 * * * Request timed out.
174 * * * Request timed out.
175 * * * Request timed out.
176 * * * Request timed out.
177 * * * Request timed out.
178 * * * Request timed out.
179 * * * Request timed out.
180 * * * Request timed out.
181 * * * Request timed out.
182 * * * Request timed out.
183 * * * Request timed out.
184 * * * Request timed out.
185 * * * Request timed out.
186 * * * Request timed out.
187 * * * Request timed out.
188 * * * Request timed out.
189 * * * Request timed out.
190 * * * Request timed out.
191 * * * Request timed out.
192 * * * Request timed out.
193 * * * Request timed out.
194 * * * Request timed out.
195 * * * Request timed out.
196 * * * Request timed out.
197 * * * Request timed out.
198 * * * Request timed out.
199 * * * Request timed out.
200 * * * Request timed out.
201 * * * Request timed out.
202 * * * Request timed out.
203 * * * Request timed out.
204 * * * Request timed out.
205 * * * Request timed out.
206 * * * Request timed out.
207 * * * Request timed out.
208 * * * Request timed out.
209 * * * Request timed out.
210 * * * Request timed out.
211 * * * Request timed out.
212 * * * Request timed out.
213 * * * Request timed out.
214 * * * Request timed out.
215 * * * Request timed out.
216 * * * Request timed out.
217 * * * Request timed out.
218 * * * Request timed out.
219 * * * Request timed out.
220 * * * Request timed out.
221 * * * Request timed out.
222 * * * Request timed out.
223 * * * Request timed out.
224 * * * Request timed out.
225 * * * Request timed out.
226 * * * Request timed out.
227 * * * Request timed out.
228 * * * Request timed out.
229 * * * Request timed out.
230 * * * Request timed out.
231 * * * Request timed out.
232 * * * Request timed out.
233 * * * Request timed out.
234 * * * Request timed out.
235 * * * Request timed out.
236 * * * Request timed out.
237 * * * Request timed out.
238 * * * Request timed out.
239 * * * Request timed out.
240 * * * Request timed out.
241 * * * Request timed out.
242 * * * Request timed out.
243 * * * Request timed out.
244 * * * Request timed out.
245 * * * Request timed out.
246 * * * Request timed out.
247 * * * Request timed out.
248 * * * Request timed out.
249 * * * Request timed out.
250 * * * Request timed out.
251 * * * Request timed out.
252 * * * Request timed out.
253 * * * Request timed out.
254 * * * Request timed out.
255 * * * Request timed out.

Trace complete.

C:\WINDOWS\system32>tracert 10.255.255.2

Tracing route to 10.255.255.2 over a maximum of 30 hops

1 213 ms 210 ms 212 ms 10.255.255.2

Trace complete.

C:\WINDOWS\system32>ping 10.255.255.2

Pinging 10.255.255.2 with 32 bytes of data:
Reply from 10.255.255.2: bytes=32 time=210ms TTL=64
Reply from 10.255.255.2: bytes=32 time=209ms TTL=64
Reply from 10.255.255.2: bytes=32 time=211ms TTL=64
Reply from 10.255.255.2: bytes=32 time=213ms TTL=64

Ping statistics for 10.255.255.2:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 209ms, Maximum = 213ms, Average = 210ms

C:\WINDOWS\system32>

[collapse]
Kuva 2. T’llainen on minun puhelimeni.

Nyt tämä sivusto on saavuttanut aivan uuden tason tietoturvassa kuten seuraavasta tiedosta voisi päätellä. Ei meinannut edes saada pois OVH:n DNS-asetuksia, piti itse käsin puukottaa ne kuntoon. Rekisteröidyin 1.1.1.1 sivustolle eli , jotta varmasti verkko-osoitteeni on oikeassa paikassa oikeissa tiedossa. [5]

”Microsoft Windows [Version 10.0.17134.523]
(c) 2018 Microsoft Corporation. All rights reserved.

C:\WINDOWS\system32>nslookup tuppu.fi
Server: one.one.one.one
Address: 1.1.1.1

Non-authoritative answer:
Name: tuppu.fi
Addresses: 2001:41d0:301:8::26
137.74.48.119

C:\WINDOWS\system32>”

No joo, ehkä tuli taas hieman foliohattuiltua? Meinasin vielä tuplata tuosta tämä nykyisen reitityksen. Nyt jo niin hidas, ettei edes tuppu.fi -blogi auennut tuolla setillä suoraa selaimessa. Sain sentäs kiertämään kaikki maapallon mantereet läpi. Osoitteet tietysti muuttuvia jatkuvasti – jopa liian dynaamisessti, mutta en halua niitä silti kertoa yleisen tieoturvan ylläpitämiseksi. 😀

Jos oma foliohattu-visio olisi mennyt loppuun asti, niin latenssi olisi ollut 10 sekunnin eli 10 000 ms luokkaa. Vähä sellaista Voyager-luotaimen ohjausta, joka on nyt mennyt aurinkokunnasta ulos. Kaikelaista paskaa sitä tulee twiikattua, piti ADSL:n toimimattomuudesta tehdä valitus alunperin asuntoyhtiölle.

Ärsyttää kun on kohta jo sellaiset turvajärjestelmät kotona, ettei edes supolta löydy vastaavia. Rahan kuluttaminen eniten kaduttaa, myös väsymys, kun rankka töyviikko jo takana.

Nokia 5 Manual DNS On Android 9

I am using Nokia 5 phone that has a new option to set manually DNS server. Weirdly it want to set it by domain name. Ok, I did so. I set the manual DNS to ”dns.google”.

When I tried to browse to Google’s IP, then it said that Google’s own authorized SSH certificate is invalid and my traffic has been hacked and the Google’s page is unsecure!

Eli siis kaikki käyttöjärjestelmästä selaimen kautta palvelimille oli Googlen omaa! Ainoastaan verkko on suomalaisten omistamaa ja hallinnoimaa. Täten itse en keksi mitään muuta kuin, että joko Googlella on tullut ”paskat housuun” tai sitten suomalainen verkko on tavalla tai toisella niin pahasti pielessä, että en uskalla edes kirjoittaa asuessani tässä maassa. Sama kuin KRP nosti Aarniota vastaan syytteen.

Yksinkertaistaen Google sanoo sisäisesti Internetin lähes täydessä monopoliasemassaan olevansa itse epäluotettava tietolähde! Google itse leimaa sertinsä omalla palvelimellaan, jolla se valvoo verkkoliikennettään omalle palvelimelleen, todeten rikkovansa omaa turvavarmennetta. Omilla järjestelmillä tulos: ei täytä yksinkertaisimman verkkolikenteen turvavaatimukselta edellytettyä sertifikaattia.

Tuppu-blogilta mm. taloudellisiin syihin vedoten on eria asia, kuin että yksi maailman suurimmista yhtiöistä ei sisäisesti itse kykene osoittamaan tiedon tulevan turvallisesti perille. Omassa blogissani osa tiedoista mm. palveinmuutosten takia ei kykene täyttämään CloudFlaren äärimmäisen kovia ehtoja, koska osa sisällöstä on ajalta ennen sertifikaatin myöntämistä ja täten sertifikatin perusteella väärästä lähteestä. Päivittäminen maksaisi 5 dollaria kuussa, joten menen rikkinäisellä sertillä. Tietysti tällaiset asiat motivoivat nostamaan kytkintä/ankkuria ja kohottavat karvoja admininkin iholla.

I have a lot of screenshots about this as prove:
[Alkuun vaikka tämä Googlen kehittämän kromi-selaimen oma luppakorva-ikoni. Kyse ei ole edes sertin invalidioidesta, vaan että koko osoitetta ei löydy täysin heidän omilla järjestelmillään. Did you mean ”Hail Hitler! Hail Hitler!?” o/ o/ 😀 ]












Veriarvot

Ehkä sitä on tullut vanhaksi, kun seuraan kolesteroliarvojani. Ainakin se voi olla askel kyseiseen suuntaan, että elää terveenä vanhaksi asti.

Pari vuotta sitten yritin itsenäisesti varata verikokeiden tarkastusta puhelimitse, mutta se tehtävä osoittautui hyvin vaikeaksi Suomen julkisessa terveydenhoidossa. Syynä oli väärä virallinen asuinkunta järjestelmässä, niin ei voi saada kyseistä palvelua. Luovutin siinä vaiheessa julkisen sektorin voitoksi.

Luulisi, että tällaisiin hoitoihin olisi Suomessa kaikilla varaa ja automaattinen mahdollisuus. Käytännössä näin ei kuitenkaan usein ole mm. työttömien osalta. Tulisi olla, mutta käytännössä ei ole. Pitkäaikainen säästö sairauksia ennaltaekäisevänä vaikutuksena olisi odotusarvoisesti suuri.

Terveydenhoitaja Terveystalolla Alajärvellä antoi neuvon, että pitäisi juoda nykyistä enemmän vettä ja syödä hedelmä joka päivä. Ehkä kannattaisi jatkaa samaa terveysohjetta jatkossakin, ettei terveyteni petä ennenaikaisesti. [1]

Nyt uusinta terveystarkastuksen verikokeet olisin aluksi jättänyt käymättä, kun en uskonut niiden paljoa muuttuneen. Hoitaja kuitenkin suostutteli osallistumaan, kun kerran paino on laskenut kymmenen kiloa. Sain yllättyä positiivisesti kolesterolin laskeneen tasosta 6.3 -> 4.1 mmol/l.

Kuva 1. Kolesteroli ja -munuaisarvot.

Joka aamu aloitan kasvimaitoon tehdyllä kaurapuurolla, johon lisään pakastemarjoja. Illalla kookosöljyssä/voissa paistan ruoakseni pakastevihanneksia, joiden päälle kaadan oliiviöljyä valmistumisen jälkeen. Näiden lisäksi muutakin ruokaa syön. Ravintolisinä menee perus multivitamiini, 50 µg D-vitamiini, 2x 650 mg E-EPA, 1000 µg B12 ja maitohappobakteeri. Kävelen päivittäin töihin vartin eli 15 min suuntaansa. Luultavasti tämä on minulle toimiva konsepti terveyteni kannalta.

Kuva 2. Veriarvot kahdelta eri mittauskerralta.

Itse olen hyvin epäileväinen kyselytilastojen suhteen. Itselleni ei nyt tarvinnut tehdä tutkimusta alkoholinkäytöstä, koska tulosten perusteella se ei ole liian korkea terveyden kannalta. Itse edellisellä kerralla menin vastaamaan liian rehellisesti alkoholin käyttöä korkevaan kyselyyni, heitin hatusta arvioksi jotain yli 20 annosta viikossa. Kaikkeen muuhun vastastin luonnollisesti ei.

Tänään aamulla puntari sanoi: ”69.7 kg”, rasvaa ”20.0 %” eli 14 kg. En muista koska viimeksi paino on ollut alle 70 kg.

Kiitoksia tästä verikokeen tuloksesta kaikille elimistöni soluille!

REFERENSSIT

[1] Terveystalo

Anteeksipyyntö

Elämässä tulee hetkiä, että kertoo esim. blogissaan liikaa muista ihmisistä tai yksityistä asioista yleensäkin. Sen johdosta kaverin pyynnöstä päätän tehdä julkisen anteeksipyynnön.


”Anteeksi, käytökseni on mennyt monella tapaa yli kohteliaisuuksien rajojen. Olen puhunut yksityisyyttä loukkaavia tietoja julkisesti, sekä käyttänyt ikävässä kontekstissa henkilöiden nimiä. Nyt minun on paras vähän jäähdytellä itseäni ja ottaa aikalisä asioista. Pidän tästä lähtien matalampaa profiilia, ettei kellekään aiheudu turhaa pelkoa tai mielipahaa” -Admin

Lainaan itseäni

Lainaan itseäni vajaan kolmen vuoden takaa. Asiat ja tilanteet muuttuvat, mutta vuosistoja sitten toimineiden skolastien argumentointivirheet ovat yhä ajankohtaisia. Keskiaikana tieteen huippu oli skolastien harteilla, he oikeasti edistivät ja kehittivät tiedettä kaiken sen ajan yleisen tiedevastaisen asenneilmapiirin ja pilkan keskellä:

”On hyvin tyypillistä hyökätä väittelyssä henkilöä kohtaan. Sitä pidetään erittäin huonona ja hyväksymättömänä tapana käydä väittelyä. Lähtökohta siis on, että väittelyssä mielipiteet väittelevät henkilöiden sijaan. Harvemmin toisen henkilökohtaisuuksia vastaan hyökkääminen edistää oman kannan esittämistä. Miten se edes olisi mahdollista, jos ei keskustele itse asiasta. Tätä kuitenkin tapahtuu varsin usein, siitä pois pääseminen on yleensä ensimmäinen asia oppiessa argumentoimaan oppineesti ja vakuuttavasti.” https://tuppu.fi/argumentointivirhe/

Toiveikas vuosi 2019

Vuosi 2018 on mennyt omalta osaltani oikein hyvin, kehitys on edennyt oikeaan suuntaan. Toivottavasti muutenkin kaikilla asiat sujuisivat paremmin. Olen saanut nyt mahdollisuuden osoittaa omaa kykyäni, epäonnistuminen asioissa on paljolti vain minun omista mahdollisista virheistäni kiinni. Toiveista tulee totta, kun ne toteuttaa. Tukea saa, laaja-alainen yhteistyö pitäisi olla itsestäänselvyys.

Johdanto

Nyt kavereideni kanssa oli puhetta, että ei saa toistaa samoja virheitä, joita olen tehnyt aiemmin. Kuulemma tällä hetkellä mahdollisuudet ovat hyvät, joskin huolta ja epäilystä on ollut. Kyse ei ilmeisesti niinkään ole mistään teosta tai asiasta sinällään, vaan siitä, että miten ja missä minä asiat ilmaisen. Turha metelöinti ei ole tarpeellista, kun tukena on laaja ihmisyyttä edistävä ja ihmisyyden vastaisuutta vähentävä kaveriverkosto, jonka yhteistyökyky ulottuu jopa ympäri maailmaa. Pitää ymmärtää olevansa osa yli 7 miljardin ihmisen kokonaisuutta.

Asioita ja mielipiteitä ilmeisesti voi ilmaista, mutta niiden sisältöön tulisi kiinnittää entistäkin enemmän huomiota. Yleinen nykyistä matalampi profiili olisi minulle hyväksi, asioiden tuputtaminen ei ole kohteliasta ja aiheuttaa turhaa vastareaktiota. Jopa hyvä IRC-kaverini def pyysi sitä, joten silloin pitää suhtautua asiaan riittävällä vakavuudella. Etenkin ulkopuoliset voivat saada itsensä haluamansa näkemyksen. Minusta saa helposti tarkoituksiansa tukevaa referenssiä haluamaansa asiaan, eikä se ole läheskään aina hyväksi ollessani mukana mm. puolue-, ja yhdistystoiminnassa.

Taustaa


Olen kuullut Masi Kajanderilta, että olen reaalielämässä ihan normaali. Sen sijaan kirjoituksistani voi saada väärän kuvan, kuten vaikkapa lukemalla tätä blogiani. Syynä on ehkä se, että olen sitä aitoa alkuperäistä jonne-sukupolvea. Siis sitä, jolloin ei tunnetettu käsitettä some tai edes IRC-galleria. Siihen aikaa nuoremmat olivat keskustelufoorumeilla, kuten muukin tietotekniikkaväestö omissa foorumeissaan. Ylilauta ja muut vastaavat jatkavat tätä kehitystä nykyään.

Minun nuoruuteni aikana julkinen valtiovalta ei ollut kiinnostunut verkkokeskusteluista, mutta nyt mm. ylläpitäjän vastuuta keskusteluista puidaan jo kovan tason oikeusprsesseilla. Kyse on myös tietynlaisesta vastuusta mm. nuoria ja heidän vanhempiaan kohtaan, vaikka ei suoranaisesti kenellekään tekisi mitään pahaa. Nuoremmille ihmisille pitää antaa oma elämänsä ja rauhansa. Sodan aikanakin eläneet nuoret aikuiset vaikenivat tapahtumista myöhemmällä iällä, jolloin keskittyivät paremman maailman luomiseen.

Kulttuuriero

Samoin kun nuoria miehiä laitetaan tuhansittain opiskelemaan samaan laitokseen, niin on ymmärrettävää, että silloin kulttuuri on erilainen kuin jossain muussa ympäristössä. Valmistuneen DI:n pitää ymmärtää, että kaikkea saatavilla olevaa viinaa ei tarvitse juoda. Teekkarina sellainen on vielä normaalia, mutta ei sitäkään yleisesti hyvänä käytöksenä pidetä. Osa teekkareista ei valmistu koskaan, minä olen valmistunut. Joillakin tulee seinä vastaan, uskoakseni yliopistossa asenteen merkitys organisaatissa pärjäämiselle on vähintään yhtä suurta kuin armeijassa. Samoin kuin armeijassa on simputusta, niin myös yliopistoissa voi tulla seinä vastaan. Plagiointi ja vahvat perustelemattomat virheelliset mielipiteet tai toisen yliopistopolun haittaaminen tekevät opintopolusta liian ruusuisen kuljettavaksi onnistuneesti läpi. [4]

”Academic dishonesty or academic misconduct is any type of cheating that occurs in relation to a formal academicexercise. It can include ” [4]

  • Plagiarism: The adoption or reproduction of ideas or words or statements of another person without due acknowledgment.” [4]
  • ”Fabrication: The falsification of data, information, or citations in any formal academic exercise.” [4]
  • ”Deception: Providing false information to an instructor concerning a formal academic exercise—e.g., giving a false excuse for missing a deadline or falsely claiming to have submitted work.” [4]
  • ”Cheating: Any attempt to give or obtain assistance in a formal academic exercise (like an examination) without due acknowledgment.” [4]
  • ”Sabotage: Acting to prevent others from completing their work. This includes cutting pages out of library books or willfully disrupting the experiments of others. ” [4]

”Academic dishonesty has been documented in most every type of educational setting, from elementary school to graduate school, and has been met with varying degrees of approbation throughout history. Today, educated society tends to take a very negative view of academic dishonesty. ” [4]

Monelle auktoriteettiuskoiselle ihmiselle se voi olla henkisesti raskasta, että tiede ei tukeudu mitekään auktoriteetteihin, jolta osin yliopisto poikkeaa armeijasta. Pitäisi kuitenkin yrittää kunnioittaa erilaisia ihmisiä, ymmärtää erilaisia käsityksiä oikeasta ja hyvästä toiminnasat omien organisaatioiden edun takia, vaikka arvot eivät suoranaisesti ole niiden erityisessä arvostuksessa. Se, että joku kunnioittaa auktoriteetteja, niin pitäisi ymmärtää myös silloin toimia vastavuoroisesti. Toivoa, että vastaavasti myös omien tahojen ja ryhmien arvot tulevat kunnioitetuksi. Erilaisten kulttuurien arvomaailmoja ei tarvitse aina arvostaa, mutta on hyvä kuitenkin kunnioittaa niitä.

Tunnetusti tutkijoilla on akateeminen vapaus eli työnsä puolesta mahdollisuus tehdä asioita tieteen nimissä, mutta samalle se tuo mukanaan valtavan akateemisen vastuun. Etenkin tutkimuskäyttöön kehittetyjä kemikaaleja on päässyt vuotamaan valtavia määriä yliopistojen ulkopuolelle. Erityisesti Kiinaan nähden on niin suuri kultturillinen ero, että monet ovat onnistuneet sieltä levittämään niitä oman edun mukaisiin tarkoituksiin, joihin niitä ei ole koskaan tarkoitettu tai kehitetty. Monet ovat ihan aiheellisesti huolissaan tästä asiasta. Iso osa niistä on jopa erittäiin neurotoksisia eli reakoivat aivoissa tuottaen jopa pysyviä vaurioita [2]. Itsekin olen hieman kiinnostunut neuroverkkojen tutkimisesta, ohjelmallisesti.

Keskustan yliopiston 5 opintopistettä vastasi TTY:lla 3 opintopistettä, koska DI:n vaatimustaso pitää olla kovempi kuin virallisesti saman tason tekniikan maisterilla. Diplomityöstä monilla jää valmistuminen onnistumatta, koska eivät kykene osoittamaan omaa akateemista pätevyyttään. Ehkä minusta vain todettiin, että olen yliopiston perusteella riittävän pätevä tutkintotodistuksen saamiseen. Hyvä ystäväni Masi Kajader suoritti tutkinnon juuri ennen kuin TTY virallisesti lakkautettiin, tilalle kun tulee uusi Tampereen yhteinen yliopisto [1, 3].

Analysointia

On siis hyvä tiedostaa, että Suomen sisällä on paljon erilaista alakulttuuria. Se, että jossain jokin asia on ok ja normaalia, niin ei tarkoita samaa jossain muualla. Näiden kulttuurien välistä ristiintörmäystä tapahtuu todella paljon. Vaikkakin monet samat sosiaaliset periaatteet pätevät kaikissa ympäristöissä, niin ilmenemisessä on eroja. Näiden asioiden käsittely on enemmän humanistien aihepiiriä, mutta jokaisessa teekkarissa asuu pieni humanisti.

Yhteenveto

Vuosi 2019 on erittäin toiveikas. Itse toivon saavani aikaan paljon asioita, kaikkea en edes kerro julkisesti. Toivon, että voisin toimia vastuullisempana ihmisenä. Kun voi vaikuttaa asioihin monessa paikassa, niin sitä etuoikeutta ja yhteistyöpotentiaalia tulisi käyttää riittävällä varovaisuudella paremman maailman edistämiseen. Turha menneitä on mussuttaa, nyt kun mennään uuteen vuoteen aiemman pohjalta!

Furtheria

”Näin on aina tehty, näin pitää aina tehdä.


Wiki: Unix time with in Non-Gregorian calendars

REFERENSSIT

[1] M. Kajander, Ohjelmiston itsepäivitystoiminnallisuuden totetus, diplomityö, Tampereen teknillinen yliopisto, Tietotekniikan laitos, Tampere, 2018. Saatavissa (viitattu 2019-01-01): https://dspace.cc.tut.fi/dpub/bitstream/handle/123456789/26913/Kajander.pdf
[2]Wiki: Neurotoxity. viitattu 2019-01-1.
[3] Tuni: Yhdessä olemme enemmän. julkaistu 2018-12-13. viitattu 2019-01-02
[4] Berkley City College: What is academic dishonesty?
[5]Suomi24: neuroleptit ovat sairaita. (Nykyipäivän lobotomiaa jopa unettomuuteen.)
[6]Tiede-foorumi: Neuroleptit, miksi niitä määrätään kaikille?

Freeday Extrovert

Nyt omassa elämässäni asiat menevät todella hyvin. Viimeisen muutaman vuoden aikana opiskeluiden loppumisen jälkeen vointini on parantunut jatkuvasti. Kaikenlaista on kokenut, kaikenlaista tulee vielä vastaan. Jos asiat menevät näin paljon parempaa suuntaan, niin tilanne on jo erittäin hyvällä mallilla. Viimeisenä opiskeluvuotenani aivot tuntuivat lyövän niin tyhjää, että hädin tuskin kykeni valmistumaan koulutuksesta. Voisi sanoa, että olin kaikkeni antanut silloin. Osoitin oman potentiaalini, saavutin haluamani tavoitteen. Terveys ja hampaat ovat vielä pääosin tallella, henkinen vointini on tällä hetkellä parempi kuin ehkä koskaan aiemmin eläissäni. Voimavarojani olen myös oppinut suuntaamaan tehokkaammin, osittain oman itseni tarkkailuni kehittymisen myötä. Toivon mukaan voisin pian auttaa muita!

Kuva 1. Muistaisinpa itsekin aina nämä kolme kohtaa, usein muistaa liian myöhään.

Elämä introverttinä

Itse olen lapsena ollut hyvin sosiaalinen, tuli erittäin hyvin erilaisten ja eri ihmisten kanssa toimeen. Sittemmin tapahtui kaikenlaista, eristäydyin ja halusin olla omissa oloissani. Ala-asteikäisenä isovanhempien kuolema vielä meni itseltäni, mutta muutaman vuotta vanhemman veljen kuolema jätti pysyvät muutokset. Vanhemmille isovanhempien kuolema oli todennäköisesti isompi asia. Itselleni veli oli oman lapsuuteni läheisin henkilö, kuka erinomaisesti opetti henkisesti tämä karun maailman haasteisiin mikrotasolla.

Ala-asteen jälkeen en erityisemmin edes viihtynyt kavereideni kanssa. Internet oli itselleni iso asia, jonka koin keinona tutustua samanhenkiseen porukkaan. Ennen sitä olin vain yleisesti kaikenlaisesta henkisesti haastavasta ja uusista innovaatioista kiinnostunut. Tämä riittämättömyyden tunne oli todella raskasta, oikestaan kuitenkin sitä halusin. Mahdollisesti koulu tarjosi kipinä opiskelulle, oman motivaation lukea ja opetalla läpi elämäni muuten kuin  vain arvosanoja hakemalla ja opettajia mielistelemällä.

Tutustuin erittäin paljon mm. Suomipelit.com -sivustolla ja Ohjelmontiputkassa verkkokavereihin, jota ennen keskusteluni aloitin jollain Peliaseman foorumilla kiinnostuksesta pelien tekemiseen mm. Click ’n Play -ohjelmalla. Olin huolissani omasta suomenkielen taidoistani, huonon itsetuntoni takia en voinut sitä tilannetta hyväksyä, vaan ryhdyin kirjoittamaan tekstiä. Toisaalta se oli iso motivaattori asioiden oppimiseen, mutta toisaalta se oli ehkä jopa liian voimakas voima pidemmänpäälle. Elämiä on kuitenkin vain yksi, joten sen takia 50-50 -riskisuhde on ihan perusteltu geneettinen strategia. [3]

Opiskelun suhteen olen ollut hyvin vakuuttunut omasta osaamisesta, toisaalta olen ollut erittäin epävarma onnistumisestani. Mielestäni tämä huoli oli jopa ihan perusteltua, myöhempi DI-tutkinnon suorittaminen oli itselleni melkoisen saavutuksen takana. Tavoite kuitenkin vahvistui itselleni erittäin hyvin Tiede-foorumin kautta. Koin löytäneeni oman ryhmäni, jotain parempaa kuin mitä reaalielämän ympäristö kykeni tarjoamaan minulle. Kesälomien aikana luin omasta kiinnostuksestani lukion fysiikat, matematiikan binoijakaumat jäivät vähemmälle. Fysiikka kiinnosti sen takia, että kykeni ymmärtämään fysiikan periaatteet teorian takana, jota kautta pystyi itsenäisesti päättelemään kaavat. Matematiikassa oli enemmän ulkolukua.

Toisaalta minulla oli aina kova motivaatio, mutta samaan aikaan olen hyvin vahva alisuoriutuja. Vaikka olenkin itseoppinut ohjelmoija, niin silti itseopiskelu ja harrastuneisuus sopivat minulle erittäin huonosti. Työntekoon olen kuitenkin hyvin vahvasti orientoitunut, eikä siinä ole koskaan ollut mitään isompaa ongelmaa. Omat sukupolveni ovat pitkiä ja isovanhempani ovat eläneet sota-aikana, niin varsin vahva nationalishenkinen arvomaailma positiivisessa mielessä on tarttunut minuun. Yhteiskunnalle tärkeänä oleminen on minulle erittäin tärkeää, mitä ominaisuutta vastapainotan itse olemalla hyvin arvoliberaali.

Työttömyys on itselleni erittäin ikävä asia. Jopa menin mieluummin siivojaksi kesätöihin kuin että olisi parin viikon kesätöihin mennyt naurettavalla muutaman satasen palkalle ties minne. Tosin sieltäkin sittemmin soitettiin, että olisi saanut mennä töihin, kun menin TTY:lle opiskelemaan. Olin myös valmistumisen jälkeen jonkinaikaa työttömänä, josta olisin mennyt vaikka ansiosidonnaisella ilmaisharjoittelijaksi koodaamaan, mutta kuulemma se ei sopinut HR-tädille. Palkkani on nyt parin työpaikan vaihdoksen jälkeen kuitenkin tuplaantunut, olen päässyt myös muuttamaan takaisin Tampereelle työpaikan mahdollistaessa sen.

Viiteen toiminnantarkastajana

Olen ilokseni saanut muutettua Tampereelle töihin samaan aikaan kuin Pirkanmaan Viiteelin eli tieteen ja teknologian vihreiden rekisteröity yhdistys aloitti toimintansa. Täällä aloitan yhdistystoiminnan aktiivisena jäsenenä. Olin jo kuntavaaleissa 2017 Vihreiden jäsen Seinäjoella, jolloin Seinäjoella Vihreiden valtuustopaikat lisääntyivät yhdestä kolmeen [4]. [5]

Viite on itselleni todella tuttu jo kuntavaaleista asti. Kyseinen yhdistys edustaa erittäin vahvasti omaa polittista kantaani [6]. Olen itse ollut aina hyvin tekno-tiede -orientoitunut henkilö, joka kannattaa eettisesti kestäviä toimintamalleja. Myönnän etten itsekään aina elä kuten ekologisesti olisi suotavaa, mutta yritystä on muuttaa muidenkin elintapoja kestävämmäksi. Sen tietysti pyrin tekemään niin, että se ei olisi mitään pakkopullaa ja keppiä, vaan että toiminta olisi edistyksellistä. Tältä osin koe Viiteen poikkeavan hyvin vahvasti Linkolaisesta vihreydestä, mutta toisaalta en koe tätä pelkästään pääkaupunkiseudun cityvihreydeksi. [1]


Oma poliittinen kiinnostukseni on ollut varsin vahvaa jo jopa nuoresta asti. Olen äänioikeutuksestani alkaen ollut erittäin kiinnostunut käymään Vihreiden vaalinvalvojaisissa, mutta en valitettavasti ole vain saanut aikaan. Olen myöskin kerännyt Piraattipuolueelle kannattajakortteja puolueen liittymiseksi puolurekisteriin. Kaveri vain sittemmin hävitti ne kortit, kun unohdin ne hänen kotiinsa. Sikäli harmillista, nuorempana turhaan emmin mennä porukkaan mukaan. Toiminta oli tosin vain pääkaupunkiseudulla, joten sikäli päätös oli perusteltava. Ehkä olisi pitänyt muuttaa pääkaupunkiseudulle, mutta vuokrat ovat siellä liian korkeat.

Viiteellä on todella hienoja tapahtumia, joissa näkee erittäin paljon samanhenkistä porukkaa. Tämä on se porukka, johon itse nyt vahvimmin samaistun. Toki Viiteläisiin tutustuin jo kuntavaalien yhteydessä mm. Facebookin kautta, jopa yllättäen löysin Vihreistä oman lokeroni. Sukupuolierojen häivyttämisestä puhutaan enemmän kuin koskaan aiemmin, mutta silti miesten ja naisten väliset erot tuntuvat korostuvan ajatusmaailmojen tasolla ulkoisten puolien yhdentyessä. Ehkä kyseessä on vain illuusio, kun itsellä tulee ikää lisää. Tosin itseäni sana feminismi ei aiheuta niin kovaa reaktiota kuin aiemmin. Luultavasti taustalla on oma sosiaalinen kehittymiseni, ymmärrän ettei kaikki ajattele kuitenkaan samoin kuin minä.

Etenkin omalla koulutuspolullani käsite naistutkimus on ollut vitsi ihan yliopistotasolla asti, oikeastaan vasta TTY:lla tuli vastaan käsite teekkarit vs. humanistit, ennen sitä vastaavaa arvolatausta ei oikeastaan ollut. Taustalla oli tietysti kuitenkin vain teekkarihuumori, joka on luonteeltaa hyvin mustaa ja toisinaan loukkaavaa. Itse joudun myöntämään, että se huumori voi olla jopa pahansisuista. Tietysti on hyvä, että asioita käsitellään. Huumori on oiva tapa käsitellä asioita. Mielipiteitä pitää tietysti voida sanoa, mielestäni se oikeus on niin feministeillä kuin vaikkapa nationalisteilla. Asioihin liittyvää hyvää argumentointia tulee molemmilta tahoilta, kuten myös huonoa argumentointia.

Suomen Mensan Pirkanmaan paikallisosaston hallituksen AW-vastaavana

Olen ollut viitisen vuotta jäsenenä Suomen Mensassa. Ajattelin tähän toimintaan mennä mukaan jo paljon aiemmin, mutta en myöskään silloin sitä saanut aikaiseksi. Nyttemmin täytyy myöntää, että minua kaduttaa se, olisi kannattanut. En aikoinaan olisi halunnut maksaa 550 euron ainaisjäsenyyttä, josta hinta on jo noussut 700 euron luokkaan. Porukka on ollut hienoa, olen myös kehittynyt sosiaalisesti valtavasti.

Itse hallituksen jäsenenä haluaisin, että voisin kohdella muita, kuten olisin halunnut heidän kohdelleen minua uutena jäsenenä. Pitää myös ymmärtää, että sitä Mensassakin tekee typeryyksiä, eikä aina heti sopeudu toimintaan mukaan. Positiivisella kierteellä on taipumusta tarttua, asian ymmärtäminen reaalielämääni kesti aikansa. Muistutan myös tarvehierarkiasta, jonka mukaan omat perustarpeet tulee saavuttaa, ennen kuin kunnolla voi auttaa muita. Ehkä itse olen saavuttanut nyt sen tason sekä ajan, elintason että monen muunkin asian suhteen. Ehkä itse olen ollut ennemmin se apua tarvitseva, enkä ole täten kyennyt edistämään muiden asiaa haluamallani tavalla.

Yhdistys on ollut sen takia todella opettavainen, että sosiaalisten suhteiden lisäksi on saanut huomata, että ketkä oikeasti ovat Suomen älykkäimmät 2% ihmiset virallisen kuviopäättelytestin perusteella. Se on monelle varmasti iso henkinen pettymys, kun ymmärtää todellisuuden. Aivan samoin kuin HR-henkilöiden hakemia superihmisiä ei ole olemassa, niin mensalaiset eivät olekaan niitä yliluonnollisia otuksia. Huomaa, että oikeasti porukka on suurelta osin omista henkisistä ongelmista kärsiviä ihmisiä, vaikkakin jokainen oma hieno persoonansa. Toisin osa saattaa olla erittäin hirveitä ihmisiä, jotka käyttävät omaa lahjakkuuttaan yhdistyksen sääntöjen vastaisesti muuten kuin ihmisyyden hyväksi, joka on jo lievemissäkin muodossa vahva peruste erottamiselle. Suomen Mensassa on jo yli 3000 jäsentä tällä hetkellä, erotettujen määrä kautta historian jää kuitenkin vain yhden käden sormilla laskettavaan määrään.

Itseäni hieman on nyt nolottanut yhdistyksessä oleminen, koska oman ajatukseni on ollut joku aika sitten varsin jumissa, kirjaimellisesti. Pakohuoneessa projektikurssikavereiden kanssa käytiin, niin olin vain taakkana. Pelkäsin tilan jäävän pysyväksi, mutta toipuminen on ollut erittäin nopeaa. Kaikki se kolmen vuoden aikana aivoista uupumani dopamiini on nyt alkanut virtaamaan opiskeluiden jälkeen, ajatukset ovat jatkuvasti entistäkin kristallia kirkkaampaa. Motivaatiota riittää, tulevaisuuden näkymät ovat erittäin positiiviset. Hirveitä joutuu kokemaan, että pessimismi, masennus ja pahoinvointi poistuu elämästä. Tällä hetkellä omassa elmässäni kaikki on erinomaisesti, tulevaisuuden näkymät myös osoittavat kohti parempaa.

Kohti uutta hienoa tulevaisuutta

Ehkä asia on vain niin; että mikä ei tapa, niin se vahvistaa. Oikeasti uskon niin, myös tulevana kuntavaaliehdokkaana, jos vain me saadaan elää sinne asti.  Joku joskus sanoi, että nuoruus ei välttämättä ole elämän parasta aikaa. Itse ainakin toivoisin niin, mutta toivoisin tietysti nuorille mahdollisimman hyvää elämää. Nyt kun itse voi ja kykenee sellaista tekemään.

Toivoisin, että voisin tarjota niitä asioita tuleville sukupolville, joita itse sain vastaanottaa aikoinaan. Myös niitä asioita, joita itse olisin halunnut, mutta syystä tai toisesta ei ollut mahdollisuutta. Viiteen kokouksessakin tavoitteenamme oli tehdä maailmasta parempi paikka elää. Jotenkin en itse ole ollenkaan pessimistinen sen tavoitteen onnistumisesta.

Kirja, jolla itseopiskelin nuorena 3D-grafiikkaa

Brook Miles

I’m a professional windows programmer [Admin: me too 15 years later. :p ] and got this book as a simple quickstart into DirectX which I haven’t dealt much with in the past. I haven’t read the entire book yet, but I have read the first couple of chapters, and skimmed various others.

o The coding style is awful. The naming convention is a hodge-podge of szHungarianNotation, unix_style_underscores and variations. Formatting is uneven and makes following the printed code rather difficult. Tons of global variables. I’m generally willing to overlook this as I don’t copy code verbatim from books anyway, but I’d hate to be using this as a beginner.

o The code is written in a combination of C and C++ styles/APIs. I would have preferred if the author is going to use C++ that he actually made full use of the language, otherwise the code would be much clearer in plain C.

o The more I browse the the book the more obvious it becomes how badly layed out it is. Part IV is labelled ”Welcome to 3D” however the first two chapters are on DirectMusic, wouldn’t this have gone better in Part III ”Adding Music and Sound”? It does contain two chapters on 3D topics, but you don’t actually create a 3D application untill the first chapter of Part V ”Input Devices”, which in fact does not cover input devices, but covers basic 3D, textures, lighting etc… Part VI ”Direct3D Immediate Mode” contains chapters on DirectInput and Force Feedback (what happened to Part V ?) as well as 3D Sound (Part III?)

o The first outright error that I noticed was in chapter 4, which states ”In the last hour, you used a timer message WM_TIMER, to notify….” which is false. (the code on the CD may have, since I haven’t looked at it, but the book did not) Apart from that, the information presented so far does seem more or less useful and applicable, if not elegant. To anyone that has some experiance in windows developement, you may be better served browsing through MSDN (which you are certainly familiar with) and it’s samples, unless you have money to burn and just want to check this out. To anyone that has little or no experience and anyone who just prefers to work from a book, this one is likely to frustrate you and teach you quite a few bad programming habits, try and find a better one. ”Beginning Direct3D Game Programming” and ”Isometric Game Programming With Directx 7.0″ look promising and so far have great reviews.”

Kuva 2. Ehkä parempi, ettei tule kiusaus mennä sörkkimään niitä DOS-pohjaisia Windows 9X-ajureita.

[collapse]

Jos Suomessa on vielä paljon tehtävää paremman maailman eteen, niin miten on tilanne sitten Saharan eteläpuolisen Itä-Afrikan ihmisillä? Minkälaista siellä on elää ja olla, korrupotuneiden hallituksien, merirosvojen ja jengien keskellä? Minkälaista on toimia teknologiasektorin fiksumpana sellaisessa maassa, jossa ihmisten tietämys asioista on kuin 1000-luvun Euroopasta? Bill Gates tapaa myös sillä alueella paikallisia fiksuja ja visionäärisiä ihmisiä, jotka uurastavat sellaisessa rotankolossa, koko maapallon perseri’ässä. Heidän uurastuksensa on ihmiskunnalle erittäin arvokasta, koko alueen kehityksen taakka on heidän harteillaan. [2]

Tietysti myös voi samaistua esim. Somalian alueen poliisin rooliin, että miten valmis on uhraamaan itsensä tulevien sukupolvien nimeen. Jopa Gatesin kirjoituksesta voi nähdä peitellyn säälin näiden ihmisten puolesta, joiden nykyinen tilanne on itsekkäiden ja huijaavien eurooppalaisten syytä. Jos löytäisi oikean Mensalainen-lehden, jossa on artikkeli vertailukuvasta tähän, niin liittäisin heti. Siinä ulkopuolinen kehittyneen elämän keskellä elävä tulevaisuuden ihminen työskentelee kehittämässä robottidroneja, joilla tuhotaan nykyisenkaltainen muu sivilisaatio. Perusteena on heidän käyttämäänsä alkukantaisen kemialliset aseet ja huumeet, joiden voimalla harjoittivat rikollisuutta. Globaalin maailma uhkana oli hiilidioksidia vapauttava teollisuus. Olisiko auttaminen parempi keino kuin sota globaalien ongelmien ratkaisuksi, miltä tuntuisi että joku ylimielinen tulevaisuuden euforisessa virtuaalimaailmassa elävä henkilön toimesta meidät nykyisellä tekniikalla elävien ihmisten elämä tuhottaisiin kuin syöpäsolu? [2]

”Parhaansa tekee, niin se riittää”

”Ehkä Hervannan lukiossa”

REFERENSSIT

[1] Tiedepuolue, kuntavaalien 2017 Seinäjoen ehdokas, Tuomas Liikala
[2] Gates Notes: Why I Love Fertilizer
[3] Portfolioni: Tekstipelit
[4] Kuntavaalikone, vastaukseni
[5] Pirkanmaan Vihreät
[6] Viite – Tieteen ja Teknologian Vihreät
[7] Mensa.fi
[8] Amazon: DirectX 7 in 24 Hours
[9] Tuppu.fi: Yhteiskunta on sairas
[10] Tiede.fi: Tuppu L. 2.0 kirjoitukset
[11] Duodecim: pahanlaatuinen neuroleptioireyhtymä – kiireellistä hoitoa vaativa häiriö

Koodareiden osaajapula

On paljon puhetta huutavasta osaajapulasta ohjelmistoalalla, jatkuvasti saa milloin minkäkin tahon suunnalta kuulla heidän omaa propagandaansa. Yrittäjät oletusarvoisesti valittavat, ettei osaavaa porukkaa löydy töihin. Mitä pitäisi löytyä? Mitä tässä meidän maailmassamme on tarjolla ja annettavaa?

Johdanto

Usein saa kauhuissaan lukea kaikenlaisten HR-tätien näkemyksiä alalle sopivista henkilöistä. Tuntuu kuin heillä ei olisi mitään käsitystä todellisesta alasta, elävät jossain omassa maailmassaan. Ehkä hekin vain haluavat yrittää esittää olevansa tärkeitä, joten siltä kannalta ajateltuna argumentit voivat olla perusteltuja. Asiat voi kuitenkin nähdä monelta eri kantilta.

Itseäni ärsyttää erityisesti puheet sosiaalisista ja dynaamisista ihmisistä, joita haetaan. Ehkä tämä on paljon jokin omiin hermoihin palanut jäänne jostain hakemuksesta, mutta itse pidin siitä omalla kierolla huumorintajullani. Mainosarvo siis täyttyy ilmoituksessa! Hyvän ja näkyvän mainoksen tulee olla ärsyttävä, kivat mainokset eivät jää mieleen. Paljon myös firmoja on saanut eläissään kierrellä, kymmenissä haastatteluissakin on tullut käytyä jo tässä vaiheessa elämääni.

Musiikkispoiler

Palvelinkäyttöön tarkoitettu kiintolevy 2002 vuodelta. Kuulostaa paljon paremmalta kuin kotikäyttöön tehdyt kiintolevyt:

[collapse]

Nykyään ohjelmistotaloilla on jokin iso trendi toimia jonkinlaisena vaivaistalona, jossa kisataan, että kenellä on sairain, syrjityin ja huono-osaisin työporukka. Ainakin julkisuuskuva on tällainen, todellisuudessa kyse on vain julkisivun kiillottamista muutamalla kiintiöhenkilöllä. Samoin kuin DNA-testien jälkeen huomattiin oikeuslaitoksen päätösten ja todistajien rasistisuus kuolemantuomioon saatettujen väärissä päätöksessä, niin ongelma korjattiin tv-sarjojen kiintöafrikkalaisella. Ongelma on todellinen, mutta ratkaisut ovat paljon pelkkää anekauppaa syntien maksamiseksi pois. Ongelmaa ei edes yritysten mielestä välttämättä tarvitse korjata, kun vain maksetaan hyvä omatunto asiakkaille.

Hyvä koodari

Minkälainen siis ohjelmistokehittäjän tulisi olla? Mitä taitoja vaaditaan hyvältä koodarilta? Voiko näitä taitoja oppia, vai onko ne geeneissä? Varmoja vastauksia ei välttämättä ole, mutta itse tarjoan omaa subjektiivista näkemystäni.

Ohjelmistoala on yleensä henkisesti todella haastava, jopa tietystissä tilanteissa mahdoton. Tämä on asia, jota itsekään en täysin ymmärtänyt aikoinaan. Ongelmien ennaltaehkäisy on iso osa onnistunutta projektia. Ongelmien mahdollisimman aikainen tunnistaminen minimoin riskien seuraukset. Ongelmien ratkaiseminen on normaalia arkityötä kuin kirurgin työskentely teho-osastolla. Tietysti asenne pitää olla se, että asiakkaat eivät tee virheitä, vika on systeemissä. On ihan normaalia, että joku paukuttaa login-sivua päivittäin tuhansia kertoja Tuppu-blogilla.

Liberalius

Mielestäni ohjelmistoalalla ehkä tärkein asia on liberaali ajattelumalli. Pitää osata ajatella siltä kannalta, että ihmiset nyt ovat sellaisia kuin ovat. Usein ohjelmistokehitys on hyvin vahvasti painottunut nimenomaan liberaaleille osille maailmaa; kuten San Franciscoon Yhdysvalloissa. Yleensä olen itse saanut sellaisen kuvan, että ala myös tekee ihmisistä liberaaleja.

https://www.youtube.com/watch?v=9c0CVItMhoQ

Yhtenä esimerkkinä tästä alan luonteesta on Thorlaudan 45 vuotias vantaalainen ohjelmistokehittäjä, joka ylläpiti poliisien sulkemaan Thorlautaa [1]. Suomi onkin kovalla huumepolitiikan seurauksena yksin amfetamiinin kärkimaista Euroopassa, Lahti pääsi jopa Top 5 listalle [2]. Huumeet on niin vaikea asia, että edes minä en kunnolla uskalla kirjoitta niistä. Osoittaisin vain oman tietämättömyyteni ja nolaisin itseni, kun asia on niin monimutkainen. Ehkä sen takia aiheesta ei voida puhua asiallisesti, seksuaalisuudesta puhuminen on helpompaa.

videospoileri

Metamfetamiinissa on Lahdella vielä petraamisen varaa Helsinkiin verrattuna, siellä on paremmat pirit. [5]

Aku Ankkakin on käyttänyt Pervitiiniä 1930-luvulla natsien kokoonapanoteollisuudessa, ainakin näki unta siitä. Sota-aikana on tietty omat doupit työelämän vuorotöissä, että teollisuuden läpivientiaikaa saadaan nopeutettua. Ehkäpä metamfetamiinin eli Pervitiinin massavalmistus enemmänkin propagandaa Saksan tieteen ja kemiateollisuuden ylivoimaisuudesta muihin kansoihin nähden, saavutettu hyöty ei välttämättä ollut oikeasti niin iso. Jenkit eivät osanneet massavalmistaa metamfetamiinia, niin ovat ikuisesti katkeria valistaessan omia nuoriaan, muuten amfetamiinia kyllä käytetään 3-luokan eli miedoimman luokan huumausaineena.

https://youtu.be/kzH1iaKVsBM?t=204

Stimulanttien käyttäjät ovat usein päihteeseensä  viha-rakkaus -suhteessa. Aika hyvin käyttäjät tuntuvat olevan perillä piristeen haitallisuudesta, käyttävät erilaisia multivitamiineja ja muita apuja minmoidakseen haitat[4]. Monet myös varoittelevat: että jos ei osaa olla ilman kahvia, niin kannattaa pysyä erossa. Itse kuitenkin käyttävät, jotta saavat motivaatiota ja keskittymiskykyä esim. opiskelussa uuvuttavien kirjojen lukemiseen. Monet eivät yksinkertaisesti pysty keskittymään opiskeluun, vaan heidän ajatuksensa harhailevat liikaa asiasta toiseen ilman amfetamiinia. Amfetamiini on kuitenkin yksi kaikista voimakkainta psyykkistä riippuvuutta aihettava substanssi. [3]

[collapse]

Fluidi älykkyys

Toiseksi tärkeimmäksi ominaisuudeksi ohjelmistoalalle itse koen älykkyyden. Voisin ehkä pitää tätä jopa tärkeimpänä, mutta jätin nyt toiseksi. Tietysti painotus riippuu hyvin paljolti monesta tekijästä, että sikäli suoraisesti näitä asioita ei voi niin sanoa, että jotain ei tarvisisi.

Älykkyyden osalta etenkin fluidi älykkyys on erittäin tärkeää. Tämä on taitoa soveltaa aiemmin oppimaansa täysin uudessa ympäristössä. Tätä voidaan mitata erittäin hyvin kulttuurivapaalla kuviopäättelytestillä. Etenkin rekrytoinnin kannalta tämä on hyvin tärkeää, koska on menetelmiä asioiden arvioimiseen. Itse suorittaisin kuviopäättelytestin työtenkijöiltä, jos itse olisin HR-henkilö. Jos ei saa riittävän hyvää tulosta, niin ei ole asiaa alalle.

Itse suhtaudun hyvin kriittisesti lapsille tehtäviin kuviopäättelytesteihin. Monen älykkään ihmisen älykkyys kehittyy paljon pidemmälle ja kauemmin. Tämä on hieman sama kuin pituuskasvu, joka on hyvin yksilöllistä kehitysvaiheessa. Täten siis ei saisi mitata lapsien älykkyyttä, koska se ei anna luotettavaa kuvaa aikusiän älykkyydestä. Samoin kuin lapsen pituus tai paino ei välttämättä kerro aikuisiän tilannetta, niin älykkyystestaukseen tulee suhtautua varauksella. Lapsille pitää kuitenkin antaa täysin mahdollisuus hyödyntää kaikki älyllinen kapasiteettinsa huippu-uraansa esim. ohjelmoijana. Ei ole niinkään väliä, että mitä koodailee, kunhan harrastaa koodausta lapsena. Itse harrastin C-kääntäjän pyörittelyä ihan hupimielessä, enkä itse tajunnut sen olleen oman ammattini tärkein edistäjä elämässäni.

Kristallisoitunut älykkyys

Ohjelmistoala on erittäin laaja. Itse naureskelen joillekin parin kuukauden kursseille, joilla kuvitellaan saavan jotain ohjelmistokehittäjiä alalle. Ehkä jotain saadaan kasaan, mutta ei todellakaan hyvää porukkaa. Jos hyvää porukkaa saadaan, niin todennäköissti taustalla on jo paljon omaksuttua tietoa.

Joku joskus Ohjelmointiputkalla sanoikin; että ohjelmoinnissa ei ole mitään erityisen vaikeaa asiaa, vaan valtavasti paljon pieniä asioita. Mielestäni tämä näkemys on erittäin hyvin kuvaava asia. Ohjelmointia voi oppia peruskoulussa, josta valmentuminen alalla jo alkaa. Aivan samoin kuin huipputason urheilijoita valmennetaan pienestä pitäen, niin ihan samoin henkisesti lahjakkaita tulisi valmentaa huipputason tiimiin. Näin saadaan niitä yrittäjien ja HR-tätien kaipaamia huipputason tyyppejä!

Motivaatio

Wikipedian mukaan Quick And Dirty Operating System’in eli QDOS:n hyväksyminen IBM:n käyttöön vaati 300 bumerangia ja 11 kuukautta päivittäistä yhteistyötä [6]. Jotain siis osattiin tehdä oikein, niin paljon kuin Microsoftia nykyään pilkataankin. Omasta mielestäni ainut oikeasti merkittävä kritiikin aihe on ohjelmistojen kaupallistaminen, käytettävyyden vaikeudesta kritisoiminen ei ole mielestäni perusteltua. Mikkisoftan rento työilmapiiri on oikeastaan jopa hyvä asia. [7]

DOS

[collapse]

”IBM watched the developments daily, submitting over 300 change requests before it accepted the product and wrote the user manual for it.” -Wiki [6]

Uskoisin, että monilla ohjelmistokehittäjillä yksi suurimmista motivaattoreista on haastaa itsensä ja kehittyä. Yleisesti ohjelmoijat ovat varsin älykkäitä henkilöitä, jotka ovat alkujaan kiinnostuneet ohjelmoinnista siihen liittyvän ongelmanratkaisun ja oivaltamisen tuottaman dopamiinin takia. Tämä palkitsemisjärjestelmän ominaisuus on todennäköisesti jo tiettyjen ihmisten geeneissä. Hyvä ominaisuus on tietyissä tilanteissa erittäin suureksi hyödyksi koko ihmiskunnalle.

Ei Microsoftikaan ollut täydellinen paikka, kun siellä ei saanut mussuttaa. Seuraava sitaatti on DOS:n alkuperäiseltä kehittäjältä, joka lähti tuotepäällikön tehtävistä, kun ärsytti keskustella päivittäin puhelimessa IBM:n kanssa.

”I was a little irritated with Microsoft, mainly having to work with IBM. Microsoft recognizes talent. If somebody complains, they try to move them around.” [7]

REFERENSSIT

[1] MSN: Keski-ikäinen vantaalainen koodari ylläpiti sivustoa, jolla käytiin avointa huumekauppaa
[2] ESS: Nuoret Puhuvat: Lahdessa on helpompi saada huumeita kuin alkoholia
[3] Erowid: Meth
[4] Magneettimedia: Terveys ja hyvinvointi
[5] EMCDDA: 60 EU-kaupungin huumeiden käyttö jätevesianalyysissa. Julkaistu 2018
[6] Wiki: 86-DOS, history
[7] Peterson Technology: The Roots of DOS

Muutto Manseen

Taas elämä jatkaa kiertokulkuaan, kohti Tampereen vanhaa osaa kaupungista. Muutan puolen vuoden asumisen jälkeen pois Alajärveltä. Joku sanoi, että muutan pois Jumalan selän takaa. Itse olen asunut lapsena ja nuorena Peräseinäjoella, joten olen jo niin paatunut, että en itse niin osaa asiaan suhtautua. Tampere on kuitenkin hyvä kaupunki, vaikka maailmassa varmasti on parempiakin kaupunkeja. Itse ulkopuolisena olisi todennäköisesti hyvin järkyttynyt omasta kohtalostani, mutta pitää vain yrittää vaieta sellaiset ajatukset.

Uusi iteraatio

Elämässä ja ohjelmistokehityksessä ei alussa voi tietää, että mitä tuleman pitää. Eikä mielestäni todennäköisesti voida pitää onnistuneena, jos etukäteen jo tietää tulevaisuuden syntymästään asti. Joskus pitää eksyä, jotta voisi myös onnistua. Isoin vaiva on raaputtaa tyhjät arvat, voitot tulevat sitten mukana sattumalta. Samoin uuteen kirjahyllyyni on kertynyt valtavasti oman alan kirjallisuutta, enemmän tai vähemmän tarpeellista.

Kuva 1. Ostin uuteen asuntooni tyylikkään kirjahyllyn.

Kaikki myös alkaa pienestä, monimutkaiset asiat eivät tule kerralla oikein. Elämä on etenkin asia, jossa pitää elää vaihe vaiheelta, jotta voi päästä loppuun. Loppu ei edes ole mikään odottamisen arvoinen, tärkeintä on ne ennen sitä koittavat vaiheet. Näissä iteraatioissa mitataan, että pysyykö junassa mukana. Aiemmat vaiheet eivät aina mene nappiin, mutta valmiiksi asti ne on kuitenkin saanut. Perään kuuluttaen: Definition of Done?

Uudet työt

Vaihdan työni Japolta Sofia Digitalille muuton yhteydessä, ehkäpä Sofia Digitalilla tunnetuimmat sovellut Suomessa ovat Katsomo ja Ruutu. Tehtävät muuttuvat tuotannonohjauksista enemmän front-end -puolelle eli päätelaitteen pariin. Työni on älytelevisioihin liittyvien sovellusten tekemistä. Koen tämän aihepiirin myös kiinnostavampana kuin teollisuuden, media-ala on paljon seksikkäämpi puheenaihe kavereiden kanssa baareissa käydessä. Kaikella on aina kuitenkin puolensa.

Itse TTY:lla opiskellessani en ymmärtänyt Kuvan 2. Pig & Chicken-vitsiä, jollaisena sitä itse aikoinaan pidin. Nykyään olen tajunnut työn kautta varsin hyvin, että mistä siinä on kyse. Tämä on valitettava asetelma, joka usein ohjelmistoja kehittäessä tulee vastaan, miksi ei monessa muussakin tilanteessa. Koodari on kuitenkin se henkilö, joka tekee ohjelmistot. Koodaus on siis se tärkein asia, ohjelmointi on usein se ongelmallisin osa ohjelmistokehitystä. Nykyään arvostan todella paljon, että kaikilla osapuolilla on ymmärrystä ohjelmoinnista, jopa asiakkaalla. Valitettavasti maailma on kärjistäen sellainen, että pomona saattaa olla joku dorka miljardöörin poika, itse on se huippulajakas nero. Joskus kuulin, että silloin on valmis DI, kun ei tarvitse juoda kaikkea ilmaista viinaa. Niin maailma toimii.

Kuva 2. Ohjelmistokehityksessä on valitettavan usein kaksi erilaista ryhmää.

Itselleni erittäin tärkeää oli suorittaa sertifikaatti JavaScriptistä, CSS ja HTML -teknologioista. Myös vuoden työkokemus PHP-kielestä on eduksi. Voin siis kenelle vain suositella sertifikaattien suorittamista, niistä saatava hyöty on moninaista. Sen lisäksi että osoittaa omaa osaamistaan, niin myös oppii valtavasti valmistautuessa sertifikaattiin. Myös itse hallitsen selainten tuen 20 vuoden takaa, niin osaan tehdä kaikille älytelevisioille yhteensopivaa koodia. Kuvassa 3. ostamani ensimmäinen JavaScript-kirjani, jossa esitellään dynaaminen webbisivu alkuperäisessä muodossaan [3]. Netscapesta tulee itselleni aina mieleen kirjaston tietokone, jota sai käyttää vartin kirjojen haun lisäksi [4]. Myös lähes pyhä 30 vuoden takainen painos ’C-ohjelmointikieli’-kirjasta löytyy uudesta kirjahyllystäni.

Kuva 3. Tämän nuorena ostamani 2000 vuoden painoksen opit tulevat nyt tarpeeseen [7].
https://youtu.be/CMvFKDHh4WM

Vaikka sertifikaatin testissä kaikkea ei täydellisesti osaisikaan, niin tietää ainakin, että mitä kaikkea teknologioilla voi tehdä. Hieman tuli sellainen kuva, että Microsofti halusi avata esiriippuaan: samanlaisia kuolevaisia me kaikki ollaan, ottaa vain chillisti. Tentataan 1½ tuntia, jonka aikana todetaan, että on osa meitä. Ei paljoa poikkea jostain Mensan testistä. Tämä on asia jota itse toivoisin Suomen peruskoulutukseen; standardoituja testejä.

Uudet harrastukset

Jatkan aiemmin hyväksi toteamaani harrastusta käydä säännöllisesti kävelyllä. Oma painoni kivasti laski kesän aikana, kuten aiemminkin on käynyt. Nyt kun työmatkaa kävellen on 20 minuuttia suuntaansa, niin saa hyvin hyötyliikuntaa päivittäin. Auton jätin pois käytöstä, jolloin ei tule edes turhia kuluja siitä.

Uutena harrastuksena minulle suositeltiin kirjoja. Luin elämäni ensimmäisen novellini aiheestä Nenä [1]. Ehkä voisi muutenkin lisätä kirjallisuusharrastusta. Töissä saa niin paljon käyttää televisioita, että on hyvä saada jotain vastapaino sille. Itse suosittelin omaan lukupiiriini 1850 vuonna julkaistua 2000 vuoteen sijoittuvaa utopistista kirjaa [2].

Pros & Cons

Aina on hyvä punnita asioiden hyviä ja huonoja puolia. Parhaimpana puolena itse koen, että pääsen Tampereelle asumaan. Työtä en täältä ole aiemmin löytänyt, joten sikäli hyvä muutos. Täällä on enemmän kavereita ja tekemistä. Kavereita pääsee kyllä näkymään, mutta ei oikein kiinnosta ajaa sen takia monta tuntia suuntaansa.

Vaikka palkka nousee, niin nousee myös elinkustannuksetkin. Todella vaikea arvioida, että miten sitten loppujen lopuksi kustannukset menevät. Täten koen tämän melko neuraaliksi asiaksi. Mikä lasketaan pakolliseksi kuluksi ja mikä sitten elintasoa nostavaksi asiaksi, niin niiden määrittely on hyvin yksilöllistä. Joku voi kokea autoilun luksukseksi, maaseudulla se on valitettavaa välttämättömyyttä.

Huonoimpana muutoksena mielestäni on se, että asuminen ja moni muu asia on hieman kalliimpaa. Myös ihmiset ovat hektisempiä. Pitää myös löytää oma porukkansa, joka joidenkin mielestä voi olla huono asia. Kaupungissa on helppoa olla yksinäinen, mutta on se sitä myös pienemmällä paikkakunnalla. Itselleni hieman isompi kaupunki sopii uskoakseni hyvin.

PS. Test Drive 2 -pelin julkaiseella DSI:lla on yhteyttä mm. Stuntiin ja Need for Speed -sarjaan. Kaikki lähtee pienestä! Perusperiaate ei ole kuitenkaan muuttunut mihinkään, enemmänkin vain yksinkertaistunut ja suoraviivaistunut.

https://www.youtube.com/watch?v=n7s0G8hc5Bs

Aiemmin olen kuunnellut nettiradiona Kohinaa [6]. Kuitenkin kun ongelmia on ilmennyt kyseisessä kanavassa, niin olen siirynyt nykyään NoLife-radioon [5].

REFERENSSIT

[1] Nenä-Novelli, Nikolai Gogolin
[2] Wiki: Vuonna 2000
[3] Wiki: DHTML
[4] Wiki: Netscape Navigator
[5] NoLife-radio
[6] Kohina-radio
[7] CodePen: Any HTML Element Resize Event

Rakkaudesta koodiin ketterästi

Miten ohjelmoijan tulisi suhtautua omaan koodiinsa ja ohjelmointiin? Miten ohjelmointiin ja ohjelmoijiin tulisi suhtautua? Miten Tuppu suhtautuu ammattimaisen ohjelmistokehittäjän rooliin työelämässä? Onko asiakkaan tarpeet tärkeämpää kuin laadukas ja hyvä koodi? mitä on hyvä koodi? Kuinka monta ihmistä tarvitaan koodaamaan yhtä ohjelmaa? Miten tämä kaikki hallitaan?

Vesiputous

Itselleni on hyvin jäänyt mieleeni yksi kuvaaja, jonka suomalainen Visual Basic -kirja avasi erinomaisesti muiden asioiden ohella. En itse ole sitä löytänyt uudestaan, mutta erittäin hyvin mieleeni jäi kyseinen projektin eri vaiheisiin käytettävä aika piirakkadiagrammina. Kyseisessä kuvaajassa ohjelmoinnin osuus oli hyvin pieni eli vain n. 15 %:n siivu, jollaiseksi aikajakauma on käytännössä osoittautunut isoissa projekteissa. Seuraava humoristinen Suomen jääkiekon 1995 vuoden MM-voiton Ihanaa leijonat ihanaa karikatyyri muistuttaa nykyään perinteisestä ohjelmistoalan projektimallista eli vesiputousmallista [17].

Minkälainen nykyaikana olisi piirakkadiagrammi, jos ohjelmistokehittäjän työaika kuvattaisiin sillä? onko huuhata väittää, että ohjelmistokehittäjän työstä ohjelmoinnin osuus on vain pieni osa työtä. Mielestäni tämä vanha perinteisen projektimallin viisaus on unohtunut vanhojen oppien demonisoinnin myötä.

”Kuinka monta blondia vaaditaan vaihtamaan lamppu?
– Kaksi. Toinen pitää lampusta kiinni ja toinen pyörittää tuolia.”

Kukaan ei tietääkseni ole koskaan väittänyt, että ketterässä ohjelmistokehityksessä ei tarvitsisi suunnitella, määritellä ja testata ohjelmaa [3]. Kyse on vain siitä, että ketterässä ohjelmistokehityksessä sitä tulisi tehdä jatkuvasti, eikä vain painottaen projektin alkupäätä. Samoin kukaan ei tietääkseni ole väittänyt, että perinteisessä projektimallissa ei saa palata bumerangina vaiheissa taaksepäin.

”In the 1980s and early 1990s, there was a widespread view that the best way to achieve better software was through careful project planning, formalized quality assurance, the use of analysis and design methods supported by CASE tools, and controlled and rigorous software development processes. This view came from the software engineering community that was responsible for developing large, longlived software systems such as aerospace and government systems.

This software was developed by large teams working for different companies. Teams were often geographically dispersed and worked on the software for long periods of time. An example of this type of software is the control systems for a modern aircraft, which might take up to 10 years from initial specification to deployment. These plandriven approaches involve a significant overhead in planning, designing, and documenting the system. This overhead is justified when the work of multiple development teams has to be coordinated, when the system is a critical system, and when many different people will be involved in maintaining the software over its lifetime.” [12]

Hyvin suunniteltu on puoliksi tehtynä

Iso osa ohjelmoinnista on vain perinteistä iffittelyä eli suomeksi jossittelua, johon moni ohjelmoija kompastuu nokkeluuttaan, kun tekevät liian moni-mutkaisia kikkareita. Ehtolauseiden ongelma on siinä, että se edellyttää valtavaa haara- taikka polkukattavaa testausta joko manuaalisesti debuggerin kanssa tai sitten automatisoiduilla yksikkötesteillä.

Näitä asioita voidaan mallintaa perinteisellä vuokaaviolla, joka on ajalta ennen ohjelmistoalaa. Jos jotain ei vuokaaviolta löydy testauksessa, niin ohjelmaa ei oteta tuotantoon. Näin hieman pelkistäen, ohjelmien testaus on oma laaja kokonaisuutensa.

Kuva 2. Vuokaavio eli Flow Chart UML-tyyliin. [1]
Miksi näin ei sitten aina tehdä koko ohjelmalle? Kyse on hyvin suurelta osin siitä, että kattavan vuokaavion piirtäminen ja automaatiotestien tekeminen vievät valtavasti aikaa. Kyse ei ole siitä, ettäkö ei olisi olemassa menetelmiä niiden tekemiseen. Vielä kun tähän lisätään kattava määrittelytiedosto, niin ajankäytöllisesti ei enää ehditä kehittämään ohjelmaa. [12]

Yksi iso ongelma perinteisessä projektimallissa on jatkuvasti päivitettävät suunnitelmat. Puhumattakaan odotettavista muutoksista asiakkaan tarpeeseen, jota asiakas itsekään ei yleensä tiedä, vaan olettaa ohjelmistokehittäjien tietävän. Kuvassa 1. hahmoteltuna ongelma visuaaliseen muotoon.

Kuva 1. tyypillinen vesiputous Ganttin kaaviolla.

Projektimallin speksaus rajoittaa ohjelmointia, ketterässä kehityksessä on perimmiltään ihan eri filosofia. Projektimalli sopii hyvin esim. Olkiluoto 3 – ydinvoimalahankkeeseen tai muihin rakennusprojekteihin, joissa halutaan minimoida rakennusaika eri toimijoiden kesken. Ohjelmointi ei ole mitään pikakirjoittamiskilpailua, vaan muistuttaa enemmänkin blogikirjoittamista.

Kuva 2. Loppu tällaiselle 1000-luvun ohjelmistokehitykselle. [5]
Asia ymmärrettiin kunnolla vasta vuosituhannen vaihteen IT-kuplan aikaan, kun sijoittajien rahat olivat loppu ja ei tullut mitään tulosta. Oli pakko keksiä jokin muu parempi tapa tehdä ohjelmia, kehittää kokonaan uusi ajatusmalli tyhjästä. Yhteiskuntia, ohjelmia ja muita vastaavia monimutkaisia järjestelmiä ei vain osata kehittää ylhäältä alaspäin johdetulla viisivuotissuunnitelmalla. Moni on varmasti sitä mieltä, että teoriassa asiat voivat toimia optimaalisesti, mutta käytännössä asiat ovat niin kaaottisia, ettei kukaan osaa niitä kaikkia käsitellä helposti.

Työajanseuranta

Työajanseuranta on alasta riippumatta hyvin ärsyttävää. Jokaisella alalla varmasti hyvin ymmärretään, että ihminen ei paljoa ehdi tai pysy tekemään työpäivän aikana. Tätä varten ennen teollistumista haalittiin viholliskansoista orjia, jotka tekivät raskaita töitä. Nykyään jopa kaupan kassat korvataan automatisoiduilla järjestelmillä. Myös tietojärjestelmissä ihminen on suurin pullonkaula, eikä ohjelmointi ole tähän mitenkään poikkeus.

”You should plan on working 60 hours per week. The first 40 are for your employer. The remaining 20 are for you. During this remaining 20 hours you should be reading, practicing, learning, and otherwise enhancing your career.” [7]

Ohjelmoijan odotettava työajankesto on kaikista vaihtoehdoista mahdollisimman pessimistinen arvio. Sen jälkeen kyseisen arvion saa kertoa piillä. Tämä on odotettavissa oleva työaika. Tämän voisi myös sanoa niin, että työajasta vain 15 % kuluu ohjelmointiin. Ajankäytön ymmärtäminen on monelle todella vaikeaa, että miten paljon kaikenlaista on ja miten vähän saa aikaan.

Asiaa voidaan lähteä myös LoC-käsitteestä eli koodiriveistä. Jos ohjelmoijat kehittävät ohjelmaa kovalla tasaisella 100 rivin päivävauhdilla ja vuodessa on 200 työpäivää. Kun ohjelman koko on 100K riviä koodia, niin työaikaa ohjelman kehittämiseen kuluu 5 vuotta. Vastaava ohjelma 40K koodirivisenä 50 rivin päivävauhdilla valmistuisi vuoden etuajassa. Näin yhtenä perinteisenä tapana arvioida työaikaa, käytännössä ohjelma kasvaa 1 riviä päivässä projektin loppulla. Vertailuksi Lidlin SAP-pohjainen ERP maksoi 500 M€, työstettiin 7 vuotta ja tulos oli 0 riviä koodia valmiina [4]. Tämä jos mikä vakuuttaa itseni suunnitelmatalouden toimattomuudesta nykymenetelmin.

”I remember feeling so good about myself for the long hours I was working. I remember feeling dedicated. I remember thinking that working at 3 am is what serious professionals do. How wrong I was!” [7]

Koodirivien laskenta on monien mielestä erittäin huono tapa tehdä työajan seurantaan, mutta oikein käytettynä kuitenkin paras tunnettu menetelmä. Esimerkiksi ammattikorkeakoulun opinnäytetyöni oli alle 10K riviä C#-koodia, jota myöhemmin laajensin mm. maanjäristyslaskemilla. Koodirivien arviointi vaatii vahvaa ymmärrystä ohjelmoinnista, joten ehkä sen takia turvaudutaan mm. tuntikirjanpitoon.

Tunteja seurataan myös laskutuksen takia, usein ohjelmia myydään joko kiinteähintaisina projekteina taikka sitten tunteina. Kyse on tästä markkinataloudesta, jonka opit eivät erityisen hyvin sovellu immateriaalisten ohjelmien myymiseen. Tämä herkästi johtaa samanlaisiin ongelmiin kuin suunnitelmatalouden tuotesuunnitelussa.

Hyvä koodi

Itse aikoinaan kun ohjelmointia aloitin, niin olin hyvin huolissani omasta osaamisestani. Jotenkin kuvittelin, että ohjelmoinnissa olisi jokin ns. viisasten kivi, jolla kaikki asiat ratkeaa. Kuitenkin asioita ja tapoja on oppinut enemmän ja enemmän, eikä vielä sitä kaiken kullaksi muuttavaa juttua ole tullut vastaan. Ei niin kaavioista, speksauksesta, työkaluista, olio-ohjelmoinnista, opeista, sertifikaateista kuin muistakaan alaan liittyvistä asioita saanut kaiken tekevää. Olen kuitenkin saanut huomata, että olen oppinut aiempaan nähden. Yleensä vaihtoehtojen hyvät ja huonot puolet oppii tiedostamaan, jolloin osaa valikoida tilanteeseen paremman vaihtoehdon.

”We are uncovering better ways of developing
software by doing it and helping others do it.” [3]

Olen ymmärtänyt, että ykkösien ja nollien oikein järjestelyä voi tehdä monella tavalla. Mikään niistä tavoista ei välttämättä ole täysin oikea tai väärä. Jos on rajapinta ulkopuoliselle taholle, portti tai toisen ohjelmoijan tekemä kirjasto, niin se pakottaa tekemään asiat samoin. Tällöin on hyvä, jos asiasta on dokumentaatiota, koska itse ei voi asiaa ratkaista haluamallaan tavalla.

Hyvä koodi on kuitenkin arvokasta, jota en itsekään aina ole ymmärtänyt [9]. En ole aina tiennyt mitä on ERP eli tuotannonohjausjärjestelmä, mutta olen niitä ohjelmoinut. Usein tulee vähäteltyä oman koodinsa arvoa, ei ymmärrä sen olevan valtavien rahasummien arvoista. Yksi Like-nappi voi olla Facebookille miljardien dollarien arvoinen, se tuo käyttäjille valtavasti hyötyä. Samoin Googlen hakukoneen etusivulle ei ole paljon muuta sisältöä kuin vain yksi tekstikenttä, mutta todennäköisesti silti se on paljon parempi kuin mikään muu monimutkaisempi ratkaisu. Koodin arvo on laskennallisesti tulo käyttöasteesta ja loppukäyttäjän siitä saamasta lisähyödystä. Käyttämätön ja asiakasta hyödyttämätön koodi on arvotonta.

Aivan samoin kuin koodirivien määrän laskeminen on ongelmallista työajan seurantana, niin ihan samoin koodin arvon laskeminen työtunteina on typerää. Usein yksinkertaisempi voi olla jopa arvokkaampi, siinä on vähemmän hukkaa ja turhaa roskaa. Etenkin käytettävyyden kannalta yksinkertainen ja selkeä on usein parempi, myös ohjelmakoodin ylläpidettävyyden kannalta yksinkertainen ja selkeä on yleensä parempi. Perinteisen mallin mukaisesti loppuvaiheessa huomatun asian korjaaminen voi olla työmääränä 50 – 200 kertaa isompi kuin projektin alkuvaiheessa [2]. Siis alkuperäisen yhden työpäivän työstä tulee loppuvaiheessa jopa yhden työvuoden lisätyö. Ratkaisuna tähän yritettiin siirtää suunnittelua mahdollisimman etupainotteiseksi. Oikeampi ratkaisu oli lisätä iteraatiota, eikä yrittää saavuttaa ”hole-in-one”.

Testaus

Ohjelmointi itsessään ei ole paljoa muuttunut 50 vuoden aikana. Ohjelmat perustuvat samalle strukturaaliselle paradigmalle, jossa konekieliset hyppylauseet on korvattu ennakolta sovituilla ehtolauseilla ja silmukoilla. Jos hypätää taaksepäin, niin  on silmukka. Vastaavasti koodissa hypätään eteenpäin, kun ehtolause ei ole loogisesti totta. Muuten koodia mennä riveittäin eteenpäin Yksinkertainen perusidea, joka ei ole muuttunut paljoakaan, ohjelmointi on ihan samanlaista nykyään perusperiaatteiltaan kuin ennemminkin.

Strukturaalinen/proseduraalinen ohjelmointiparadigma on jopa uusin lajissaan, olio-ohjelmointi ja funktionaalinen ohjelmointi ovat sitä vanhenmpia paradigmoja. Olio-ohjelmointi kuitenkin saavutti valtavaa suosiota 1990-luvulla C++:n myötä. Samoin Lispin seuraaja Clojure on hyvin vahvasti esillä etenkin jouhtuen rinnakkaisuuden merkityksen lisääntymisestä, joskaan ei tähän asti koskaan ole ollut erityisen suosittu tapa tehdä ohjelmia. Ajatusmallina funktionaalinen ohjelmointi on kaikista vanhin eli ensimmäinen paradigmoista. Myös Microsofti on kehittänyt F#-ohjelmointikielen, joka on funktionaalinen ohjelmointikieli. Myös ihana C-kieli eli ”rakenteellinen konekieli” käyttää hyvin vahvasta strukturaalisesta periaatteesta huolimatta funktioita osana koodin structurointia/encapsulointia [14], joten melkein kaikki ohjelmointikielet käyttävät kaikkia paradigmoja mahdollisimman paljon hyödyksi.

”If I took a computer programmer from 1966 forward in time to 2016 and put her in front of my MacBook running IntelliJ and showed her Java, she might need 24 hours to recover from the shock. But then she would be able to write the code. Java just isn’t that different from C, or even from Fortran.” [8]

Miten mordernin kannettavan esittelisi ohjelmoijalle, joka on tehnyt ohjelmia aikana ennen mikropiirejä: ”Tässä kannettavassa on triljoonan tavun SSD-asema massatiedolle, 16 miljardin tavun keskusmuisti muuttujille ja ohjelmakoodille, välimuistia miljoonia tavuja ja sitten rekistereitä 16 kappaletta 64 bittisiin eli 18 446 744 073 709 551 616 kokonaislukuun asti. Lisäksi suorittaa useampaa säiettä kerralla, kun ei ole muuta käyttöä miljerdeille transistoreille keksitty.”

Moni asia on kuitenkin muuttunut valtavasti, nykyinen ohjelmistokehitys ei kuitenkaan ole samanlaista kuin aiemmin. Työkalut ja menetelmät ovat muuttuneet valtavasti. Tämä on kuitenkin yksi ketterän kehityksen periaatteista, usko tekniikoihin ja menetelmiin ei ole syy tai ratkaisu paremmalle ohjelmistokehitykselle. Ohjelmointi ei edes ole muuttunut juurikaan, ohjelmat vain ovat suurempia kuin koskaan aiemmin.

”And if I transported you back to 1966 and showed you how to write and edit PDP-8 code by punching paper tape on a 10 character per second teletype, you might need 24 hours to recover from the disappointment. But then you would be able to write the code. The code just hasn’t changed that much.” [8]

Tämä tuo erittäin paljon haastetta testaukselle. Aiemmin testauksen rajoitteena oli ohjelmien ja laitteiden suorituskyky. Nyt potentiaalia ja mahdollisuuksia on paljon enemmän kuin koskaan aiemmin. Ollaan tultu siihen pisteeseen, että edes laitteiden kehityksen jatkuva pienentyminen kohtaa fyysiset rajat. Seuraavassa videossa olevan raketin ohjausyksikössä ei ollut yhtäkään transistoria, mutta silti se voitiin toteuttaa.

Video. Rakettien kehittely on ketterää [26]

Testaus on todella vaikeaa tehdä kattavasti, ohjelman haarautuminen johtaa ääretöntä lähentelevään määrään testejä koodin täydellisesesti kattavassa testauksessa. Rivikattavan testauksen voi saavuttaa, sitä yleensä pidetään miniminä, jonka saavuttaminen ei pitäisi olla mitenkään mahdotonta. Jokainen ohjelmaan kuuluva koodirivi tulisi testata.

Ongelma testauksessa myös on se, että milloin testi on ok. Ohjelmakoodi voi olla validia, ilman sitä se ei edes käänny [14]. Ajon aikana ohjelma kaatuu, niin silloin se ei toimi. Nämä asiat voidaan helposti testata. Näitä feilauksia tulee jatkuvasti, se on ihan normaali osa ohjelmakehitystä. Ohjelman todistaminen toimivaksi on jopa mahdollista, mutta ohjelman toimimattomuuden todistaminen on vaikeampaa.

Kuitenkin kun urallaan tähtää Britanniaan, niin voi osua Kuuhun. Iteäni Wernher von Braun on toiminut tietynlaisena idolinani omassa elämässäni. En ole koskaan kokenut suomalaista yhteiskuntaa omakseni, vaan olen halunnut muuttaa mieluummin Alankomaihin tai Belgiaan – eettisesti kolme-neljä sukupolvea suomalaista yhteiskuntaa edellä olevaan yhteiskuntaan [16]. Suomessa parasta on koulutusjärjestelmä, jota nykyiset hallituspuolueet romuttavat. Kokoomusta itse luulin sivistyspuolueeksi, mutta se on ehkä kaikista pahin junttipuolue.

Wernher Magnus Maximilian Freiherr von Braun (March 23, 1912 – June 16, 1977) was a German (and, later, American) aerospace engineer and space architect. He was the leading figure in the development of rocket technology in Germany and the father of rocket technology and space science in the United States.” [13]

Mielestäni Warner von Braun toimii hyvänä motivaattorina omalle uralle, hän on aloittanut koko uransa tyhjästä pienestä rakettiharrastelusta. Vaikka Suomessa ei ole itselleni mitään syytä olla, tai ei ole mitään syytä tukea tätä yhteiskuntajärjestelmää, niin silti kannattaa tähdätä korkealle ja yrittää eteenpäin, kun ei muuta voi. Humanismi, aatteet ja yhteiskuntajärjestelmät muuttuvat, mannertevälisen ohjuksen tekniikka säilyy. Eikö ole valtavaa ammattillista ylpeyttä pointtaava referenssi, että omana pomona on ollut seuraavanlainen kotoa kadulle heitetty tuleva poliitikko,  jonka opiskelupaikka evättiin tuntemattoman(?) juutalaisen toimesta, jonka kohtalo oli todistaa miljoonien juutalaisten näännytettiin hengiltä rangaistuksena virheestä. Kuitenkin on silti tullut hyvin toimeen hänen kanssaan ketterillä menetelmillä, vaikka oli pitkävihainen persoona? ”Sinähän halusit huippuälykkään pomon [17]?” [15, 21]

Hitler oli paljon edellä aikaansa. Hän käytti älykkyyttään ja lahjojaan politiikan popularisointiin. Ehkä hänellä olisi ollut parempaa annettavaa taiteessa, ehkä ei. Ehkä hän oli vain monta sukupolvea muita edellä.

https://www.youtube.com/watch?v=lkqtQ61k58E

https://www.youtube.com/watch?v=oliOWcS8254

Edellisten videoiden tapahtumat jakavat hyvin vahvasti ihmisten mielipiteitä, eikä niistä useinkaan osata keskustella asiallisesti, vaikka koulutettuna ihmisisenä ainakin minun pitäisi kyetä siihen [24]. Ei kannata tehdä niin kuin minä; että menee sönköttämään syntyperäisellä – joskin belgiassa asuneelle – huonolla englannilla sitä, että miksi Suomi oli sodassa Venäjään vastaan. Sama kuin menisi arabeille puhumaan olutharrastuksistaan.

Seuraavassa videossa on ranskalaisten näkemys lastenohjelmassa vajaan sadan vuoden eli 3 – 4 sukupolven takaisiin tapahtumiin. Kuka lukee kirjoja, Hitlerin Taisteluani? Amerikkalaisen selostajan juttua äänestä päätellen leikattu ydinpommin kohdalta, muutenkin tätä sarjaa vähä sensuroitu. Viimeistä jaksoa en muista nähneeni lapsena Suomessa, hebreankielisessä oli sensuroitu pois ristiä näyttävä kohta. Protip: Seuraavan jakson lopun katsomisen jälkeen on hyvä katsoa koko jakso läpi uudestaan kokonaan.

https://youtu.be/yTdXWT8llIQ?t=1205

Käytettävyys on myös yksi iso osa testausta. Tämä osio on ehkäpä vaikeinta, kun ohjelmistokehittäjät itse hallitsevat oman ohjelman toiminnan ja tulevat sokeiksi käytettävyydelle. Tyypillinen sanonta ohjelmistoalalla on: ”Se ei ole bugi, se on ominaisuus.” Toisen henkilön näkymys on todella tärkeää, jotta tietää milloin ohjelma ei toimi oikein.

Principles behind the Agile Manifesto

We follow these principles:Our highest priority is to satisfy the customer
through early and continuous delivery
of valuable software.
Welcome changing requirements, even late in
development. Agile processes harness change for
the customer’s competitive advantage.

Deliver working software frequently, from a
couple of weeks to a couple of months, with a
preference to the shorter timescale.

Business people and developers must work
together daily throughout the project.

Build projects around motivated individuals.
Give them the environment and support they need,
and trust them to get the job done.

The most efficient and effective method of
conveying information to and within a development
team is face-to-face conversation.

Working software is the primary measure of progress.

Agile processes promote sustainable development.
The sponsors, developers, and users should be able
to maintain a constant pace indefinitely.

Continuous attention to technical excellence
and good design enhances agility.

Simplicity–the art of maximizing the amount
of work not done–is essential.

The best architectures, requirements, and designs
emerge from self-organizing teams.

At regular intervals, the team reflects on how
to become more effective, then tunes and adjusts
its behavior accordingly. [5]

Seuraavat kaksi 1930-luvun opetusvideota antavat mielestäni hyvän kuvan, että minkälaista ketterän kehityksen tulisi olla. On myös tullut selväksi, että ohjelmistoprojektien hallinnan  tulee sopeutua tosimaailmaan, kun sitä ei voi muuttaa. Sen lisäksi että videot muistuttavat tyypillistä onnistunutta ohjelmistokehitystä; ketteryyden nimenomaan kuuluu olla tällaista.

Olisi hyvä, jos nykyaikana tehtäisiin vastaava ketterän ohjelmistokehityksen opettamiseksi. Jousituksen kehittäminen tyhjästä on niin monimutkainen asia, että se on hyvin verrannollinen tyypilliseen ohjelmistokehityksen haastavuuteen. Tyypillisesti ohjelmoitavat ohjelmat ovat aivan eri alaa kuin oma koulutus, joten myös sikäli kuvastaa täydellisesti ohjelmistokehitystä.

https://www.youtube.com/watch?v=8PQAWYvDKVg

https://www.youtube.com/watch?v=GW__Gzkk4G0

Jos seuraavia videoita katsoo, niin varmasti herää ajatuksia. Itse pidän seuraavan videon yksinkertaisesta ja hauskasta tavasta kertoa rungon suunnittelusta. Toisessa videossa korisuunnitteluun osallistunut sotilaskapteeni laittaa itsensä testiin. Aiheeseen liittyen mm. CAD eli tietokoneavusteinen suunnittelu on tehnyt jotain hyvääkin korisuunntteluun liittyen. Pakko myös sanoa, että kolmannen videon 1950-luvun auto on paljon tyylikkäämpi kuin uudempi. Nykyään kori ja runko ovat sama asia, kun suunnittelutavat ovat kehittyneet.

https://www.youtube.com/watch?v=ktU_nLgfRkU

https://youtu.be/Wh2PSkCCa8s?t=8m23s

Ohjelmistokehityksen tulisi edetä samoin kuin auto iteroi omia reittejään. Jousitusjärjestelmä on kuin projektinhallinta.  Kukaan ei voi etukäteen tietää, että minkälainen matka tulee olemaan, eikä näin saisi ajatellekaan. Ohjelmistoa kehittävät ihmiset, joten ohjelmistokehityksen tulee mukautua vallitseviin olosuhteisiin. Ei kukaan syntyessäänkään tiedä oman elämänsä polkuja, samoin ei vuosia kestävän ohjelmistokehityksen alkuvaiheessa voida  tietää tulevaa via dolo rosoa.

Ohjelmistoa voi olla kehittämässä harjoittelija, joskus sitä voi olla kehittämässä iso lauma ohjelmistokehittäjiä. Esimerkiksi Facebookin alku oli opiskelijoiden sivustossa, jossa haluttiin stalkata opiskelijanaisia. Samaa järjestelmää tiedustelupalvelut stasista alkaen ovat yrittäneet kehittää projektina, mutta ei ole onnistunut. Nyt Facebookia kehittää valtava miljardien dollarien kehitysorganisaatio. Järjestelmä on uskomattoman yksinkertainen, kavereiden lisääminen on monimutkaisin asia kyseisessä palvelussa. Moni olisi voinut kuvitella, että tietokantojen ja järjestelmien suorituskyky ei koskaan voisi riittää miljardien ihmisten kattavaan tietojärjestelmään, mutta niin se vain toteutui PHP-kielellä opiskelijoiden tekemänä.

Ohjelmistoarkkitehtuuri

Ehkäpä yksi vähemmän hyvin tiedossa oleva asia aloitteleville ohjelmoijille on ohjelmiston arkkitehtuuri. Tämä on asia, johon itse kohtasin ensimmäistä isompaa ohjelmaani eli Siilomitoitusohjelmaa tehdessäni.

Minä sain hyvän neuvon Ohjelmointiputkan irkkikanavalta, kun asian kysyin omin sanoin. Neuvo oli: encapsuloi koodia, jolloin sen rakennetta voi myöhemmin itse tai joku muu muokata eli refactoroida. Mielestäni tämä neuvo oli hyvin tärkeä, itsestäänselvyys kokeneemmille.

Ohjelma siis pitää jakaa jotenkin pienempiin osiin: funktioihin, luokkiin ja muihin osiin. Näillä osilla ei ole nykyisen käsitykseni mukaan niinkään merkitystä, kunhan vain ohjelman pilkkoo luettavaksi.

Itse ihmettelin sitä, mutta nykyään se on yhtä itsestään selvää kuin artikkelin jakaminen lukuihin, kappaleisiin, virkkeisiin ja lauseisiin. Sitä vain pitää tehdä, rutiiniksi se tulee kokemuksesta.

Arkkitehtuurin kasvaessa tulee vain lisäkerroksia. Kun pohja ja pienet palat ovat helpommin pureksittavia, niin voi muokata arkkitehtuuria. Seuraavassa videossa oikea kaupunkisunnittelija konsultoi peliä SimCity 2000.

Moni ohjelmistoprojekti epäonnistuu kuin edellisessä pelissä moni pelaaja. Jos aluksi ei nimeä muuttujia kuvaavasti ja muutenkin tee pieniä perusteita koodissa hyvin, niin siitä seuraavat ongelmat voivat tulla vastaan vuosien päästä liian isona muurina – projektin kaatavina.

Siisti koodari

Erittäin stereotypisena clean coderina pidän Absentilla työskennellyttä Esko Jokista, joka on minua eniten ystävällisesti alaan avustanut työkaverini. Jotenkin ikimuistoiseksi käsitteeksi jäi Hubba Bubba ja seuraava kappale vahvistaa sitä, vaikken tiedä mistä se johtuu.

Näkemys alasta ei välttämättä ole lopullinen, vaan on muuttunut ja odotettavasti muuttuu vastaisuudessa. Itse vahvalla teknillisellä koulutus- ja työtaustallani voin yhtyä siihen näkemykseen, että ohjelmointia tulisi opettaa mieluummin taidekoulussa kuin teknillisessä yliopistossa. Muutos olisi niin monimutkainen, iso ja haastava jo kulttuurillisesti, että se tulisi tehdä ketterästi projekti-mallin sijaan, jotta muutos voitaisiin toteuttaa onnistuneesti.

Naisia pidettiin hyvinä ohjelmoijina, heillä nähtiin olevan paljon oikeita ominaisuuksia alaan liittyen. Ehkä se näkemys oli oikea, miehet ovat pilanneet ohjelmistokehityksen. Kuvan 4. mukaisesti on olemassa hyviä naisia ohjelmoijina, mutta liian vähän.

Kuva 4. Ei tarvitse olla ruma, jotta voi olla hyvä ohjelmoimaan: Eivät ole toisiaan poissulkevia ominaisuuksia.

Ohjelmointi ei ole niin teknistä kuin itse luulin nuorempana, kun unelmoin saavani työnimikkeekseni: ”ohjelmoija”. Unelmani toteutui, nykyään en pidä omaa unelmaani mitenkään yliampuvana. Lapsena monilla vain on heikko itsetunto, pelkäsin osoittaa omaa osaamistaan ja turhaan salaili kiinnostuksiaan. Toivottavasti viimeistä ei moni muu ohjelmoinnista kiinnostunut tekisi peruskoulussa.

Aivan samoin kuin ihmiskielien opettelussa luulin, että en ymmärtänyt jotain oikein kielen logiikasta, niin sama ilmiö toistuu itselläni ohjelmoinnissa jatkuvasti ilmeisempänä. Mielestäni pidän sitä merkkinä siitä, että ymmärtää käytetyn asian rajoitteet. Aina ei ole niin väliä, että mitä tekee, vaan että miten tekee/sanoo/kirjoittaa/koodaa.

Tulevaisuus kautta historian

Tässä blogiartikkelissani käsittelin hyvin monipuolisesti projektin ohjelmistokehityksen hallintaa. Minä kirjoitan blogiani ketterästi, olen niin jo tehnyt kaksi vuotta. Alkujaan työttömänä tätä blogiani aloittaessani mietin, että mihin tämä kaikki johtaa. En vain kyennyt hahmottamaan sitä, joten päätin suosiolla mennä ketterällä menetelmällä, aloittaen kertomaan Rooman valtakunnan Leipää ja Sirkuhupeja -filosofiasta [10]. Mielestäni se oli hyvä alku blogilleni, sisältäen todella paljon sitä, jota itse ajattelin blogini sisältävän.

Miten siis mielestäni ohjelmistokehitystä tulisi opettaa? Koska mussutan ja kritisoin, niin minä koen velvollisuudeksi selittää paremman mallin myös siihen. Perinteinen projektimalli on todella hyvä tapa opettaa teoriassa, joskin se on käytännössä virheellinen. Tämä on todella pelottavaa, kun ajattelee, että on aikoinaan opetettu väärää tapaa vain sen takia, että ei osattu tai haluttu kertoa muuta.

Kuva 5. Aluksi ohjelmointi voi vaikuttaa hyvinkin selkeältä, mutta jossain vaiheessa se muuttuu säätämiseksi.

Mielestäni oikea tapa olisi se, että ohjelmistoalan opiskelijat laitettaisiin tekemään projektia eri alan opiskelijoiden kanssa, kuten vaikkapa helpompina vaihtoehtoina rakennus- tai konealan insinööriopiskelijoiden kanssa. Nämä projektit voisivat kestää vuosia, jolloin tulisi todellista kuvaa ohjelmistoalan projekteista/prosesseista. Voisivat tutkijoiden kammioissa loikoilevat professoritkin hahmottaa, että mitä todellinen miljoonan koodirivin ohjelmistoprojekti on kampusalueen ulkopuolella. Näin opetuksen taso nousisi ketterän kehityksen myötä oppilaitoksissa. Kuvassa 7. ohjelmistokehitys esiteltynä ei-projekti -mallilla.

Kuva 7. Ohjelmistokehityksen ketterä menetelmä kuvattuna Ganttin kaaviolla, yhden ohjelmistokehittäjän näkökulmasta.

On myös hyvä ymmärtää, että ohjelmakoodi ei yksinkertaisesti ole suoraan kierrätettävää eri projektien välillä, ellei sitä ole tehty sellaiseksi. Tälläinen koodi on geneeristä koodia, joka voi olla kirjasto. Tällöin se soveltuu tiettyyn moneen yleiseen tarkoitukseen hyvin, mutta ei tiettyyn haluttuun tarkoitukseen. Olen kuvaillut sitä seuraavalla itse keksimälläni Kuvalla 7. Yksinkertaisuus on tapa tehdä asia helpoksi ja nopeaksi. Geneerisyys on tapa tehdä asia moneen tilanteeseen sopivaksi. Toiminallisuus on tapa tehdä ohjelma kattavasti. Näitä kaikkia ei voi helposti saavuttaa, joskaan en väitä sen olevan mahdotonta esim. neuroverkoilla. Unix, Paint ja Passeli ovat kaikki lähellä keskusta ja täydellisesti(?) onnistuneita, mutta silti täysin erillään toisistaan omissa optimaalisissa kategorioissaan.

Kuva 7. Venn Diagrammi ohjelman tarpeista.

Mitä sitten on tulevaisuus, niin en osaa vastata. Itse olen hyvin tuore tapaus ohjelmistoalalla, joka itsessään on hyvin tuore ala. Mahdollisesti itselläni on paljon annettavaa, jotain aiemmin huomaamatonta. Ehkä minusta voi vielä tulla tekniikan tohtori, ehkä ei. Itse luotan jatkuvaan kehitykseen, samaan vahvuuteen kuin 390 jkr. Vegetius totesi Rooman valtakunnan vahvuudeksi.

”We find that the Romans owed the conquest of the world to no other cause than continual military training, exact observance of discipline in their camps and unwearied cultivation of the other arts of war.” – Vegetius, Länsi-Rooma, 390 jkr. [11]

Syyllisten etsintä

Projekteilla on tyypillistä ajautua tilanteeseen, jossa ollaan napit vastakkain. Perinteisellä vesiputousmallilla tilanne on katastrofaalinen, etenkin kun myyjänä on ollut liian vuolas puhuja.

Olen henkilökohtaisesti kuullut yhden Suomen isoimman ohjelmistotalon harjoittelijoilla teetetyn tuotteen perimmäiset ongelmat, kun ihmettelin sen käsittämättömän naurettavia puutteita mm. sisäänkirjautumis-näkymässä. Ketterässä menetelmässä ei ole mitään salattavaa asiakkaalta, vaan työt ovat sovitusti aina valmiita ja käytössä. Epäonnistumisen pelkoa ei pitäisi olla, tilanne on juridisesti huomattavati helpompi pelastaa. Tämä jos minkä pitäisi olla sekä asiakkaan, että kaikkien etu. ”kaikkea sanomaasi <määrittelemääsi> voidaan käyttää oikeudessa sinua vastaan.”

Mielestäni aikalaisen dokumentaation sana painaa niin paljon, että jopa jälkeläisten analyysit historiasta jäävät jälkeen. Itse vertaisin ohjelmistokehittäjän työtä Rooman valtakunnan legionalaiseen, molemmat arvostettuja henkilöitä, kykeneviä toimimaan tilanteen mukaan parhaimmalla mahdollisella tavalla. Parhaansa tekee, niin se riittää: luotto siihen on täydellistä. Sodat ovat hyvin ja kattavasti dokumentoituja, kuten seuraavasta videosta voi huomata.

Rooma oli vahva suurvalta, joka perustui moniin yksinkertaisiin vahvuuksiin. Kristityt kritisoivat kyseistä järjestelmää, mutta silti eivät koskaan kyenneet selittämään sen hajoamista, saati sitten Rooman valtakunnan vahvuuksia. Valtakunta perustui yleisesti hyviksi todetuille yksinkertaisille periaatteille, ei projektimalliin. Ketterä ohjelmisokehitys on kuin Vegetiuksen oppien lukemista; virheistä ja onnistumisista oppimista ilman parempaa tietoa. Ketteryys on siis mielestäni hieman sama kuin yritys & erehdys -menetelmä. [11]

”We cannot now expect to find a man to teach what he never learned himself. The only method, therefore, that remains of recovering the ancient customs is by books, and by consulting the old historians. But they are of little service to us in this respect, as they only relate the exploits and events of wars, and take no notice of the objects of our present enquiries, which they considered as universally known.” – Vegetius, Länsi-Rooma, 390 jkr. [11]

FURTHERIA

Suomen paras räp-artisti Pyhimys on omien sanojensa mukaan osoittanut huipputason älykkyyttä Mensan testissä eli fluidia älykkyyttä mittaavassa kuviopäättelytestissä. [18] Sinällään se ei ole mitenkään hätkähdyttävää [20]. Kieltolakeja eli päihteiden muuttamista rikolliseksi ei uskoakseni voi moni muu kannattaa kuin tavalla tai toisella tyhmät ja rikolliset, joskaan en itse kannata mm. kannabiksen suoranaista laillistamista.

”Mensan toiminnan tarkoituksena on älykkyyden tunnistaminen ja kehittäminen ihmisyyden hyväksi, älykkyystutkimuksen tukeminen sekä älyllisen ja sosiaalisen ympäristön tarjoaminen jäsenilleen.” [19]

Ollut taas puhetta Suomen rikkomasta vapaan liikkuvuuden -sopimuksesta. Eikö YLE voisi vain myöntää, että Suomi selvästi rikkoo EU:n kanssa tehtyä sopimusta. Kyse on rahasta ja protectionalismista, jossa ylläpidetään myyttiä suomalaisten huonoudesta muihin kansoihin nähden alkoholinkulutuksen suhteen. Vaihteeksi Belgian Brysselissä osataan paremmin tehdä päätöksiä kuin Suomessa, yksi syy miksi itseäni ärsyttää olla Suomessa.  [22, 23]

Eikö poliittiset päättäjät pysty antamaan yhtään parempaa kuvaa Suomesta ulkomaille, tai edes omaan maahan? ”Suomalaiset eivät ole alkoholikansaa ollenkaan. Näytetään niille siellä Brysselissä, pysytään lujana!” Että morjes vaan taas. Älkääkö tehkö niin kuin minä, että tilaan pahvilaatikollisen jotain kirsikkaolutta Belgiasta, se kirsikka-colalle maistuva olut on sentään yksi parhaimpia siitä hedelmäsarjasta [25].

Kuva 8. Tällaista sitä joutuu kokeilemaan Untappediin harrastuneisuuden nimissä, sain taas badgen viidennestä hedelmäoluesta.

Eiköhän kohta tämä artikkelin Definiton of Done täyty, kun on jo yli 200 versiota versiohallinnassa? Ei tämä yhtään paremmaksi muutu isommaksi kasvattamalla, päinvastoin.

REFERENSSIT

[1] IT Mayer: UML Activity Diagram
[2] Wiki: Vesiputousmalli
[3] Agile Manifesto
[4] Kauppalehti: Lidl panee jäihin 7 vuotta valmistellun hankkeen – maksanut jo 500 miljoonaa
[5] Robert C. Martin & Micah Martin: Agile Principles Patterns and Practices in C# (PDF)
[6] Robert C. Martin: Clean Code (PDF)
[7] Robert C. Martin: Clean Coder (PDF)
[8] Robert C. Martin: Clean Architecture (PDF)
[9] Portfolioni: autopelin C/C++-lähdekoodit
[10] Tuppu.fi: Panem et circenses
[11] Vegetius: De Re Militari
[12] Software Engineering Somerville (PDF)
[13] Wiki: Werner von Braun
[14] Tuppu.fi: C-kielen ihanuus
[15] IL: Natsit olivat huippuälykkäitä
[16] Sudio55: Tältä Suomi voi näyttää 2050-luvulla
[17] Tuppu.fi: Ohjelmistoala ei hyväksy perinteistä projektimallia
[18] Ruutu: Pyhimys Mensan testissä
[19] Suomen Mensa: Mikä on Mensa?
[20] Psychology Guide Online: 7 Habits of People with High IQ
[21] Tekniikka & Talous: Hitlerin Kolmas valtakunta pyöri ”natsipillerien” voimalla – romahti kun Pervitin-tehtaat pommitettiin maan tasalle
[22] YLE: Analisointia Suomen alkoholisekoilusta
[23] Tuppu.fi: Viinaralli
[24] Tuppu.fi: Argumentointivirhe
[25] Beer of Belgium: Kutsulinkki
[26] SpaceX