Är det äntligen över nu?

april 3, 2014

Jag har varit förkyld i två veckor. Inte bara förkyld heller, det har varit tydliga inslag av halsfluss.

Jag hade feber i en dryg vecka. Inte jättehög utan bara tillräckligt för att jag skulle må som en murken gurka. När jag har feber tappar jag allt intresse för allt, det mest kreativa jag orkade med var att byta Futurama-dvd i spelaren. Jag hade inte tillräckligt med intresse för att ens spela tv-spel. Det är slöseri med tid! Jag har inte gjort ett något, inte orkat måla en enda figur, inte skriva klart något av de halvfärdiga blogginlägg som bara dräller, inte bakat, inte städat. Inget.

Den Vanliga Förkylningen

Den Vanliga Förkylningen

Efter ett par dagar fick jag ögoninflammation och klegg hämtat från specialeffekterna till någon B:ig science fiction-rulle grumlade mitt vänsteröga. Ett par dagar senare var det dags för högerögat gå samma öde till möte.

Nu har jag inte  feber längre och mina ögon har lugnat sig, det är bara på natten som slagg pumpas ur tårkanalerna. Det som kvarstår är en ihärdig hosta, lite halsont samt nattliga svettningar. Hostan och halsen kan jag nog hantera men att varje natt vakna upp täckt av ett kallt lager svett och vara tvungen att byta sovplats för att madrass och täcke är för blött är mindre roligt.

Med lite tur lugnar svettningarna ner sig innan helgen och jag kan få mig lite ostörd nattsömn. Dagarna är rätt problemfria och jag har varit pigg hela veckan.

Är det äntligen över nu? Eller kommer det en andra våg om ett par dagar?

Intervalometer på github

februari 16, 2014

Min första Android-app Intervalometer ligger nu på github i ett någorlunda fungerande skick. Intervalometer skrevs för att hantera springintervaller (eller annan intervallträning), dvs man sätter en serie tider som genererar en larmsignal som indikerar att intervallet är slut.

En ganska simpel applikation men den krävde en del trixande och kanske viktigare förståelse för hur Android fungerar. Ett tag slogs jag med att få koll på hur Android’s services fungerar och hur man kommunicerar med dom. Sedan slogs jag en del med att få till det så min tjänst kunde exekvera medan skärmen är släckt.

Tanken är att jag ska putsa på den fixa buggar och lägga till de funktioner som jag anser saknas (radera intervall, välja ljud, olika kategorier på intervalltiderna) och sedan lägga ut den på Google Play. Känner jag lust funderar jag på att lägga till GPS-stöd och möjligheten att sätta intervallerna som sträckor istället för tid.

En annan sak jag slogs med rätt länge var att en Sony Xperia-telefon inte ville identifiera sig för Android studio. Detta var frustrerande men efter ett tag luskade jag ut att adb-tjänsten var tvungen att köra som root för att det ska fungera. För den med liknande problem hjälpte följande rader i terminalen mig

sudo adb kill-server
sudo adb start-server

Jag är hyggligt säker på att jag inte har gjort ”rätt”(TM) i alla lägen, senast idag lärde jag mig om att det finns en alarm-hanterare som kan göra underlätta en del och göra saker och ting enklare.

Eftersom jag både är Android- och Java-rookie mottar jag gärna kommentarer på min kod.

Första intrycket av Android Studio

januari 27, 2014

Jag är som vanligt sen på bollen men jag tänkte ändå att App-utveckling kunde vara roligt att prova på. I ärlighetens namn provade jag att installera android-utvecklingsverktygen en gång tidigare men eclipse fick mig att vilja tugga på tangentbordet. Hela upplevelsen var seg och rätt rörig.

Installationen är relativt enkelt, jag laddade ner ett paket med Android-studio och android-SDK vilket bara var att starta efter jag hade installerat Java ordentligt. Att hitta rätt variant av Java var det mest besvärliga med installationen.

Android Studio är baserad på intelliJ, ett öppet Java IDE, och byggverktyget Gradle som uppenbarligen är bra på alla möjliga vis (men jag tänker inte gå närmare in på det eftersom detta är ett första intryck).

IDEt känns rappare än eclipse och upplägget är mer logiskt och en mindre uppsättning inställningar gör det hela mer lätt att greppa. Att skapa ett relativt vackert användargränssnitt går snabbt och lätt i layout-editorn.

Androids applikation med aktivitets-klasser vars olika funktioner anropas av Android är förvånansvärt lätt att sätta sig in i även för inbitna C-programmerare. För den som inte är insatt så skrivs android-applikationer traditionellt i Java. Ett objektorienterat högnivåspråk som skall vara helt plattformsoberoende (men har aldrig varit det på riktigt). Man kan säga att C är Javas farfar, C utvecklades vidare till C++ som Java sedan lånade mycket ifrån. Denna nära relation gör att det är lätt att sätta sig in i grunderna och Python har gett mig lite insikt i objekt orientering så det känns relativt intuitivt.

Efter ett par timmar med Android Studio och ett par googlingar har jag lyckats ta mig från en app som säger ”Hello World” till en app med en knapp som byter text när man trycker på den till ett stoppur. En stor fördel är att det går snabbt och enkelt att ladda ner sitt projekt till sin telefon och köra det. Vilket innebär att det går snabbt att prova saker.

Mitt Projekt "Intervalometer"

Mitt Projekt ”Intervalometer”

Hastigheten att komma igång är ett plus med dessa avancerade programmeringsmiljöer, dock saknar jag fortfarande mycket förståelse för att vara helt bekväm med det hela. Men det kommer kanske?

Allt är inte guld och gröna skogar… Det mest frustrerande är att kompileringsprocessen tar makalöst lång tid, minst en minut. Sedan har jag stött på fall där visningen på min bildskärm skiljer sig från det som visas i telefonen när jag kör programmet där, detta är av mindre vikt men lite förvirrande.

Första intrycket är positivt, det är mest roligt att programmera och inte så mycket frustrerande alls. Jag har kommit igång oerhört snabbt och är redan produktiv även om jag måste googla en hel del ännu.

Läst under 2013

januari 13, 2014
  • Manifold: Time – Boken är en storslagen berättelse om Reid Malenfant’s försök att ta människan framåt samtidigt som författaren filosoferar om universums öde och vad vi skulle kunna vänta oss av tidsresenärer. Berättelsen innehåller många intressanta koncept som t.ex. ett skepp som styrs av en genetiskt modifierad bläckfisk och Feynman Radio.
  • SnuffTerry Pratchett är utan tvekan tillbaka på banan trots den tragiska sjukdom han lider av presterar han en fantastisk skivvärldsroman. Vimes tar semester från vakten och åker ut på landet. Dock är landsbygden nästan lika härjad av brott som staden och Vimes som herre över området måste försöka hålla ordning på torpet. Han tvingas blanda sig i tvister, brott samt frågor som ”vilka rättigheter har Goblins”?
  • ShadaShada är en roman baserat på ett ovisat Doctor Who-avsnitt som i original skrevs av Douglas Adams. Författaren har lyckats bra med att överföra Adams humor från manus till bokform. Det är en fartfylld historia med elaka skurkar artificiella intelligenser som är en aning för mänskliga, supervapen och K-9! Jag rekommenderar denna till alla fans av Doctor Who.
  • Exultant – Andra delen i bokserien som började med Coalescent avviker kraftigt från tidigare och utspelar sig i Baxers Xeele-universum. Efter att ha åkt snabbare än ljuset återvänder Pirius innan han åkt på ett uppdrag som gick helt åt skogen. Uppdraget skrotas och Pirius har helt plötsligt en tidsklon, en yngre version av honom. På grund av den information som Pirius besitter blir han nyckeln till en lösning på det uråldriga kriget med Xeelee, men vill verkligen samhället att kriget tar slut?
  • Amberville – I Mollisan town lever mjukdjuren som vi människor lever i våra städer. Vissa arbetar och bor i villa, andra är korrupta vissa stjäl andra mördar. Eric Björn är desperat på jakt efter den som upprättar dödslistan, den lista som säger vilka djur som skall hämtas upp och tas av chaufförerna. Eric är dels anställd av en Maffia-boss och dels är Eric’s bror på listan. Teddybjörnen måste rota igenom lager efter lager av hemligheter för att avgöra vem som sitter på makten och beslutar vilket djur som dör och vilket som lever och sedan få denne att ändra listan.
  • Kanonerna på NavaroneAlistair MacLean’s klassiker håller vad den lovar. Boken var precis lika spännande som min far fått mig att tro. Premissen är enkel, för att en evakuering skall kunna klara sig mellan de grekiska öarna måste Navarones kanoner tystas, en liten insatsstyrka ledd av en viss före detta alpinist vid namn Kieth Mallory måste ta sig i land på ön undvika de tyska patrullerna och spränga kanonerna i luften. Ett fartfyllt äventyr upp för klippor genom snö och under kulregn tar fart.
  • Lanceheim – Andra boken om mjukdjuren i Mollisan Town tar inte vid där den första slutade utan berättar en annan historia i mjukdjurens stad. Historien kretsar kring Maximilian som en dag hittades i skogen utanför staden. Maximilian visar sig kunna utföra mirakel och pratar mest i svårtydda liknelser. När Maximilian kommer till staden får han snabbt ett följe och blir också sedermera förföljd av staten. Konfliker uppstår, är han en frälsare eller är han en lurendrejare? Kan han hjälpa Rueben Valross?
  • Manifold: Space – Andra boken i Manifold-serien är en alternativ historia till den första boken. Denna utforskar Fermis paradox (det kan den första också ha gjort nu när jag tänker på det), varför ser vi inte tecken på mer liv i universum? Liv upptäcks i vår eget solsystem och Reid Malenfant försöker ta kontakt och blir den jordens första interstellära resenär. Boken utspelar sig under många hundra år och mänskligheten hinner genomgå många katastrofer innan boken når sitt slut.
  • Lords and Ladies – Jag har skrattat hysteriskt medan jag läst denna, sängen har formligen skakat. Alverna hotar att återkomma till skivvärlden och endast en trio häxor kan stoppa dem, men varför vill man stoppa dem? Alver är väl vackra och trevliga varelser? Detta är nog en av de bästa skivvärldsromaner jag läst och den har allt. Spänning, olika varianter av kärlek, en krigardrottning i bystig rustning, häxor, trollkarlar och en hel del förnuft!

I år har jag läst mycket av Stephen Baxter (Manifold: Time, Exultant och Manifold: Space) och jag dras fortfarande mot hans böcker eftersom de är så episka. Imperier reser sig och faller under tusentals år men historien fortsätter ändå eftersom den är ankrat i ett universum där det vi tycker är en eon är ett ögonblick. När jag tänker i de storlekar som omnämns i böckerna får jag nästan svindel samt lite ångest över entropi och att universum stadigt blir kallare och kallare och att människorna kanske inte kan ta sig bortom den kollaps som finns vid tidens ände. Sedan tänker jag lite mer realistiskt och inser att vi kanske inte överlever den kollaps som sker här på jorden som ligger mycket närmre till hands. I vilket fall får hans böcker mig att tänka och det är ett tecken på bra böcker.

Fem bitar räcker inte längre

december 28, 2013

Jag är nu 32, binärt 100000. Fem bitar är inte nog längre och jag uppdaterar alla mina digitala system för att hantera denna höga ålder. Med sex bitar klarar jag mig tills jag är 64 och det är ju ett bra tag tills dess!

Jag tror inte jag har någon kris ännu men vem vet snart kanske jag får panik och tar flygcert., dykcert. eller något annat certifikat.

Tusen tack för alla gratulationer! Det värmer och gör mig glad.

God Jul

december 24, 2013

All I Want for Christmas is a Brand New Starship

Nordquist/Guskin/Aster

If you’re shopping for me, skip the Saurian brandy
And please, no more of that Bertie Bott’s candy
No gingerbread house, even if it’s haunted,
And kryptonite jewelry is super-unwanted

All I want for Christmas is a brand new starship
A brand new starship, a starship
If you see Santa, give him this tip
All he has to get me is a brand new starship

I own mass quantities of shrink-ray pistols
Excalibur swords, and dilithium crystals
And don’t even think of Narns-and-Noble-dot-com
I have two dozen copies of the Book of G’quan

All I want for Christmas is a brand new starship
A brand new starship, a starship
I want it checked out and certified by engineer Tripp
All I want for Christmas is a brand new starship

Please skip the magic rings, ‘cause that’s a big no-no
Look how it worked out for Bilbo and Frodo!
And get this thought through your prosthetic forehead
I don’t need one more photonic warhead

All I want for Christmas is a brand new starship
A brand new starship, a starship
I want one that doesn’t leak, that doesn’t even drip
All I want for Christmas is a brand new starship

Get me off of this little blue sphere
There’s no intelligent life down here
These gifts get more inane and useless every year!

Last year’s Christmas was a big disaster.
I drank the whole pangalactic gargle blaster.
You say you’re my friend, so I’d think that you know
I can’t use an acre of land on Pluto.
That cloaking device was a bit too clever:
I pressed one button, and it vanished forever.
And those house cleaning robots didn’t thrill me;
They polished all the floors, then they tried to kill me.

All I want for Christmas is a brand new starship
A brand new starship, a starship
Your planet-crushing Death Star is old and unhip
All I want for Christmas is a brand new starship

All I want for Christmas is a brand new starship
A brand new starship, a starship
If you see Santa, give him this tip
All he has to get me is a brand new starship

All I want for Christmas is a brand new starship
A brand new starship, a starship
It better not leak, yeah, it better not drip
I don’t want any problems with my brand new starship

source: Dorkly.com

Chokladfudge

december 21, 2013

Efter att ha bränt fast en första fudgesats rätt ordentligt modifierade jag recept och instruktioner till något som jag kan begripa och följa:

Ingredienser:

  • 1½ dl kakao
  • 5½ dl socker
  • 2 msk sirap
  • 1½ tsk pepparkakskryddor
  • 2 dl grädde
  • 50 g smör
  • 1 msk vaniljsocker
  • lite salt

Instruktioner:

Blanda kakao, socker, sirap, grädde, salt och pepparkakskryddor i en kastrull. Koka upp på en inte allt för het platta (jag använde 4/6).

Efter det kokat i ca 15 minuter kan man börja med kultest* (grundreceptet säger att det ska koka i 35 minuter men det är inte ens lite rimligt)

När kultestet ger bra resultat blanda i smör och vaniljsocker, vispa med elvisp tills smeten börjar tjockna.

Stjälp ut smeten på ett bakplåtspapper och låt svalna, innan den är helt kall skär i rutor.

Resultatet blir en rätt god fudge om än inte den bästa under vår sol.

 

* Kultestet: Fyll en djuptallrik med kallt vatten, droppa en liten mängd smet i vattnet. Ifall den kalla smeten på botten kan formas till en kula är fudgesmeten färdig.

 

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!

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

Pixel Wizard

oktober 27, 2013

(ber om ursäkt för hackigheten i videon, nånting gick inte bra när jag laddade upp den på youtube)Pixel Wizard är mitt metroidvania-inspirerade plattformspel som jag nyttjar för att utöka mina python-kunskaper.

Spelet är skrivet i python med pygame-modulen för grafik, ljud och hantering av joypad/tangentbord. Jag började projektet för mer än ett år sedan och har arbetat på det i perioder, fördelen med att använda python är att det går förhållandevis snabbt att lägga till saker. Existerande klasser kan utökas och garbage collection och dictionaries kan användas för att snabbt ge resultat. Nackdelen är att det aldrig blir lika snabbt som ett spel skrivet i c++ men det viktiga är inte resultatet utan att göra det och att jag lär mig nya saker.

Jag har i många fall inte varit så noga med att tänka igenom saker och ting utan att bygga nytt och när det sedan finns städa upp. Denna filosofi ger snabba resultat men det har lämnat mycket kod som är halvt odokumenterad och som är i behov av att städas, men eftersom jag är ensam i projektet fungerar det bra.

Det som har tagit mycket mer tid än jag räknat med är att skapa grafik (byggblock, fiender och annat) och bygga nivåer. Koden är enkel men sedan krävs det att prova en hel del för att förstå hur det hela fungerar rent spelmässigt. Kikar men på grafiken så syns det att det är något av en amatör bakom penseln men det är kul och jag tror jag blir bättre på att pixla grafik och animera.

Projektet är fortfarande roligt och jag kommer arbeta vidare på det som ett hobby-projekt under lediga stunder. Förhoppningsvis kommer jag att lägga upp ett par ytterligare blogg-poster angående olika delar i arbetet och tekniker jag använder.

Alla kommentarer är välkomna!


Följ

Få meddelanden om nya inlägg via e-post.

Gör sällskap med 202 andra följare