Archive for the ‘Nörderier’ Category

Tüki i frihet

december 10, 2013

Tüki save the humans som jag tipsade om för ett tag sedan är nu (senare än indikerat) tillgänglig. Hitintills har sju vackert tecknade sidor släppts.

En intressant bonus är de små notiserna till vissa sidor om inspiration samt historiska detaljer, bland annat får man veta att den förhistoriska (och fortfarande existerande) frukten Monkey Orange smakar söt-surt. Presentationen är tyvärr inte den bästa då sidorna är förminskade och man måste klicka på varje enskild sida för att få se den i full storlek. Detta gör att jag kommer nog läsa serien veckovis och den kommer nog inte att bli en del av min dagliga rutin. Det kan mycket väl hända att en sådan här serie bör läsas i större sektioner istället för att få ut så mycket som möjligt av den.

Historien har inte tagit fart ännu, men en stämning som blandar humorelement med allvar är redan tydlig och för tankarna till Bone. Tecknarstilen är välbekant, de tydliga linjerna och de kolsvarta skuggorna sätter en tydlig karaktär på sidorna. Ansiktet på titelfiguren påminner mig om någon, men det kan vara en illusion och endast bero på att stilen liknar den som användes i RASL.

Jag är fortfarande grymt peppad!

Annonser

Resurs-cachning i python

november 10, 2013

I Pixel Wizard instansieras nya objekt relativt ofta under spelets gång, eldbollar och andra magier som spelaren skapar och projektiler som fiender skjuter iväg. Objekten skapas raskt men när grafik och ljud laddas märks en tydlig prestandaminskning. För att komma runt detta skrev jag ett mycket enkelt system för att cacha ljud och grafik:

"""Resource loader for images and sound"""

import pygame
import re

resource_dict = {}

def load(filename):
    if not filename in resource_dict:
        if re.match(".+\.wav", filename):
            r = pygame.mixer.Sound(filename)
        elif re.match(".+\.png", filename):
            r = pygame.image.load(filename)
        resource_dict[filename] = r
    return resource_dict[filename]

def clear():
    resource_dict = {}

Koden ovan utnyttjar pythons dictionary datatyp för att enkelt med väldigt få rader kod bygga ett caching system. resource_dict är en dictionary där en sökväg/filnamn används som nyckel och värdet är ett objekt som innehåller en referens till ett objekt för datat som filen innehåller.

load() kontrollerar ifall sökvägen filename är en nyckel i resource_dict, om den finns returneras objektet som är kopplat till nyckeln. Ifall den inte finns laddas datat från filen (en kontroll ifall det är en bild eller en ljudfil görs) och sökvägen läggs in i dictionaryn tillsammans med det nya objektet, efter detta returneras objektet.

clear() nyttjar pythons garbage collector och tar helt enkelt bort referensen till objektet, när alla andra referenser till objektet har tagits bort kommer det raderas automatiskt.

Detta system gör också att samma grafik inte laddas in flera gånger även om ett det finns 17 kopior av en fiende refererar grafiken (och ljuden) till ett och samma objekt.

Flera monster men ett grafikobjekt

Flera monster men ett grafikobjekt

Python i samväldet

oktober 3, 2013

Den 20-23:e september gick PyConUK av stapeln, och lyckades ta mig dit trots en tågresa från Gatwick med mängder av stopp. Ett längre stopp i Bletchley lät mig ta en snabb språngmarsch genom Museet på Bletchley Park.

En Enigma maskin

En Enigma maskin

Själva konferensen började på fredagsmorgonen med frukost och välkomnande. Det genomgående temat var ”To be perfect is to change”, vilket innebar att mycket förändringar skedde med lite förvarning. Det var inte alltid åhörare hamnade på rätt föreläsning och det var inte alltid föreläsarna hamnade i rätt rum.

Zeth önskar oss välkomna.

Zeth önskar oss välkomna.

Det var lite rörigt men det vara roligt hela tiden, en stackars föreläsare startade för tidigt men räddade upp situationen genom att dra föreläsningen en gång till.

Det var många bra och intressanta föreläsningar och mycket av dem finns upplagda här. Några personliga favoriter var

  • Cooking high quality software -I denna föreläsning utsattes den brett flinande publiken för en serie dåliga skämt av en man med suspekt fransk brytning iförd kockkläder. Parallell efter krystad parallell mellan mjukvara och restaurangmatlagning levererades till åhörarnas jubel. Det var roligt men samtidigt tog den upp många av de moderna/trendiga mjukvara-utvecklingsteknikerna.
  • All-singing all-dancing python bytecodeLarry Hastings gick igenom pythons byte-kod och förklarade hur den fungerade och varför det var en dålig idé att använda den. För att förstå pythons byte kod måste man ha en djup förståelse om hur språket fungerar, så mycket gick mig över huvudet. Detta till trots var det en väldigt intressant föreläsning.
  • Turtles – Detta var två seminarier om olika förbättringar av turtle, ett ramverk för att underlätta undervisning av programmering med hjälp av sköldpaddor. I grunden kan man endast styra sköldpaddorna genom att rotera dem och förflytta dom framåt och bakåt. physical turtle ger sköldpaddorna möjlighet att kollidera med väggar och ninja turtle är ett projekt för att modularisera turtle och ge modulen ett fräschare utseende.
  • Ubiqutous Larch: Ett ramverk för samarbete via webben. Anteckningsblock där dokumentation, python-kod och java script kan skrivas tillsammans med andra. Koden exekveras live och förändringar i koden slår igenom direkt. Uppenbarligen påminner den en del om iPython.

På lördag eftermiddag fanns möjligheten att delta i en kod-dojo, där man i grupp försöker lösa något problem. Vår uppgift var att implementera ett enkelt plattforms-spel i minecraft där man flyttades till startpositionen ifall man trillade ner från plattformen. Arbetsformen var väldigt intressant och alla deltog glatt. Jag skulle gärna vilja delta i fler sådana här dojos, möjligheten att lära är stor.

Konferensens var inte bara seminarier och övningar utan också en hel del socialiserande. På fredagen var det en enkel middag på en närbelägen pub och på lördagen var det en ordentlig middagsbjudning. Det diskuterades allt ifrån programmeringstekniska frågor till feminism till Monty Python.

Monty Python-referenser: The Larch, dead-parrot-state, Maynard och wafer thin mint.

Jag lärde mig mycket, den mest grundläggande upptäckten var unpack-tuple operatorn (*). Andra grundläggande upptäckter var pakethanteraren pypi samt det mycket praktiska virtualenv.

Det var en kul konferens och det har gett mig mersmak både för python och konferenser generellt.

Exkursion med Svensk Lichenologisk Förening

maj 5, 2013

Förra helgen följde jag med ut på en lättsam jakt efter ett par sällsynta lavar kring Ronneby. Arrangör var Svensk Lichenologisk Förening, Sveriges mest kompetenta sammanslutning av lavfrälsta män och kvinnor. En lokal lavguide guidade ett tjugotal runt bland de olika lokalerna. Lokaler i det här fallet refererar inte till ett rum, en byggnad eller en plats avsedd för instrumentövningar eller lösningen på alla ungdomsproblem. En lokal är helt enkelt en plats där en specifik art finns, det kan innebära ett träd, en hektar skog eller Västerbottens län. Guiden hade inget lätt jobb. Direkt när vi stannade vid första platsen där Fläderlundlaven klamrade sig fast vid ett träd spred sig gruppen blixtsnabbt runt i omgivningen med lupparna i högsta hugg. Det samlades kollekt från grenar (med kniv) och från sten (hammare och mejsel), kollektpåsar för dessa fynd veks vant ihop av papperslappar.

Blå halmlav, en lav jag nu kan identifiera på dess aningen mindre bleka blekgrönhet samt de geleaktiga hyferna.

Blå halmlav, en lav jag nu kan identifiera på dess aningen mindre bleka blekgrönhet samt de geléaktiga aphotesierna. Tyvärr är jag ej bekant med någon av dess förväxlingsarter.

Personligen är har jag aldrig haft det där djupa lavintresset, det bästa man kan säga är nog att jag länge har varit medveten om lavars existens. Denna brist på uppmärksamhet på dessa små symbioter satte mig ett par trappsteg nedanför övriga deltagare rent kunskapsmässigt. Till min glädje verkade ingen i sällskapet tycka detta låg mig till last utan var vänliga och hjälpsamma. De svarade på en mängd mindre intelligenta frågor och visade hur man letar efter särskilda arter med hjälp av dess färg och med lupp.

Det var roligt att umgås med människor som är så specialiserade och kunniga inom ett område som jag själv har absolut ingen koll på. Jag lärde mig mycket, umgicks med intressanta människor och hade riktigt kul hela helgen.

En lav som väljer att växa på en mossa.

En lav som väljer att växa på en mossa.

Grundläggande om lavar:

  •  En svamp och en alg som lever i symbios
  • Små, ofta bleka och finns i massvis av varianter
  • Består av en bål (buskformiga, bladformiga och skorpformiga varianter finns) samt apothesier som växer ur bålen
  • Kan föröka sig både sexuellt och asexuellt (kloning)

På begäran: Algoritmer(!)

januari 19, 2013

Helt kort är en algoritm ”en steg-för-steg beskrivning av hur ett problem löses”. Givetvis är detta inte hela sanningen eftersom ovanstående beskrivning är rätt vag och till exempel skulle inkludera följande exempel (Men om någon säger här är en algoritm för hur man löser Rubiks-kub är det ovanstående förenkling som menas):

Pannkakor med hallonsylt:

  1. Värm upp en stekpanna
  2. Vänta 10 sekunder på att färdiga pannkakor dyker upp till följd av fluktuationer i vakuumenergin. Ifall inga dyker upp under väntetiden upprepa steget.
  3. Servera med sylt

Med ovanstående försök till algoritm finner man ett par problem, dels är det lite kommer man inte veta när man ska börja för att vara klar till lunch då steg två är väldigt svårt att avgöra hur lång tid detta tar. Man kan inte ens garantera att antalet gånger man får upprepa steg två är ändligt.

Ett annat problem är att algoritmen inte är tillräckligt tydlig, t.ex säger den inte explicit vilken sylt som skall användas i steg tre. Så när man väl är färdig med steg två slänger man på en klick hjortronsylt (eftersom inget annat är bestämt)  och serverar förvånade gäster som blivit lovade pannkakor med hallonsylt.

Algoritm är en matematisk term som ofta används i det relaterade ämnet datavetenskap för att kunna analysera delar av program och kunna designa mer effektiva lösningar samt för att kunna bevisa att någonting fungerar.

Matematiken kräver i detta fall inte siffror men däremot strikta kriterier.Dessa är ändlighet, bestämdhet, indata, utdata, effektivitet.

  • ändlighet: algoritmen måste terminera (bli klar) efter ett ändligt antal steg. Notera att ett ändligt tal kan vara vilket tal som helst och precis hur stort som helst förutom oändligheten (eller utom samtliga oändlig tal eller hur man nu ska skriva)
  • bestämdhet: Varje steg i algoritmen skall vara precist och det skall inte kunna tolkas på flera sätt.
  • indata: en algoritm skall få minst noll (0) indata.**
  • utdata: algoritmen skall alltid producera en eller flera utdata relaterade till indatan.
  • effektivitet: varje steg skall vara trivialt att genomföra, dvs. så pass enkelt att till och med en människa skall kunna genomföra varje steg endast med hjälp av papper och penna.

Värt att notera är att de flesta datorprogram inte är algoritmer då t.ex ett operativsystem inte får terminera och att interaktiva program inte kan garanteras att terminera (användaren kan ha uppfunnit en evig energikälla kopplat den till datorn och startat MS-Röj för att sedan tragiskt dö av en mikrometeorit och därför aldrig trycka på avslutningsknappen).

Exempel på kända algoritmer är euklides algoritm (bestämmer två heltals minsta gemensamma nämnare), quicksort (en sorteringsalgoritm) och givetvis Cooper-Wolowitz vänskapsalgoritm:

Sheldon Cooper's vänskapsalgortm med tillägg av Howard Wolowitz

Sheldon Cooper’s vänskapsalgortm med tillägg av Howard Wolowitz

Ovanstående text är uttänkt, nedtecknad (men inte nödvändigtvis i den ordningen) men ej läst av mig.

* Mmmm, hjortron…

** Enligt vad jag läst skall en algoritm i teorin kunna hantera ett oändligt antal indata, men detta är jag osäker på.

2^5-1

december 29, 2012

I går blev jag

dec: 31
hex: 1f
bin: 11111

Trettioett är uppenbarligen ett Mersenne-primtal, dvs. ett primtal som har formen

Mp = 2p-1

Uppenbarligen är det bevisat att ifall Mp är ett primtal är också p ett primtal. Mersenne-primtalen har inte utforskats till något större djup, det är till exempel inte bevisat huruvida det finns ett begränsat antal eller ifall man kan fortsätta hitta dessa i all oändlighet.

Bevis för den nyfikne (direkt från wikipedia-artikeln)

a ≡ 1 (mod a − 1). Then ap ≡ 1 (mod a − 1), so ap − 1 ≡ 0 (mod a − 1). Thus a − 1 | ap − 1. However, ap − 1 is prime, so a − 1 = ap − 1 or a − 1 = ±1. In the former case, a = ap, hence a = 0,1 (which is a contradiction, as neither 1 nor 0 is prime) or p = 1. In the latter case, a = 2 or a = 0. If a = 0, however, 0p − 1 = 0 − 1 = −1 which is not prime. Therefore, a = 2.

Bokfynd

november 30, 2012
Den speciella och den allmänna relativitetsteorin

Den speciella och den allmänna relativitetsteorin.

Innan dagens afternoon tea smet jag in på bokhandeln och fyndade den här lilla populärvetenskapliga pärlan.

FSCONS 2012

november 18, 2012

Förra söndagen trotsade jag min då kaxiga förkylning och besökte FSCONS på söndagen. FSCONS eller Free Society Conference and Nordic Summit försöker hamna mitt mellan teknologi, kultur och samhälle och har därför ett vitt spann av föreläsningar. I år var bland annat Projekt Runeberg, Debian och Wikimedia representerade. Jag höll mig mest till teknologispåret men lyckades träda utanför mitt vanliga territorium åtminstone vid en föreläsning.

  • Creating Realtime Graphics in Realtime (Jonatan Wallmander): Jonatan presenterade VSXu, ett grafiskt verktyg för att skapa 3d-effekter i realtid. Gränssnittet kan jämföras med ett upphottat labView där man drar kopplingar mellan block för att skapa effekter. Fördelen med verktyget är att resultatet av alla förändringar man gör, alla parameterjusteringar och vad man nu kan tänka sig göra när man skapar 3d-effekter syns direkt.
  • Give me an hour (Jonatan Walck): Give me an hour var inte det tänkta namnet för presentationen men det passade ypperligt då det handlade om NTP (network time protocol) och tidsmätningar generellt. NTP levererar tid i UTC (Coordinated Universial time) vilket är TAI (Temps Atomique International) + en skottsekund. TAI definerar en sekund som 9,192,631,770 energi förändringar i Cesium-133. Tyvärr kan man inte mäta energiförändringarna tillräckligt noga för att ett atomur ska klara av att ge precis tid utan mätningar från atomur värden över körs genom en matematisk modell för att ge en precis tid (till en viss grad). Problemet med NTP i dagsläget är att NTP-servrarna inte använder något authentiseringsprotokoll vilket innebär att det är lätt att ersätta NTP-servrar och ge en helt ny tid till en dator/nätverk. Detta kan leda till en rad olika säkerhetsrisker och problem.
  • Generous Innovation (Allison Randal): Allison pratade mycket om fördelarna med en affärsmodell baserad på de principer som driver Fri mjukvara. Vill man göra affärer på fri mjukvara är det support och tjänster man får sälja istället för en produkt, man kan se att detta är något som är på frammarsch även hos de stora företagsjättarna även om de inte går lika långt. Fördelen med den fria mjukvaran är att kunderna inte är lika låsta till ett företag utan kan byta ut supportföretag ifall kvalitén inte håller. Detta kräver mer av företagen men kan också underlätta eftersom kunderna kan bidra till lösningar och styra åt vilket håll utvecklingen sker. Allison poängterar att det är inte enbart inom mjukvaruvärlden som detta är en tänkbar modell, även industrier skulle kunna anamma detta men det skulle vara något helt nytt och man skulle alldeles säkert göra misstag och behöva backa och ta nya tag.
  • Glocalisation of continuing education, combining P2PU with Folkbildning (Niklas Karlsson): P2PU står för Peer to Peer University och är en plattform för att hålla kurser på nätet. Niklas hävdar att användningsområdet överlappar Folkbildningens studiecirklar väldigt väl och ställer frågan ifall dessa kan kombineras på ett bra sätt. Studiecirklar används väldigt sällan på distans, den mest vanliga studiecirkeln är någon form av kör vilket svarar för en del av problematiken. Ett annat problem är den sociala biten då studiecirklar ofta bildas av ett gäng bekanta som har ett gemensamt intresse och kan träffas runt ett fikabord. På landsbygden skulle P2PU kunna användas för att driva distanscirklar men problemet ligger nog i att informera om P2PU’s existens.
  • Yabasta, End to End Secure Social Network (Jon Kristensen): Yabasta är embryot till ett nytt socialt nätverk med betoning på personlig integritet och säkerhet. All kommunikation mellan användare sker krypterat och skall ge möjlighet att i efterhand förneka ett meddelandes äkthet samt skydda för att i efterhand kunna knäcka samtliga meddelande ifall en krypteringsnyckel knäcks. Teknologin är intressant men i dagsläget är det endast en tjänst för att skicka meddelanden, i den nära framtiden hoppas Jon kunna lägga till Foto-delning för att göra tjänsten lite mer lukrativ.
  • Securing Servers Using Proactive Measures (Francisco Blas Izquierdo Riera aka Klondike): Det här föredraget var riktigt tekniskt tungt och gick lite för snabbt för att jag skulle hänga med helt. Trots detta var det jag snappade upp intressant. T.ex en ordentlig genomgång av hur stack overflow-attacker fungerar. I övrigt gick Klondike igenom allehanda säkerhets åtgärder som görs i Gentoo Hardened för att förhindra attacker och öka säkerheten…och det är rätt mycket de skyddar emot, tyvärr sänker dessa fixar prestandan en aning och program som gör vissa antaganden kan sluta fungera.

Kolliderande världar

oktober 21, 2012

Jag förhandsbokade Capital Offensive: A Tactical Game of Violence as a First Resort i februari och nu i veckan damp det ner i brevlådan (egentligen var det en post-avi som stillsamt singlade ned genom brev inkastet, paketet fick jag knata ned till ICA för att hämta).

Spellådan med omslag av Howard Taylor

Anledningen till att jag förhandsbokade spelet var till stor del att jag ville stödja webbserien Schlock Mercenary men också för att jag vet att mannen bakom serien är en inbiten bräd/table-top-spelare och verka ha bra koll på vilken spelmekanik som fungerar. Spelet baserar sig på den tidigare nämnda Schlock Mercenary, en episk rymdopera med glimten i ögat. Karaktärer, vapen och alla illustrationer känns igen från serien och ger ett tryggt professionellt intryck och får det att rycka lite i avtryckarfingret.

Spelinnehåll

Mycket markörer, brickor och annat blir det!

Spelet är ett strategi spel där spelarna med hjälp av ett antal karaktärer skall utföra diverse uppdrag. Det finns 10 olika karaktärer (+ två som kom som bonusmaterial för förhandsbokare), 9 dubbelsidiga golvbrickor så att spelplanen kan varieras i oändlighet. En uppsjö olika markörer, hälften kan jag inte ens gissa vad de används till men en djupdykning i regelboken kan nog råda bot på detta.

Jag har än så länge bara skummat igenom reglerna men dessa verkar inte allt för komplexa och påminner bitvis om Frag. En intressant spelmekanik är hur tärningar används vid förflyttning. Varje karaktär har en ikon för hur många tärningar som skall rullas vid förflyttning samt en indikation ifall den högsta, den lägsta eller den mellersta är den tärning som räknas. Det är första gången jag ser det här systemet och det kommer bli intressant att se hur det påverkar resultatet.

Någon som är intresserad av att komma över och prova på?

Fantastisk filmfestival 2012

oktober 1, 2012

Mitt besök på fff var i år kort men intensivt, vilket i detta fall innebär 11 filmer på fyra kvällar. Det var kul som vanligt och jag hann med att gå på en Q&A med George A Romero.

  • The Warped Forest: Denna films namn kom jag kontinuerligt ihåg som the weird forest, vilket var förvånansvärt passande eftersom filmen måste vara en av de märkligaste saker jag sett. En trio män, en trio tonåriga flickor, en trio tonåriga pojkar och en färgglad värld med svävande pyramider som uppfyller önskningar… och just det en vanlig värd med samma personer fast andra.
  • Antiviral: Brandon Cronenberg (David Cronenbergs son) har lyckats skapa en spännande thriller som utforskar vår kändisdyrkan. Inget är svart-vitt, huvudpersonen är sympatisk men inte hela tiden och gör en hel del tveksamma beslut för egen vinning samt för att rädda sitt eget liv.
  • A game of warewolves: Denna spanska film tillför väldigt lite till varulvsfilm-genren men var förvånansvärt rolig. Konceptet är klassiskt: En författare med idétorka åker till sitt föräldrahem, ett slott i en avlägsen by. Väl framme dyker en familjeförbannelse i form av en 100 år gammal varulv upp tillsammans med en barndomskompis med en förkärlek till får samt en usel agent.
  • The Extraordinary Voyage: den här restaurerade kortfilmen (löst baserad på Jules Verne’s Voyage to the moon) är fantastiskt snygg och rolig för att vara över 100 år gammal. Kortfilmen följdes av en dokumentär om restaureringsarbetet som berättade Gerorge Mélies tragiska historia.
  • Jack & Diane: Denna film var inte alls vad jag trodde den skulle vara men var inte dålig för det. Detta är (vad jag tror) en relativ ärlig coming-of-age-film där titelns Diane faller för titelns Jack. Jack är en världsvan rock’n’roll-tjej som Diane dras till men samtidigt är lite rädd för, de båda har väldigt olika tempon och temperament vilket gör det hela till en snårig historia.
  • Errors of the Human Body: En genforskare ansluter ett forskningslag i Tyskland för att förhoppningsvis ta ett projekt för att regenerera vävnad ett par steg framåt. Stämningen är bra och de etiska frågorna slår tätt. Jag blev dock inte riktigt klok på vad meddelandet som ville förmedlas var, filmen ställde många frågor men gav i princip inga svar.
  • Zombadings 1: En filippinsk zombie-komedi med svart magi och horder av mördade homosexuella. Politiskt korrekt kan man inte anklaga filmen för att vara men jag tror inte heller att den vill illa. Den är flamsig och lite tramsig och bitvis riktigt rolig men inte ondskefull.
  • Ernest & Celestine: Ernest & Celestine är fantastisk och välförtjänt vinnare av publikens pris 2012. Celestine är en mus som vill bli vän med en björn, och lyckas med detta genom att hjälpa den hungriga björnen Ernest att bryta sig in i en godisbutik. I och med detta är det hela igång, fler rån, vågor av muspoliser jagar dem och trots detta är filmen väldigt söt. På slutet ville jag nästan gråta men jag tänker inte berätta varför.
  • Vampyr: Detta är Carl Theodor Dreyers klassiska vampyrfilm ackompanjerad av toner från Death and Vanilla. Jag gillade filmens tempo och livemusiken höjde stämningen markant.
  • Claymation from the Breakfast table: Detta är ingen film utan en samling leranimerade kortfilmer i genren splatter och skräck. Samlingen är bitvis hysteriskt rolig, bitvis en aning smaklös och väldigt blodig.
  • Violett and Daisy: Två sockersöta lönnmörderskor ska fixa ett enkelt jobb, men när målet visar sig trevlig, villig att dö samt väldigt duktig på att baka blir det hela lite besvärligt. Filmen innehåller mängder dialog som flyger till höger och vänster och gör filmen oförglömlig.