Barnesikring av Internett

Jeg har tenkt på hvordan man kan gjøre nettet mindre åpent. Det finnes løsninger man kan ta i bruk, blant annet OpenDNS Family Shield. Jeg har ikke testet denne tjenesten men det kan jo du gjøre. Du kan ta kontakt med din nettleverandør for å spørre om de kan sette din DNS (navneserveren som bytter ut www.adresse.noe med en IP-adresse). hos dem til denne eller en annen, eller du kan endre DNS i leseren på hver maskin men da må du også sørge for at brukeren ikke kan installere en ny nettleser, pluss at jeg er litt usikker på oppsett som sikrer at barna ikke bare kan endre det til en annen DNS helt selv. Lenken over er til hvordan man gjør dette i Chrome som jeg bruker. Avhengig av hvilket operativsystem du har kan du gjøre innstillinger for en bruker barnet eller barna bruker slik at de ikke kan installere noe uten at du godkjenner det med et systempassord eller installerer det for dem.

Det er ikke sikkert dette sikrer din maskin godt nok. Finner barna (som nevnt) ut hvordan de kan endre DNS så er de tilbake på den åpne weben. Og det er fullt mulig at de klarer å få tak i fildelingsnettverk, selv om jeg mener disse må installere programvare. Jeg har tenkt litt på «hvitlisting«, spesielt for skoler. Det kunne ha vært en jobb å hvitliste og indeksere manuelt for barne- og ungdomsskoler, for å være så sikker som mulig på at innhold av uønsket art ikke ble gjort tilgjengelig.

Hvordan begrepene innen IT kan være problematiske – hva er egentlig en tjeneste?

Som IT-konsulent har jeg jobbet med «tjenesteutvikling» og studiene mine var proppfulle av forskjellige bruk av ordet «tjeneste» eller engelsk «service». Senere meldte jeg meg en kort tid på en masterutdanning et annet sted enn der hvor jeg endte opp med å ta mastergrad og jeg havnet i en konflikt med noen medstudenter rundt hva en «tjeneste» var. Jeg har også sett på med interesse fordi en jeg møtte og kjente litt for lenge siden har vært involvert i noe som heter «tjenestedesign».

Men «tjenestedesign» og «tjenesteutvikling» er to helt forskjellige ting. Tjenestedesign ser på tjenester som noe en bruker av et slag interagerer mot. «Tjenesteutvikling» er egentlig semantiske tekniske tjenester. Om du bruker en app på mobilen for å sjekke været kan det være man som bruker tenker på dette som en værtjeneste. Men en tjenesteutvikler vil tenke på det som ligger bak – en semantisk tjeneste som mottar kommandoer og returnerer data.

Sjekker du været i en app for vær vil du kanskje klikke på stedet ditt og langtidsvarsel og du vil få opp en visuell representasjon av langtidsvarselet der hvor du ønsker et langtidsvarsel. Men en teknisk tjeneste benyttes gjerne i bakgrunnen. Denne tjenesten kaller man et API eller et Application Programming Interface. Det er gjerne en server som tar i mot et «kall» som du på et eller annet vis sender en forespørsel til som noe som «gi meg langtidsvarselet for Bergen fra i dag» og som returnerer strukturerte data på en eller annen form semantisk.

Det kan være en ide å utvide begrepet «tjenesteutvikler», som også kalles «back end utvikler» om man søker folk (da får man ikke misforståelsen) som «semantisk tjenesteutvikler» og å fortelle at man utvikler en semantisk tjeneste heller enn å si at man utvikler en tjeneste fra et teknisk perspektiv.

Et eksempel på en semantisk tjeneste for vær kan se slik ut om det er HTTP som er grensesnittet og dataformatet er JSON:

HTTP forespørsel kan se sånn ut: GET http://www.perandersen.no/vaer/langtid/bergen

Svaret som kommer fra den kan være litt pseudokodet og med masse rom for diskusjon avhengig av hva som skal vises til sluttbruker:

{

[{day:»monday», temperature: 16, condition: «sunny», wind: «moderate»},

{day:»tuesday», temperature:18, condition:»partly cloudy», wind:»still»]

…(og så videre)

}

Og så kan man tenke seg at en app som man gjerne også kan kalle en tjeneste men da med en brukersentrisk bruk av begrepet brukte dette til å til å hente inn rett bilde om det er en sky eller en sol og vise temperaturen og eventuelle andre ting til en sluttbruker.

Det er en utfordring for tverrfaglighet at begrepene gjerne i hvert fall for meg gjerne var en selvfølge ut fra at jeg hadde en teknisk bakgrunn mens jeg opplevde gjerne at andre parter jeg møtte hadde en sneverhet fra sin side, i hvert fall den gang jeg havnet i konflikt med noen på dette masterstudiet rundt begrepsbruken av ordet «tjeneste». Det er uansett et problem at man har semantiske tjenester som danner grunnlag for sluttbrukertjenester og derfor er det viktig å spesifisere dette. «Service design» kunne man kanskje ha kalt «end user service design» og «service development» kanskje «semantic service development» men vi må bare leve med at språket går i sine egne veier.

Spill, oppvekst og tverrfaglige muligheter

Jeg har tenkt mye på utdanning i det siste. Jeg tenker tilbake på barne-og ungdomsskole og jeg tenker på meg selv som barn og jeg tenker på barn som vokser opp i dag og hvordan stort sett alle barn har et forhold til spill.

Selv oppdaget jeg datamaskinen som barn, mine foreldre hadde en Apple Macintosh:

Denne prøvde jeg da jeg gikk i barnehagen. Den hadde noen spill som fulgte med. Jeg husker også at jeg laget mapper og gav dem navn og la dokumenter inni dem og sånn lærte jeg meg selve operativsystemet, uten noe kjennskap til det interne. Men mest av alt så jeg på de primitive spillene som alle var i gråtoner.

Noen av vennene mine i barnehagen og borettslaget jeg bodde i hadde Nintendo. Jeg ønsket meg en til jul men fikk en Sega-variant istedet. Den heter Sega Master System 2 og du kan se under i videoen at dette var en temmelig billig spillmaskin men det var ypperlig leketøy for meg.

Jeg spilte en del på Alex Kidd som fulgte med. Alex kunne bokse og hoppe og gå til venstre og høyre. Han skulle helt sikkert redde en prinsesse men jeg kan ikke huske helt for det kan være det bare var Mario som skulle det. Senere i spilllet kunne han fly minihelikopter husker jeg i hvert fall. Men det var ikke mulig å lagre prosessen så jeg mener jeg begynte på nytt hver gang jeg skulle spille spillet.

Jeg spilte massevis på denne ved siden av å gå på barneskolen. Jeg husker spesielt Vinter OL 1994 på Lillehammer for da fikk jeg en kassett med et spill som var laget til lekene av mine foreldre. Jeg husker jeg spilte skiskyting, hopp og slalom og definitivt noen flere disipliner – alt så veldig primitivt ut i forhold til dagens spill og jeg hadde kun to knapper. Den ene het A og den andre het B i tillegg til piler for å styre retning.

Skiskyteren var litt spennende dynamikk på. Han gikk i sporet ved at jeg holdt en rytme i takt med spillmusikken mellom skytingene. I skytingen skulle jeg treffe blinkene ved å styre et plusstegn inn og trykke A når plusstegnet var over blinken men plusstegnet beveget seg også av seg selv (fordi skiskyteren hadde problemer med pust antagelig) derfor var det utfordrende å treffe. Jeg ble ganske god og vant vel i de fleste eller alle disipliner etter en stund.

På skolen var det noen gamle datamaskiner og vi hadde også en datamaskin i klasserommet. Det er ikke nytt at man satser på «EDB» i grunnskolen. Det er her jeg kommer over på utdanning. IT i skolen har vært mye snakk om i media og jeg snakker av og til med foreldre men jeg kjenner lite til hvordan ståa er. Jeg har fått med meg at på et visst nivå skal barna ha en bærbar maskin men jeg vet ikke hva de bruker dem til.

Jeg husker at det var vanlig at studenter, spesielt på mitt studie, hadde med seg laptop på forelesning og det hendte at jeg så på andres skjermer at man satt og drev med noe helt annet – for eksempel spill. Jeg har tenkt mye på utvikling av spill men spilling i seg selv sees ofte på som noe negativt. Det kan i hvert fall bli for mye og da sliter man med dataspillavhengighet.

Selv får jeg følelsen at jeg ikke får gjort noe om jeg spiller, men jeg ser på det som en sosial aktivitet. Jeg deltar gjerne på spillkvelder men jeg har blitt kritisk til innholdet i spillene. Jeg ser også på kurs i spillutvikling men jeg føler helst at det kunne være en positiv og kanskje nyttig ting for barna å få lov å lage spill.

Hva om barne- og ungdomsskoleelever kunne hatt et slags prosjektarbeid i å lage spill? Det er utrolig mange varianter av spill. Jeg ser på 2d. Spillene jeg spilte i barndommen var 2d. Spillutviklingen har forskjellige aspekter av kunnskap og ferdigheter som må til for å få til et resultat. Jeg tenker på sidescrollere som overkommelige for barn og ungdom. Noen av barna er flinke til å tegne eller ønsker å tegne.

Om barna eller ungdommene skulle lage spill, kunne man ha skrevet et spilldesigndokument i språktimer (litt usikker på om det skulle være engelsktimer eller norsktimer – fordel om det er i engelsktimene for jeg tenker at man trenger et grunnlag av engelsk fordi alle rammeverkene er skrevet på engelsk) man kunne brukt tegning, form og farge (om faget fortsatt eksisterer – det var et ungdomsskolefag jeg hadde) til å lage tegninger man skal bruke i spillet og selve programmeringen (variabler, metoder/funksjoner – avhengig av språk) kunne vært noe å introdusere i matematikk. Lyder og musikk finnes det også et fag for og det er musikkundervisning. Dette ser glimrende ut for ungdomsskolen slik jeg kjenner den.

Deretter kunne man på et vis koordinere at barna fikk laget sine sidescrollere i 2d med den dynamikken og de utfordringene barna ønsket å skape selv – basert på sine spilldokumenter.

  1. Skrive en forklaring av spillet
  2. Designe spillelementer visuelt (tegninger som scannes og bearbeides litt (transparente områder)
  3. Lyder og bakgrunnsmusikk taes opp
  4. Spillet programmeres i et rammeverk som passer (organisatorisk beslutning – kan koste noe).

Dermed har barna muligheten til å skape sin egen historie. Jeg er overbevist om at barn kan lage sidescrollere med hjelp fra voksne. Det kunne jo være et valgfag. Jeg tok moped som valgfag på ungdomsskolen. Det var kjekt det men hva om noen hadde spillutvikling som alternativ? Om da ikke alle skulle få muligheten.

Takk for at du leser mine tanker.

Flere tanker om blockchain

Kryptovaluta hevder å ha en fordel med at alle er anonyme. Ut fra min forståelse kan man også skape en blockchain kryptovaluta hvor alle transaksjoner er identifiserbare – det vil si at alle som sitter på blockchain informasjon kan ha full oversikt over alle transaksjoner. Dette kunne vært en idé for en statlig valuta.

Jeg har i hvert fall ingen problemer med min økonomi for jeg er lovlydig. Jeg tenker at det gjør ingen ting om banken vet at jeg kjøper meg en is. Vi har også skattemyndigheter vi skal rapportere til som uansett følger med. En kryptovaluta for en stat kan hindre kriminalitet.

Skulle ønske noen hadde noen tanker om dette. Jeg har i hvert fall behovet mitt for å bruke bankkortet mitt til å kjøpe meg en is eller en øl, nettbanken til å betale regninger og om jeg skal gi et beløp til andre så kan jeg jo vippse og det vet jeg fra før at skjer under mitt fulle navn og at banken vet alt om overføringen. Jeg kan angre på enkelte transaksjoner jeg har gjennomført men jeg er ganske sikker på at en blockchain ikke trenger å være anonym.

Mine tanker om Blockchain og valuta

Jeg har aldri kjøpt kryptovaluta. Hadde jeg gjort det for noen år tilbake istedet for å prøve å øke et beløp på den norske børsen, noe som var totalt mislykket, ville jeg vel vært rik i dag, sett at transaksjonen gikk fint i begge retninger eller jeg ikke ble svindlet og det viste seg at jeg aldri hadde hatt hverken BitCoins eller Ethereum eller hva jeg da hadde valgt å sette pengene mine i. Jeg har aldri følt meg trygg på å plassere et stort beløp i kryptovaluta men jeg vet om andre som har gjort det og det gikk helt fint.

Jeg leser i dag en god forklarende artikkel om blockchain, forklart som en distribuert base, og jeg vet at en hver kryptomynt er unik istedet for at det bare er et tall. Dagens banker overfører penger på øyeblikket om overføringen er hos en bank, dagen etter om det er i en annen norsk bank og man har IBAN for overføringer utenlands. Jeg har ikke inngående kjennskap til registrene men regner med at en bankoverføring er en transaksjon som må gjøres opp mot en database hos banken om det er i samme bank, om det er til en annen bank må en melding gå ,jeg tenker at pengene fysisk ikke går men jeg vet ikke egentlig hva som skjer når jeg betaler mine fakturaer.

Det er naturlig å tro at sentrale servere behandler både overføringer internasjonalt og nasjonalt og at det kun sendes et tall. I kryptovaluta er hver «mynt» digital. Vi kunne tenkt oss en NDKR som var låst mot NKR i verdi hvor hver NDKR hadde unik forekomst på et vis og at hver distinkte mynt ble overført med blockchain slik FedCoin ser ut til å kunne bli i statene. Om det ikke bare er falske nyheter. Dessverre tror jeg at om stater hadde innført kryptovaluta så hadde andre digitale valutaer stupt i verdi. Men det sier seg selv at om en hver NDKR er unik og vi ikke foretar overføringer hvor vi kun bruker tall som vi adderer og subtraherer vil prosesseringen bli ekstremt krevende. Allikevel kan det være dette er fremtiden.

Jeg tror egentlig bankene ville kunne ha de samme fortrinn om systemet ble slik kanskje men eksisterende kryptovaluta møter motstand hos bankene.

Men vi hadde vært tjent med en digital valuta som brukte blockchain om det ville bety at overføringer kunne gjøres på øyeblikket tenker jeg. Det er bare så synd at prosesseringen da er så krevende?

Tale til tekst spørring mot et API

Gratulerer med dagen folkens!

I dag er det 17. Mai 2018 og jeg tenker litt på HTTP verb og taletjenester. Vi har GET POST PUT DELETE som de gjeldende engelske verbene og vi kan oversette dem til FÅ POST OPPDATER og SLETT. Noen kan lage en taletjeneste for å spørre i HTTP og tjenesten kan lese opp oversatt XML eller JSON.

Mye arbeid har vært gjort på å gjøre API-tjenester velformede og det finnes også en del formater som ikke brukes i dag. Dagens tjenesteutviklere lager tjenester i JSON eller XML og bryr seg ikke om https://no.wikipedia.org/wiki/WSDL og SOAP. Det kan være noen lager tjenester som følger disse standardene men jeg har ikke vært borti å utvikle noe i disse formatene.

Jeg finner fremgangsmåter for forskjellige plattformer, og jeg har ikke mobilen min fra Samsung foran meg akkurat nå, men det er mulig jeg kan si VÆRET til den og den vil lese opp været hvor jeg er. Det er uansett litt interessant å fable om ting man kunne sagt bare ved å følge HTTP og da disse oversettelsene.

Man kan sette opp noen tjenester på www.etellerannetdomene.no og legge tjenester rett på domenet og si til mobilen FÅ VÆR og utvikle en app som da kjører en GET (engelske HTTP-Verbet) mot www.etellerannetdomene.no/weather (husk at vær automatisk oversettes). Det begynner å bli mer avansert om man skal bruke de andre verbene til tjenester og man må vite noe om tjenesten på forhånd. Det er skrevet om tjenester for den semantiske weben men en agent som følger ideen om at man skal tilby sine tjenester i denne formen har ikke inntatt min verden i noe form.

Det er veldig mange problemstillinger som ligger i veien for at vi skal ha autonome agenter som er formet etter en åpen spesifikasjon av semantisk web-tjenester og mye ligger i incentivet bak å lage en tjeneste. Det finnes massevis av åpne data på weben og du kan gjerne lage en tjeneste som enten er betalt eller spiller av reklame hvor man syndikerer API-tjenester og blottlegger dem uten å gjøre så mye mer enn å benytte HTTP og lese opp svarene som kommer i responsen fra APIet. Men husk at i en sånn tjeneste kan du ikke se noe du har kun en talestyring og det er lett for brukeren å gjøre feil om man beveger seg lenger enn til FÅ (GET).

I en POST kan man tenke seg at man sier POST og deretter så er alt kodet informasjon enten det er XML eller JSON. I XML vil det være innhold og i JSON vil det se ut som {kode:»innhold»} eller noe sånn og datatyper er en utfordring.

Dette er egentlig et terreng som eksperter på semantisk web vet mye mer om enn meg og tankene om en «semantisk web» ligger i at folk følger standarder. Det finnes mange skjermlesere som leser opp innhold på weben og jeg tipper denne bloggen du leser nå lar seg lese av en skjermleser men jeg vet ikke for jeg har aldri prøvd en skjermleser.

Eneste jeg klarer å komme på som bruksområde for meg på eksempelet FÅ VÆR måtte være om jeg satt i bilen og kjørte eller kanskje noen andre stod på ski og hadde på seg håndfri og ville sjekke været i bakken. Kanskje man kunne sagt FÅ KALENDER. Da kan man jo tenke seg en POST KALENDER TID ATTENTRETTI TITTEL MIDDAG MED PER STED I HYTTEN som former en HTTP POST forespørsel mot for eksempel http://www.dittfirma.no/kalender med innmat i xml, siden den er fri for datatyper: <tid>18:30</tid><tittel>Middag med Per</tittel><sted>hytten</sted>

Men du kan se at datatyper spiller inn uansett, og dermed må man se nærmere på formatering uansett hva man gjør.

Og det er mulig din iPhone eller Samsung-telefon allerede kan denne jobben fra før. For min del så taster jeg inn avtaler og jeg søker etter været på skjermen. I tillegg er det ofte sprik i værtjenester.

Håper du har en fin 17. Mai, eller har hatt en fin dag i dag om du kommer til og leser på et senere tidspunkt.

Hvordan plotter maskinen en sirkel?

Jeg har grublet på spørsmålet med hvordan en sirkel blir formet i et koordinatsystem x y slik skjermen på en digital enhet er. Jeg fant noe som heter midpoint circle algorithm og jeg forstår ikke helt algoritmen men den tar imot et koordinat for senter av sirkelen som skal tegnes og en radius og tegner åtte punkter av gangen helt til sirkelen er komplett.

Når du lager en sirkel i et tegneprogram så vil jo den vises på skjermen med en gang fordi maskinen er så rask men egentlig så tegner den hvert punkt og sånn jeg forstår det så er det denne algoritmen som er i bruk men det kan hende det finnes andre. Selv begynte jeg å tenke på radianer og polarkoordinater og alt mulig for det naturlige ville jo være å finne hvert punkt i sekvens heller enn å tegne 8 steder på en gang. Men denne er ikke avhengig av radianer eller polarkoordinater.

Sjekk ut en sakte demonstrasjon:

(DU MÅ GÅ INN PÅ BLOGGPOSTEN FOR AT KODEN SKAL KJØRE HER)

Tegner sirkel på x=200 y=200 i et 400×400 felt

Radius:

Operasjoner:0

dx:

dy:

decisionOver2

I artikkelen jeg viser til på wikipedia bruker algoritmen i kode bitshift-operator til venstre. En artig ting jeg lærte her er at bitshifting av et heltall med en plassering er det samme som å gange tallet med to. Så det ble lettere å tenke på diameter som radius ganger 2 enn diameter som radius bitshift 1.

Hvis man har et binærtall: 0110 (4) og bitshifter dette til venstre: 1100 så blir det 8. Bitshifter man en gang til har man 11000 og det er det samme som 16 altså en dobling til. Det er litt stilig og egentlig logisk men jeg har aldri visst det før.

Midpoint circle algorithm er først implementert i Assembly for lenge siden og jeg tenker at å bitshifte radius en gang til venstre for å gange den med to sikkert er mer effektivt fordi en multiplisering antakeligvis inkrementerer noen tall så og så mange ganger og derfor er sikkert multiplikasjon en kostbar operasjon men jeg tror at dagens kode vil lese alle heltall ganger to som en heltall<<1 altså bitshifte heltallet en til venstre for jeg vet at det er gjort mye for å optimalisere. Algoritmen bruker kun heltall og et avvikstall bestemmer hvordan man skal justere x og y slik at det blir en sirkel. Noen variabler i koden forstår jeg ikke ut i fra navngivingen men jeg har refaktorert ut bitshiftoperasjonen:

Det er interessant at algoritmen kun bruker heltall altså ingen flyttall og «decisionOver2» er et avvik definert som 1-diameter i begynnelsen men det endrer seg. Det hele handler om å bestemme x og y og antall operasjoner øker med radius og det er helt sikkert et forholdstall men jeg føler det er så mye å tenke på på grunn av at hver iterasjon tegner utover fra fire punkter.

Jeg husker vi problematiserte sirkelen på barneskolen også med en passer og jeg ser at om man endrer dx i utgangspunktet vekk fra 1 vil man få noe annet enn en sirkel. Samme gjelder endringer i dy. Men sirkelen må være ganske rasjonell ut i fra at dx og dy begynner på 1 og senere i koden endres den hver gang den skal endres med 2.

For hver operasjon bestemmer man på bakgrunn av kriteriet «decisionOver2» i koden (definert som et avvik i C versjonen av koden) både om man skal øke y og om man skal minke x. «decisionOver2» endrer seg også hver gang man tar denne beslutningen og det er forbløffende at det skaper en sirkel for jeg klarer ikke vri hodet rundt konseptene. Ganske stilig.