2010-05-23

Experiment med matprodukter

Du, trogne läsare av denna blogg, är bekant med mitt stora intresse för matprodukter. Idag har jag framställt flera matprodukter som jag aldrig har prövat på tidigare. Ska man göra palak panir så måste man ha panir:


"Vad är det där för jävla degklump?" frågar du dig. Det är ingen jävla degklump, det är panir, en typ av ost. Den är ganska enkel att få till. Jag gjorde så här: en liter feting-mjölk i kastrull, koka upp, tillsätt en eller ett par teskedar citronsaft, rör och vänta på att det ska skära sig ordentligt, sila genom en duk eller något, knyt ihop och låt ligga någon timme. And yes, it was a success.

Paniren är en av två huvudsakliga ingredienser i palak panir. Den andra är spenat. Det går typ till så att man hettar upp olja, drar i kummin, lök, koriander, en hel chili, avvaktar ett tag, drar i en hel del hackad spenat (jag borde ha haft mer än jag hade, men det är ett välkänt faktum att man inte har mer spenat än man har), vänder ihop spenaten och kryddorna, saltar, kanske tillsätter lite vatten och låter puttra, drar i valfri mängd grädde och tärnad panir och garam masala och sen är det nästan klart. Så här såg min spenat-fattiga variant ut:


Som synes serverade jag med JIRA-ris. Frågor på det?

2010-05-20

1000 Star Trek-länkar

Simon bloggar om SvDs politiska kompass och och testar åt vilket håll den egentligen lutar. Obs! Innehåller stapeldiagram.

2010-05-16

I brist på IT-campus

Hej!

Jag tror att jag har kommit på lösningen på Greklands ekonomiska problem...

Hela historien får mig att tänka på den där ekonomiska krisen i början av 90-talet, och hur man talade om den. Någon politiker som hade ådragit sig någon form av parasit i hjärnan hävdade att orsaken var att vi alla hade levt över våra tillgångar. Det var vårt fel. Kollektivt. Folk som bara gör sin grej och litar på att de med faktisk makt gör sitt jobb är skyldiga. Inte de som med ungefär ett decenniums intervall kör in ekonomin i en bergvägg och knäcker vanligt folks ekonomi.

...jag tror att lösningen kan vara att Greklands kommuner (antagligen strukturerade precis som stadsstaterna på Platons tid) ansöker om glesbygdsbidrag från EU och gör stora investeringar i att skapa sina egna platser i Second Life. Eller Second Reality. Fast det kan bli svårare...

Men ska man vara indignerad, eller ska man inse att det är såhär det ser ut? Det nuvarande systemet är inte perfekt, men kan något vara det? Är de ständigt återkommande ekonomiska jordbävningarna ett pris som motiverar de fördelar vi får i form av (faktiskt) ekonomisk tillväxt. (Jag var nära att ta fram ironi-parenteserna där, men ekonomiskt naiv som jag är så känner jag inte till något annat uttryck än det jag har indoktrinerats att använda.)

...du promenerar (virtuellt) in i det (virtuella) Aten, pratar (virtuellt) med en (virtuellt) förbistrykande (virtuell) filosof, tröttnar (virtuellt), går (virtuellt) vidare till det (virtuella) Sparta, äter (virtuellt) en (virtuell) tallrik (virtuell) blodsoppa...

Sedan vi lämnade det förmodat urkommunistiska jägar-samlar-samhället för varierande antal tusen år sedan så har livet varit en jämmerdal. Den enda möjligheten (vi bortser från politiskt inkorrekta utrotnings-lösningar) att uppnå det igen är antagligen att kolonisera tusentals beboeliga planeter och sprida oss tillräckligt glest för att kunna gå tillbaks till ett "naturligt" liv. ("Naturligt" står inom citationstecken för att indikera att mänsklighetens anpassning till sin situation är lika naturlig som daggmaskens.)

Jag skriver en mening till, för man kan inte avsluta med en parentes.

2010-05-15

Riktigt blod

En sak jag inte riktigt fattar i True Blood är det här med vampyrblodets verkan på människor. Knarkarna tar en droppe och får värsta trippen. Har man gjort sig illa och dricker vampyrblod för att bli hel igen så får man ingen narkotisk effekt. När Jason överdoserade så fick han inte heller någon narkotisk effekt, men däremot en erektion som vägrade ge sig.

Ja, här sitter jag och försöker få logiken i en vampyrberättelse att gå ihop...

En annan sak: Wiener Sängerknaben. Du kan tacka mig när du blivit stormästare i Jeopardy med frågan "Vad är Wiener Sängerknaben?"

Dags för frukost. Idag tror jag att det blir 15 habaneros och 450 jalapenos.

2010-05-10

Stupid guy vs. food, part 2

Idag gjorde jag det: habaneron är uppäten. Det var inte roligt. Det tog tid. Jag fick svårt att få ner den för att jag blev mätt av allt vatten jag drack bara för att kyla ner tungan. Idiotiskt. Men jag gjorde det. Jag tror inte att jag ska göra om det.

2010-05-09

Stupid guy vs. food

Jag satt och tittade på Man vs. Food och funderade på hur det skulle vara att tugga i sig en habanero, bara sådär. Jag började känna mig lite sugen på att faktiskt göra det, och jag hade en liggande i kylskåpet. Turligt nog så var jag tillräckligt vuxen för att inse att det var bättre att ta det lite pö om pö, så jag valde en chili istället.

Jag har aldrig gjort det här förut, så det var lite spännande. Jag bet försiktigt av spetsen på chilin. Det smakade som paprika. Vanlig, röd paprika. Okej, det var väntat. Jag tog ett par tuggor till. Efter ungefär en tredjedel började det kännas att det inte var en vanlig jävla paprika. Jag började svettas i hårfästet. Men det blev inte så mycket värre. Det tog mig säkert en halvtimme, men sen var det gjort. Tungan brände en aning, men det var lugnt. Chili och vatten var ingen kulinarisk höjdpunkt, så jag började fundera på middag... Ost, kex och chili? Klart du ska, mongo!



Att jag hade persilja upptäckte jag när jag öppnade kylskåpet. Kombinationen var subtil. Chilin brände igen, osten dämpade, och persiljan kontrasterade på ett vackert sätt. Det var inga problem att få i sig nästa chili, även om brie-osten hade behövt någon dag till i rumstemperatur.

Som synes på bilden så är det inte så himla mycket mat på tallriken. Jag behövde något mer. Jag tog en portion till, fast andra gången bytte jag ut chilin mot ingefära. Det blev något av en överraskning. Tuggar man i sig ingefäran sakta så riskerar man inte att bränna halsen, det blev inte speciellt hett, men däremot började det brinna en aning runt munnen. Och ingefära kan vara ganska hårdtuggad när den är på det humöret.

Inte helt oväntat kom jag under denna utsökta måltid att tänka på den gamla klassikern från Djäknegatan: tunnbröd, apelsinmarmelad och jalapenos. En oväntad delikatess, som alltid gör en glad. Tröttnar man på att vara glad så kan man lägga till majonäs också, för det blir helt jävla hemskt.

Mer skit kommer så småningom här på matlagningsbloggen.

Sär skriv ning

Det här med särskrivning är ett jävla gissel. Det har satt sig i hjärnbarken på mig och antagligen dragit om ett miljardtal av mina neuroner på ett sätt som hindrar dem till att användas till vettiga saker. När jag ser en särskrivning så måste jag tvångsmässigt uttala den för mig själv, som för att övertyga mig om att det låter tillräckligt absurt för att motivera att jag irriterar mig på det.

Det här håller inte längre, så vi tar till en vanlig problemlösningsmetod: vi vänder upp och ner på det. Istället för gnälla och vara besserwissrar när folk särskriver, så bejakar vi det istället. Vi tar särskrivningen till dess logiska slutpunkt och skriver varenda stavelse för sig. För tillfället har jag träningsvärk i vaderna, så vi tar och skriver isär det: "Jag har trä nings värk i va der na." Lite svårt att läsa, men det är en vanesak, om araber kan läsa sitt språk utan vokaler så borde inte lite mellanslag här och där vara ett problem för oss.

Det här skulle även kunna hjälpa oss att förenkla och effektivisera skriftspråket. Varje stavelse skulle kunna representeras av ett lättförståeligt tecken, och det skulle bli mycket mer intuitivt att lära sig läsa och skriva. Vi spinner vidare på exemplet ovan och tar stavelserna en efter en:

  • Jag - jag är nummer ett, så vi skriver det som en etta.

  • Har - nästan en hare, så vi kör på det.

  • Trä - vedträ, naturligtvis.

  • Nings - klurigt! Men vi måste nog dela upp det i två delar: "ning" och "s". Vad en "ning" är vet jag inte, vet det ringar på "kling", så vi kan rita det som en kyrkklocka. "S" säger ormen, så vi ritar en orm för det.

  • Värk - ajajaj, vi ritar ett plågat ansikte för att illustrera värken.

  • I - här tycker jag att vi ritar bokstaven i, precis som vanligt, med prick och allt.

  • Va - "va" säger man när man inte fattar, så vi ritar ett frågetecken.

  • Der - "der" låter mycket som "dear", så vi ritar ett hjärta.

  • Na - "nanananananananana" gick signaturmelodin till Boktipset, där programledaren satt i en regnbågsfärgad soffa, så vi ritar en regnbåge.


Okej, vissa av grejerna kanske är lite långsökta, men det här är bara exempel på hur det skulle kunna gå till. När vi ska genomföra det i praktiken så kommer det givetvis vara en kommitté med en massa äldre språkvetare och annat löst folk som sitter i evighetslånga möten och hittar det bästa tecknet för varenda stavelse i det svenska språket. Jag kan tänka mig att Sture Allén kommer vara ordförande. Eller Bosse Ringholm.

Anyway, illustration:

Om vi förenklar och stiliserar piktogrammen en aning så blir det så här:

Jag tycker att den här illustrationen säger ganska mycket om hur snabbt det kommer att gå att skriva i framtiden. Men som om inte det vore nog, här har jag skrivit det i skrivstilsform, så att man får flyt när man skriver:

Jag skulle tro att det här kommer bli ungefär 200% snabbare än att stenografera. Framtiden ser ljus ut.

2010-05-02

Fler guldkorn från SVT

Ännu ett märkligt datorhistoriskt klipp från SVT, om de första datorerna. Det är kul att de låter historia berättas helt subjektivt.

Slutklämmen är något ganska fantastiskt.

(Jag hatar när andra postar länkar till videos som är flera minuter långa och tittar aldrig på hela, men eftersom alla gör det så antar jag att åtminstone några av er faktiskt tittar på dem. Eller?)

Om att skriva en app till Boxee, del 2

Efter ett andra ryck med SVTPlay-appen så har jag nu något som det funkar att använda. Åtminstone delvis. Jag återkommer till det. Så här kan det se ut:



Åh, snyggt UI! Och så står det "Hello, how are you?", så sympatiskt! Lite grejer att välja på: Barn, Drama, Nyheter... Nej, vet du vad, jag vill se något underhållande! Kultur och nöje låter som min grej!



Här fanns det både roliga och tråkiga grejer, ser det ut som: Babel, Fy Bubblan, Cirkus, det låter som värsta skiten. Jag vill se Det kungliga bröllopet!



Fyra hela avsnitt, på SVT snålas det inte! Jag tror att jag vill se Det Senaste(tm), så jag plockar det...



Ahhhh... Kunglig underhållning!

Vissa brister i appen framgår redan av bilderna ovan. UI:t är inte helt perfekt. Typ det är fult som fan. Det går det nog att fixa. Webbskrapningskoden buggar ur här och där, så ibland kanske ett avsnitt inte heter någonting. Det går nog också att fixa. Bara de program som räknas upp på den första webb-sidan dyker upp. Det tänkte jag fixa. Det finns inte med några beskrivningar eller bilder. Det tänkte jag också fixa.

Det börjar kännas ganska trevligt med webb-programmering. Det går fort och är enkelt, även om man inte vet vad man sysslar med eller har några vidare verktyg att jobba med. Förutom det här skrapandet då, det känns mest hemskt, och jag försöker att inte tänka på det. SVTPlay behöver ett publikt API. Alla borde ha det. Tänk så enkelt allt skulle vara då.

Musik-visualisering

Sådan här musik-visualisering som används i musikspelare, går den någonsin framåt? Det slog igenom med Winamp på 90-talet, och var ganska snart så mainstream att till och med Windows Media Player använde det. I nådens år 2010 sitter jag och lyssnar på musik med Boxee och ser ingen skillnad på hur det såg ut på 90-talet. Eller när det nu var Jeff Minter fipplade med de här sakerna på Amigan.



Rent grafiskt har det kanske blivit lite bättre. Nu kan man använda shaders, det kanske gör någon skillnad. Men det är fortfarande samma primitiva analys av ljudet. Visualiseringen är likadan oavsett om man lyssnar på techno eller mongolisk strupsång. För den mesta musik jag lyssnar på gör visualiseringen mest att jag får associationer till Monty Python.

Och tycker någon över huvud taget om skiten? Att det faktiskt används och tvingas på en, vad beror det på? Görs det bara av gammal vana, för att man tror att det är vad användarna förväntar sig, eller finns det faktiskt folk som tycker att det tillför något? Funkar det i kombination med hallucinogena substanser?

2010-05-01

Om att skriva en app till Boxee

Det stör mig lite att det inte finns någon SVTPlay-app till Boxee, så jag tänkte att jag skulle skriva en. Det finns en till Plex, så jag tänkte att det inte borde vara så svårt att porta den. Det visade sig vara lite svårare än vad jag hade tänkt.

Boxee har ett eget API för att skriva appar: man specificerar sitt UI i XML och drar in lite Python-kod här och där för att göra saker, t.ex. skrapa info från SVTPlays HTML. XML-en i sig är ganska knölig att jobba med. En enkel kontroll kan se ut så här:

<control type="image">
<posx>0</posx>
<posy>0</posy>
<width>1280</width>
<height>720</height>
<texture>background.png</texture>
</control>

Det blir ganska mycket XML. Det kan man klara, även om XML:en blir ganska rörig. Ännu rörigare blir det när man börjar embedda Python-kod i den.

SVTPlay-appen till Plex är skriven helt i Python. Jag måste alltså plocka ut delar ut Plex-appen och använda i min. Där dyker nästa problem upp. I Plex finns det Python-API:er för att manipulera XML, t.ex. så finns xpath implementerat. Boxee har inget sådant, och dessutom så kör Boxee Python 2.4, som inte har stöd för xpath. Så jag får skriva om all kod från Plex-appen och gjorde en egen ful-implementation av xpath. Jag läser in HTML:en från SVTPlay som ett DOM-träd och söker själv igenom det.

Det här kanske hade varit enkelt om jag hade kunnat Python, men det gör jag ju inte. Så efter ett par timmars kodande så har jag slutligen klarat av nummer ett på min TODO-lista, att kunna visa upp en lista med program-kategorierna (Barn, Nyheter, Live etc.). Förhoppningsvis går det lite lättare nu när jag har lärt mig hantera DOM-trädet, unicode etc.

Med lite mer vana så borde det vara ganska smidigt att skriva sådana här appar, fast det kommer nog vara uppförsbacke ett tag till.

2010-04-30

Tänk om vi snart har en datamaskin i varje hem!

Hittade ett ganska smärtsamt reportage om nymodigheten dataterminaler på SVT Play. Året är 1978, tempot är lågt, de finniga ungdomarna har lustiga frisyrer och männen har stora glasögon.

2010-04-29

Det skulle kunna finnas liv på Mars

Det jag gillade med det sista avsnittet av Life on Mars var att det kändes som om Sam Tyler kunde välja en värld åt sig själv, lite sådär...

Och när det gäller att välja värld så är det svårt att inte associera till Philip K. Dick. I VALIS presenteras huvudpersonen, med samma namn som författaren. Och så finns där Horselover Fat.

Framåt slutet av boken kommer det fram att Philip och Horselover är samma person, en missuppfattning, en personlighetsklyvning. Läsaren accepterar detta. Sen inser Philip att livet var trevligare när de var separerade, och de blir till olika personer igen.

Och det är det som avslutningen av Life on Mars handlar om också. Välj en egen personlighet. Det funkar. De är lyckliga där de är.

Det är vackert på något sätt.

2010-04-20

Interaktionsdesign med mera

Jag har aldrig läst interaktionsdesign (om man bortser från trepoängaren "Människa-maskin-interaktion"), men jag kan föreställa mig hur det ser ut när man kommer till den första föreläsningen på A-kursen. Föreläsaren inleder antagligen med något i stil med:

"Välkomna till A-kursen i interaktionsdesign. Det här är första föreläsningen, så jag ska gå igenom lite om administration, upplägget på kursen och så vidare... Men först tänkte jag lära er den viktigaste grundprincipen i alla interaktionsdesign: listor som wrappar är VERBOTEN. Och när jag säger 'wrappar' så menar jag inte en listjävel som hoppar tillbaks till första elementet när man står på det sista och trycker på neråt-pilen. Jag menar listor som gör det utan att hoppa, som låtsas som att de är oändliga, så att du inte märker någon skillnad mellan att hoppa från det sista till det första elementet och att gå från det första till det andra. Blunda och håll den tanken medan jag lägger 5 minuter på att gå igenom var ni hittar kurslitteraturen och vilka frågor som kommer på tentan och vad den hjärndöda labbassen heter, så kommer jag tillbaks till den och lägger resterande 83 minuter på att förklara varför wrappande listor är hjärndödare än labbassen."

Jag testade det här Plex, som är som Boxee eller XBMC, fast ett mellanting. Lite mindre open sourcigt än XBMC, men UI:t ser ut som XBMC. Fast med en wrappande jävla lista i huvudmenyn. Så sjukt störande. "Oj, så många alternativ det finns i huvudmenyn", tänker jag när jag har scrollat ner ganska många steg. Sen upptäcker jag att det är för att den wrappar utan att varna på något sätt. Där var jag nära att ge upp. Sen kollade jag om den kunde scrobbla musik. Det kunde den. Sweet, den ena killer-featuren på plats. (Vän av tempus stör sig eventuellt på blandningen av imperfekt och presens. I så fall hänvisar jag vänligen men bestämt till "Markens gröda" av Knut Hamsun, där tempus-blandningen var/är en del av det som ger/gav en sådan skjuts i språket och som ger/gav honom Nobelpriset.)

Sen kollade jag på apparna. Där börjar sirenerna gå igen: apparna är indelade i något som ser ut som kategorier, men visar sig överlappa. Det vill säga, det är taggar snarare än kategorier. Så om jag vill leta upp en viss app så kan den finnas i någon av avdelningarna, eller i tre av dem. Och vissa av avdelningarna verkar ha i stort sett samma innehåll. Okej, det är en arbetsskada, men i kombination med den wrappande huvudmenyn så klarar jag inte av det. Goodbye plexophiliacs, jag stannar hos Boxee, vars UI jag också skulle kunna ranta om en hel del, men jag slipper i alla fall de mest hjärndöda egenskaperna hos Plex.

Nördigt nyspråk

Dagens Arne Hegerfors-doftande ordvits: nightware.

2010-04-19

Mediakonsumtion med mera

Förra veckan köpte jag en Jobs Mini för att ha som mediaspelare. På den installerade jag Boxee, som jag fått rekommenderat. Boxee är en typ av mediacenter. Det ger mig ett UI på TV:n och låter mig spela film och musik på datorn och på internet. Jag har inte köpt någon fjärrkontroll, men det funkar med Jobs-telefonen.

Tyvärr är inte Boxee helt stabilt. Ibland knäpper det till i högtalarna på ett ganska obehagligt sätt. Det är dåligt på att avsluta sig när man försöker logga ut. Men det gör inte så himla mycket. Det är ganska bra. Med alla de här små apparna som visar video från internet så breddas mitt TV-utbud på ett ganska härligt sätt. Open University, säger jag bara. Fan vad jag kan nörda ner mig i universitetskurser från Stanford om antikens historia.

Men det finns några nackdelar. Fanskapet kan inte scrobbla musiken jag lyssnar på. Om någon lyssnar på musik och internet inte hör, finns musiken då på riktigt? Sen kan man inte skapa playlists, så man får lyssna på en skiva i taget. Lite sådär som på 90-talet, när man manuellt måste byta skiva. Lite bättre än på 80-talet när man måste byta efter en halv skiva, men inte så väldigt 2010.

Boxee är baserad på kod från ett open source-projekt som heter XBMC. Väldigt open sourcigt namn, måste jag säga. XBMC kan scrobbla. Plus-poäng för XBMC. XBMC har ett sjukt open sourcigt sätt att installera plugins och appar: man browsar runt i kataloger i ett svn-repository. Minus-poäng för XBMC. Det gör att jag inte kan byta. Så jag antar att jag får försöka klara mig utan audioscrobbler tills de fixar det.

Ett tag funderade jag på att skriva mitt eget mediacenter istället. En app som låter mig browsa innehållet på min hårddisk, som spelar filmer med VLC och musik med mpd. Det hade varit något det. Men orka...

Lösningen på alla problem är som vanligt att skriva ett gnälligt blogginlägg. Kom ihåg var du läste det först!

2010-04-10

Rädda barnen

Rekommenderar den här krönikan om att skydda barnen från världens onda. Som född på 70-talet känns det inte speciellt kontroversiellt att ta upp problem i t.ex. barnprogram.

Underhållningen var ofta inte speciellt lättsmält: på TV kunde man se en serier som Trälarna, baserad på stalinisten Sven Wernströms böcker, Katitzi, om det utsatta livet som zigenare och naturligtvis Graciela om det hårda livet i tredje världen.

Barnböckerna kunde som Sprätten på toaletten handla om kapitalister som förstör miljön, eller som Lotta i Hallonby helt enkelt vara stenhårt förortsrealistiska.

2010-04-07

Da Scrumci-koden

Sedan urminnes tider har taskigt skrivna arkeologer spelade av Tom Hanks sökt den heliga graalen inom agile development-arkeologin: svaret på gåtan varför Scrum har trängt undan Extreme Programming. Givetvis handlar det om trender hitan och ditan, att IDG inte kan skriva om mer än tre saker i taget, men jag har under mystiska seanser fört samtal med andar, besökt idévärlden och ritat sanningstabeller och nått ett svar på gåtan.

Scrum är helt enkelt enklare att bända in i ett företag, eftersom det ser så harmlöst ut för de som bestämmer, d.v.s. de som har slips på sig och tänker med plånboken. "Visst, sure, ni utvecklare kan ju köra era iterationer och ha lite möten, det påverkar ju inte mig." Extreme Programming har inte bara ett lite läskigt namn (som dock kan låta lite hippt och edgy, vilket också har sina fördelar), utan ser ut budget-perspektiv livsfarligt ut. Par-programmeringen drar enligt enkel matematik ner produktiviteten till hälften, och kör man test-driven utveckling så lägger man lika mycket tid på att skriva testfall som att utveckla kod, vilket halverar produktiviteten en gång till.

Inget sådant i Scrum! Scrum ställer inga sådana krav på vad utvecklarna ska göra (parprogrammering och test-driven utveckling är dessutom bara en liten del av Extreme Programming, där finns en del som kan få slipsen att hicka till). Dessutom är det lätt att fuska med Scrum: finns det ingen på plats som förstår vad det handlar om så kan man lätt hoppa över retrospectives, reviews och till och med scrum, fippla med sprint-backloggen under pågående sprint, strunta i att ha produktägare eller scrum master, ha chefer som projektleder så att gruppen inte kan organisera sig själv etc.

Risken är dessutom stor att motståndet ökar om man inte kan få igenom förståelse för fördelarna med lättrörliga processer, vilket tvingar fram kompromisser. Grunden i Agile och Lean är att man förändrar saker som inte funkar som de borde. Förändring möter alltid motstånd. Motståndet kan leda till att Scrum-processen kvävs. Men man kan i alla fall skriva på företagets webbsida att man kör Scrum och att man har certifierat folk, så låter det som att man fattar vad som pågår.

De gamla rävarna som var med under den grå forntiden, för sådär 10 år sedan, får något nästan religiöst i blicken när de berättar om hur bra allt var när man körde Extreme Programming. Och jag tror att det finns goda anledningar till det: Scrum verkar enklare och möter mindre motstånd, men är svårare att lyckas med.

Följer man reglerna för Extreme Programming så får man mycket mer hjälp med det dagliga arbetet. Det går naturligtvis att kombinera Scrum och Extreme Programming, men det är inte så vanligt som det borde vara.

Sen kan man inte skylla allt på cheferna heller. Väldigt många utvecklare känner antingen inte till eller är skeptiska till refactoring, testdriven utveckling och parprogrammering. Men även om UML-nördarna kan dra sitt strå till stacken för att skjuta ner Extreme Programming så är jag övertygad om att det är Scrums falska smidighet som gör det så populärt.

2010-03-29

Du har ingenting i din hjärna

har inte något att säga

tänkte bara säga att jag inte har något att säga

bert

2010-03-21

Botnät på iPad

Sjukt nördig helg-läsning om att simulera botnät på superdatorer. Perfekt för att läsa på iPadden i hängmattan på tomten, det säger jag nu yo!

2010-03-20

Process för framställande av en specifik matprodukt


  • Krossa en liten vitlök, hacka två lagom starka chilifrukter och två schalottenlökar.
  • Häll olja i gryta och grunda med lite curry, garam masala och koriander.
  • Ha i ovan nämnda hackade och krossade objekt i ovan nämnda gryta.
  • Hacka ett gäng tomater och ha i grytan när det känns rätt.
  • Krydda med senap, salt, chiliflingor och mer curry, garam masala, koriander och lite vatten.
  • Riv i ett par morötter och en bit ingefära.
  • Koka i typ en halvtimme.
  • Koka en mängd röda linser i separat kärl i sådär 10 minuter.
  • Häll av linserna och dra ner i grytan.
  • Tillsätt en mängd kikärter och del cocosmjölk.
  • Låt puttra tills riset är färdigt.

För att få den där riktigt indiska känslan så vill man kanske ha en lassi till, men jag hade ingen, utan tog ett glas Carlshamns blåbärssoygurt istället, vilket väl typ är som en svensk lassi.

2010-03-17

Vilket VM då?

En sak jag såg på en reklamskylt idag är att det tydligen inte heter "fotbolls-VM" längre, utan "FIFA fotbolls-VM". FIFA tycker tydligen inte att de är tillräckligt synliga, och väljer att branda sitt största evenemang med sitt eget namn. Perfekt, för det är väldigt knöligt att säga, så syftet de kan tänkas uppnå är att folk antingen skiter i det eller blir så trötta på att säga det att de helt enkelt slutar prata om fotboll och går över till curling istället. Det vore i och för sig ganska vettigt, med tanke på att Sverige faktiskt brukar vinna i curling. Sen är det ju väldigt praktiskt om någon annan organisation skulle välja att starta sitt eget fotbolls-VM, t.ex. UEFA. Då kan man skilja på dem genom att tala om FIFA-VM och UEFA-VM. Så där som i boxning, där det finns tre världsmästare.

2010-03-15

Träd, gräs och stenar

Det blir en del programmering här just nu, men jag kanske är periodare. Eftersom jag är periodare så skriver jag inte kod tillräckligt ofta för att vara speciellt bra på det. Därför kan jag bli entusiastisk över idéer som smarta människor, som DU, tycker är bisarrt uppenbara.

Idag skulle jag skriva en funktion för att kolla hur djupt och brett ett träd är, där varje nod i trädet kan ha ett godtyckligt antal barn. Enligt KISS-principen så delade jag upp den i två, och skrev den enklaste först. Det enklaste är djupet, där man helt enkelt gör en rekursiv djupet-först-sökning (ah, direktöversättningar av datatermer, jag borde söka jobb på IDG) och adderar ett till djupet för varje steg i rekursionen och returnerar det största värdet.

Sen skulle jag göra bredd-funktionen (the bread function), och då tänkte jag först breadth first search. Det är lite jobbigt, man måste hålla i listor med noder så att man inte doppar tårna för djupt innan man har promenerat igenom alla syskon, kusiner, sysslingar, bryllingar, tremänningar etc. Och loopar i koden, känns inte det som att det ökar den cyklomatiska komplexiteten och är allmänt 60-tal sådär? Jo.

Alltså gjorde jag så här istället: jag skrev en rekursiv djupet-först-funktion, till vilken jag skickade med en noll-initialiserad int-array och det aktuella djupet. För varje nod som besöks så ökar jag numret på djupets index i arrayen med ett, och för varje rekursivt anrop så ökar jag djupet med ett. När det första rekursiva anropet returnerar så har jag en array med antalet noder på varje djupnivå, så det är bara att gå igenom den och plocka det största numret i arrayen, som är trädets största bredd. Eller på ren svenska:

void checkBreadthRec(Node node, int currDepth, int breadths[])
Node curr = GetFirstChild(node)

breadths[currDepth]++

while(curr)
checkBreadthRec(curr, currDepth+1, breadths)
curr = GetNextSibling(curr)

Det mest komplicerade i den här funktionen är typ att jag använde ordet "breadth" som det är lite jobbigt att skriva och uttala. Om jag har gjort något misstag i pseudo-koden så blir det extra pinsamt, eftersom det här är så sjukt enkelt.

2010-03-14

Om att vilja springa iväg

Jag tittade lite på OCTest, ett unittest-framework för Objective C, som är integrerat i Xcode. Det lät inte så dumt, och det var lätt att komma igång med, även om artikeln på Apples developer-sajt verkade vara runt 8 år gammal och helt inaktuell.

Jag skrev lite tester och skrev lite kod och det funkade alldeles utmärkt, tills ett av testerna failade och det inte var uppenbart för mig hur jag skulle fixa det. Jag testade att sätta en breakpoint. Inget resultat. Testerna körs som ett steg i bygg-fasen av en separat app, så breakpoints man sätter i Xcode funkar givetvis inte.

"Tänk om någon annan på internet har haft samma problem som jag", tänkte jag. Mycket riktigt, det hade någon, som dessutom har bloggat om hur man får det att funka. Synd då att svaret är typ "gör 3000 inställningar, med kommandoradsparametrar och environment-variabler och annat jobbigt".

Som någon skriver i en kommentar: "This makes you want to run away from unit testing. Thanks for the write-up, Chris. But this so should be easier." Svårt att inte hålla med där. Och svårt att förstå hur man kan välja att integrera ett unittesting-framework i ett IDE och inte göra det möjligt att på något smidigt sätt debugga. Men när man hamnar under den polerade ytan på OSX så brukar det vara så här: det liknar väldigt mycket hur det var att köra Linux för 10 år sedan.

Dessutom är det trist om man försöker printf-debugga och råkar hamna i en oändlig loop. Det går inte att avbryta körningen med mindre än att man dödar test-processen. Om man sen försöker titta på utskrifterna så är det givetvis så ansträngande att Xcode antingen går in i badbolls-läge för evigt eller lägger sig ner och dör.

2010-03-12

Rondellhundar

Det är intressant hur folk försöker göra Lars Vilks-grejen till en fråga om yttrandefrihet. Uppenbarligen så begränsas han inte av yttrandefriheten. Det är tillåtet att förolämpa religiösa idéer i de flesta sammanhang. Men det man får ha klart för sig är att om man förolämpar någon, eller i det aktuella fallet hundratals miljoner människor med ganska bestämda åsikter, så får man räkna med att det kan komma surt tillbaka. Det är inte samma sak som en brist på yttrandefrihet. Yttrandefriheten förhindrar att man förföljs av staten för sina åsikters skull.

2010-03-07

Objekt och abstrakta datatyper

Jag har funderat lite mer på det här med objekt-orienterad programmering. När jag lärde mig att programmera på riktigt så tog det ganska lång tid innan jag såg fördelarna med objekt-orientering, trots att folk försökte övertyga mig. När jag läste eller skrev objekt-orienterad kod så kände jag att den blev krånglig och svår att följa.

Men eftersom det är allmänt erkänt att objekt-orientering är bra, och att det faktiskt är ett enkelt sätt att strukturera kod man skriver på, så lät jag mig övertygas. Att abstrakta datatyper är vettigt kan alla vara överens om, och det är lätt att tro att objekt-orientering i första hand handlar om att strukturera sin data i abstrakta datatyper. Men en abstrakt datatyp ska inte vara mer än inkapslad data. I typisk objekt-orienterad programmering blir datatyperna mycket fetare än vad de borde vara, eftersom man måste klämma in all funktionalitet i dem, även om den inte hör hemma där.

De största problemen jag ser med typisk objekt-orienterad design är:

1. Kontrollflödet blir svårt att följa, eftersom det sprids ut över en massa klasser. Algoritmer passar inte in i objekt-orienterad programmering.

2. Det är lätt att hemfalla åt bristfälliga vanor, där medlemsvariabler används istället för metodparametrar. Att använda medlemsvariabler på det här sätter är i stort sett lika illa som att använda globala variabler: metoder tenderar att ha sidoeffekter i onödan.

Den gemensamma roten till båda de här problemen är att objekt-orienterad programmering prioriterar data över algoritmer på ett sätt som gör att man måste använda skohorn för att få in algoritmerna i objekten. Algoritmer hör typiskt inte till ett visst objekt, utan sprids ut på ett mer eller mindre godtyckligt sätt mellan olika klasser. En viss bit funktionalitet hamnar i en viss klass för att den verkar höra hemma där mer än i någon annan klass, även om den inte egentligen hör hemma där.

Klasser blir typiskt mycket tyngre än de hade varit om metoder bara hade använts till vad de är menade att göra: att manipulera lokal data i det objekt de tillhör. Men algoritmerna måste in i något objekt, även om de egentligen inte hör hemma i något objekt, vilket gör att en klass som kanske egentligen skulle ha haft 10 vettiga metoder, kommer bestå av 10 vettiga metoder och 40 ovettiga.

Jag tror att det i de flesta fall är mer vettigt att dela upp sin kod i abstrakta datatyper, som man kan kalla för klasser om man vill, och gammal god strukturerad imperativ kod, som inte tillhör en viss klass. Då får man klasser som är enkla att förstå, eftersom de inte gör mer än vad de borde göra, och kontrollflöden som är enkla att förstå, eftersom de inte är utspridda över 10 olika klasser.

Enligt det här resonemanget så är språk som Objective C, Python och C++ mer vettiga än t.ex. Java, där allt är objekt. För allt är inte ett objekt. Sen finns det givetvis problem där objekt-orientering kan hjälpa, typiskt för att arv är bra i vissa situationer.

Bygger man stora system ska man titta närmare på t.ex. Component Oriented Programming, som ser ut att vara ett sätt att avhjälpa ovan nämnda problem, på ett sätt som känns överdrivet i små eller medelstora program.

Vill man läsa mycket text om det här och andra relaterade problem så finns det en hel del schyssta rants på den här sidan. Geocities, yo! Jag gillar t.ex. avsnitten under rubrikerna Granularity Problem och Do the Noun Shuffle. Kommunist-analogin är väldigt söt också.

2010-03-03

Missuppskattad

Design pattern för verkligheten: missuppskattat geni.

Ludwig Wittgenstein filosoferade på ett magiskt och sällan skådat djupsinnigt sätt kring kunskapens gränser. Positivistiska akademiker tog till sig små delar av hans budskap, feltolkade dem och utnämnde honom till profet. Tractatus förvandlades till ett manifest för språklig atomism. Var det när han bjöds in att tala på ett av Wienkretsens möten som han istället för att prata om logik läste poesi av Tagore? Filosofiska undersökningar förvandlades av ivriga analytiker till privatspråksargumentet.

Greven spelade gitarr och sjöng på ett sätt som förnyade och omformade black metal, trots att kopplingen till Bathory och Celtic Frost var stark. Om den första skivan hade släppts 2010 så hade den fortfarande varit ett under av originalitet. Mot sin vilja skapade han subgenre på subgenre, där hans musik urlakades och specialiserades, och ingen av epigonerna ville ta i galenskapen som kännetecknade de två första skivorna. Det var så enkelt att plocka upp tremolo-riffandet och skrikandet, och lämna det sårbara bakom sig.

Sen finns det säkert en massa andra exempel som skulle kunna passa, men som jag inte känner att jag riktigt kan ta ansvar för. Open source-rörelsen gjorde samma sak med Linux, nykantianerna hyllade Kant utan att ta sig an djupet och komplexiteten i hans tänkande, världseliten i längdskidåkning tog till sig skating-tekniken utan att följa upp Gunde Svans vansinniga experimentlusta, 80- och 90-talens klassorientering följde på Smalltalks radikala omformning av mjukvarudesign.

Kanske är det så det måste vara när man är alltför nyskapande. De flesta har förmågan att ta till sig en idé, eller kanske två, men kan inte vända sig om och se att det är dags att lämna allt gammalt bakom sig.

Det är sådant man kan diskutera när man promenerar mellan Guomao och Dawanglu.

Pang på pungen i Peking

Tjenare, tjenare, hej!

Nu är jag hemma igen. Har varit i Kina ett par dagar och hälsat på Olof och Moxhuan i deras för tillfället kackerlackshemsökta lägenhet i Dawanglu. I Kina är internet-tillgången lite taskig, exempel på sajter som är blockerade är Facebook och Blogger, vilket gör att mitt internet krymper till ungefär hälften.

Men vi börjar med lite överblivna bilder från Korea, tycker jag, här är en tomte:



Här är en typ av lampa som jag såg på två olika barer:



Jävligt hitech lås på TAT-kontoret. Allt man behöver göra för att ta sig in där är alltså att hugga av mig mitt högra pekfinger och använda det som nyckel. Jag uppmanar inte till den typen av beteende!



Den här grejen fanns på hotellrummet. Jag har inte en aning om vad det är.



Men från Korea åkte jag alltså till Kina. Det var i lördags. Jag var som vanligt sparsam med att dokumentera mina äventyr i fotografisk form, men här är något av ett guldkorn från Dawanglu, en bild av mig och en lika glad kanin:



Här är det som blev över när vi ätit upp allt ätbart ur den här skålen:



Den här bilden kräver eftertanke. Vad menas? Friserar de behåringen mellan skinkorna, eller klipper de åsnor? Kanske tycker de bara att "ass" är ett coolt ord. Det tycker jag. Jag gillar att loggan är så avskalad och allmänt smakfull. Oavsett vad så är det här i Sihui, där jag puttrade runt igår.



I övrigt vet jag inte. Jag gick upp 7.30 i morse. Nu är klockan nästan 05.00 kinesisk tid. Jag borde gå och lägga mig.

2010-02-26

Saker du kanske inte visste om Korea

Trots den sensationslystna rubriken (Kan en rubrik verkligen vara lysten på sensation? red anm) så kommer det här handla om jordnära ting, såsom deodorant, kontokort och kaffe.

Det är svårt som fan att få tag på deodorant här i Korea (Du menar Sydkorea. red anm). De finns på enstaka butiker som man måste få tips av locals för att hitta. När man väl fått tag på deo så är den ganska mystisk. Men vad är grejen? Svettas inte koreaner (Du menar sydkoreaner. red anm)? Hur är det i Kina och Japan, har de Axe på Konsum och Ica?

Det är svårt som fan att hitta en bankomat som tar utländska kort. De finns på enstaka ställan som man måste få tips av locals för att hitta. Den enda jag känner till, förutom de på flygplatsen, är den i Prudential Tower, tvärs över korsningen från TAT-kontoret. Vad är grejen? Behöver inte utlänningar pengar i Korea (Du menar Sydkorea. red anm)? Jag behöver pengar!

Det finns otroligt mycket kaféer, åtminstone här i Gangnam. (Förra gången jag var i Korea (Du menar Sydkorea. red anm), i byhålan Suwon (Det är en byhåla i ungefär samma mening som Stockholm är det. red anm), var den totala bristen på riktigt kaffe ett gissel (Menar du gisslandrama? red anm). Koreanerna (Du menar Sydkoreanerna. red anm) gillar otroligt svagt kaffe. Jag observerade igår en kille på kontoret som tog svagast möjliga kaffe i kaffeautomaten, och sen spädde ut det med en lika stor del varmvatten ur vattenautomaten. This is the truth that I am telling you.) Men här finns inte bara Starbucks i mängder, utan även t.ex. Tom'n'Tom's Coffee, Pascucci's, The Coffee Bean and Tea Leaf, Holly's Coffee och andra utländska och inhemska kedjor, utan även en massa små kaffe-ställen. Både espresso-ställen och bryggkaffe-ställen, som serverar alldeles utmärkt kaffe.

Koreanerna (Du menar Sydkoreanerna. red anm) gillar skridskor. De tar en massa OS-guld i skridsko-grenar, typ short track, sådan där skridskoåkning på längre bana som Tomas Gustafsson tog flera OS-guld i på 80-talet och naturligtvis konståkning. När Yu-Na gör piruetter så infinner sig ett nationellt stillestånd som får mig att tänka på Stenmark-febern i Sverige under min barndom. Och efter att ha sett hennes uppvisning idag så börjar jag förstå varför.

Även i övrigt har det varit väldigt trevligt här, jag har nästan börjat längta hit igen, trots att jag inte lämnar landet förrän imorgon. Vad ger du mig för det?

2010-02-21

Lite slumpmässiga bilder från Seoul

Gångtunnel.



Gurksoju.



Pixlar.



Konrad och Henrik.



Skyttevärn.



Stup.



Kontrollpanel.



Paraply.



Konrad, Natasha, okänd koreansk bergsbestigare.



Is.



Träningspark.



Träd, stad.



Men inte en enda bild på kimchi, what's up with that?

2010-02-14

Gangnam-gu

Idag var jag ute och promenerade lite i Gangnam. Den här byggnaden tror jag kan vara någon form av reklam för ost.



Här och där är det ganska backigt, typ sådär som i San Francisco.



Fast ofta är det mest skyskrapigt.



Men den här grejen tyckte jag var ganska fin.



Coolast av alla i hela Söul är Etoos. Typ som en Mac Store, fast inverterad. Eller lite som en dödsstjärna. Eller whatever. Men snacka om att dominera.

Kimchirisotto

Gårdagens middag, en spännande form av italiensk-koreansk fusion, var den här kimchi-risotton:



Ganska kryddig och kimchiig och faktiskt inte så dum, och en rejäl ostkoma infann sig efteråt. Lövely.

2010-02-10

- Take the bus. - The bus is too heavy!

Ikväll när jag kom hem till hotellet så hände något som fick min tillvaro att plötsligt kännas som ett textäventyr. Inte för att Gandalf dök upp och tog min karta, men det blev lite klurigt.

Jag tvättade händerna, och upptäckte då att vattnet stannade i handfatet, eftersom pluppen (fackterm) var i. Aha, tänkte jag, hur lösa detta problem? Jag började leta runt handfatet efter någon grej att trycka på, så att pluppen skulle åka upp, sådär som det brukar vara.

> SEARCH SINK
YOU FIND NOTHING.

Okej, jag är inte den som är den, varför inte försöka brute-forcea problemet, genom att dra upp pluppen med naglarna? Är det kanske så man ska göra?

> PULL PLUG
IT WON'T BUDGE.
> PULL PLUPP
SORRY, I CAN'T SEE PLUPP.

Vad i helvete, måste man ha någon typ av special-redskap? Är det så här i Korea? Vad skulle Sverker säga? Men när jag ändå hade händerna nere i det tvåliga vattnet så testade jag att trycka ner pluppen.

> PUSH PLUG
AS YOU PUSH THE PLUG, IT SNAPS UP, AND THE WATER STARTS DRAINING FROM THE SINK.

Hur hemligt var det? Lite lagom. Hur nöjd blev jag? Ungefär som när jag kanske klarade något text-äventyr vid något tillfälle. Hur kul var det då? Ja, inte fan vet jag, att klara dem lämnade inte några speciella spår. Det jag minns är mest hur Gandalf snodde ens ägodelar, eller snarare jobbade skift med Torin för att sno ens ägodelar så effektivt som möjligt. Och hur det typiskt fanns dörrar som man visste att man skulle in genom, men som var helt omöjligt att komma igenom. Och att man visste vad man skulle göra, men man visste inte hur man skulle uttrycka det så att den värdelösa parsern förstod det.

Det var bättre förr.

2010-02-07

Dagboken igen dårå

Igår åkte jag till Korea. Fast först till Holland. Där stötte jag på Carl. Hej! Sen åkte vi till Korea på riktigt. Idag är jag framme. Det var lite klurigt att hitta till hotellet, för jag fattade inte kartan och var blåst i huvudet. Sen hittade jag hotellet efter en ganska rolig omväg. Sen tog jag en promenad och en kopp kaffe och så träffade jag på Martin. Hej! Nu tittar jag på House och hoppas att jag ska bli trött och somna inom ett par timmar.

Otroligt intressant inlägg, detta...

2010-02-03

Dagboken dårå

Jo, för att först så åkte jag till Göteborg igår eftermiddag. Det snöade och blåste och blodtörstiga vargar kastade sig med full kraft mot fönstren på tåget. Det gick en timme eller två mer än tänkt, men fram kom jag. I Göteborg snöade det och var dåligt plogat. Jag och Johan åt varsinn mycket dålig falafel, sen tog vi bussen hem till honom och samtalade om viktiga ting till långt in på natten.

I morse var det friskt och härligt i luften när jag kom ut, knarrig snö under skorna. Tjusningen gick över fort, för även om det var bättre plogat så var det inte bra plogat. Jag tog buss 80 in mot stan och klev av vid Järntorget, varifrån jag promenerade till Grönsakstorget. Där lämnade jag in visum-ansökan på kinesiska konsulatet. Sen drack jag kaffe i två timmar och hämtade mitt visum.

Tåget hem avgick i tid, men blev undan för undan försenat. Till slut var det en timme sent. Jag traskade genom Malmö-slasket till jobbet, där jag pratade med killar och skrev lite kod.

När jag nu slutligen är hemma så kommer jag på att jag köpte en bok i Göteborg också.

2010-01-30

Och så kristdemokraterna då

Så de vill förbjuda hjälm vid moppe-åkning också? Det är äckligt och man ser inte vem som döljer sig bakom visiret. Fan, vi förbjuder kläder! KD-arna kan glida runt nakna. Då kan vi snacka äckligt! Är det så ni vill ha det, va, va, va? Är det det?

Lite mer iPad orkar ni

Man kan läsa om iPad på pryl-sidor på internet. Kommentarerna är ofta av typen "jag vill inte ha den här grejen, och eftersom den inte är identisk med den grej jag vill ha så är den dålig och ingen kommer vilja ha den för den är värdelös lol".

Äh, vafan, jag behöver inte blogga själv, jag citerar en kommentar härifrån:

Every geeky complaint I've heard so far basically makes it sound like people are complaining that the iPad isn't a $10,000 multiprocessor PC running Linux. You can't reprogram it at a low level, you can't do heavy video editing, you can't run Photoshop, and so on. But 90% of people don't do any of that anyway. A classic "I am the world" fallacy from the hardcore geeks.

2010-01-27

iPaddan

Jag hade tänkt att Steve Jobs inte bara skulle presentera en platt dator utan tangentbord, utan dessutom övertyga mig om att jag vill ha en, eftersom den skulle tillfredsställa något behov som jag inte visste att jag hade. Det blev inte riktigt så, men jag tror att den kan funka ändå. Den riktar snarast in sig på netbook-marknaden: det är en liten, billig dator som är lätt att använda. Just det, inget Windows XP eller någon hemma-snickrad Linux, som man kör appar utvecklade för mycket mer kraftfulla maskiner på.

Och man kan köra iPhone-appar. Det kanske i och för sig inte känns så himla hett, men det gör i alla fall att det finns en massa lättillgängliga appar att installera om man känner för det. Typ iFart och Bejewelled. Och i och med att iWork finns för 10 dollar per app så blir det svårt att hävda att man inte kan vara "produktiv" för att man inte har MS Office. Eller Open Office. Eller något annat som skulle ta en minut att starta och har ett användargränssnitt som gör att själva innehållet knappt får plats på skärmen.

Sen är den en eboksläsare också. Mycket snyggare än en Kindle, antagligen med en mycket bättre integrerad ebokaffär och med ett utbud i samma storleksordning som Amazons. Och med coola animationer när man bläddrar i sin bok.

Hade den kostat uppåt 1000 dollar så hade den varit för dyr, men för 500 dollar funkar det. Då får man bara 16 GB diskutrymme och inget 3g, men det är okej i USA och på andra ställen där det finns wlan överallt. Och den blir väldigt mycket dyrare med mer diskutrymme och wlan, och många kommer slänga några hundra dollar till på den, så att Apple inte kommer tjäna så mycket pengar på den gör inte så mycket, för de kommer sälja massor av de dyrare modellerna också. 100 dollar extra för en dubbelt så stor disk, där snackar vi vinstmarginal.



Bilden föreställer en Fujitsu iPAD.

2010-01-26

Det här är mer som kvitter än blogg

Jag tyckte senaste xkcd var så fin på något sätt.

Jag är inte längre betrodd med vatten, jag kan inte gå på vatten

Hej!

Idag gjorde jag något jättetokigt: jag hällde ett glas vatten i min jobbdator, som är en så kallad Jobs-dator. Efter diverse uttorkning, analys etc. så visade det sig att datorjäveln var död. Steve Jobs borde uppfinna en vattentät dator.

Hejdå!

2010-01-23

Bas, tenor, sopran, baryton, basbaryton, mezzosopran, alt


Häj!

Jag såg en film som hette "In the Loop", som jag kan rekommendera. För att göra en väldigt dålig jämförelse så är det som en blandning mellan Canadian Bacon, The West Wing och Yes, mr. Prime Minister. Otroligt dålig jämförelse. De svär på roliga sätt väldigt ofta i filmen. Tony Soprano har uniform och (SPOILER-VARNING) kallar en snubbe för "Frodo" på ett roligt sätt precis på slutet. Och "I am the egg-man". Jätteroligt.

Idi i smotri, som man skulle ha sagt på ryska. Klart obehaglig film-referens. Det var inte meningen. Förlåt!

Häj då!

Finns det liv

När det rapporteras att twitter tappar användare så känns det som om det finns hopp för världen. Men hur är det med molnet?

Visst låter rubriken "Svenskar kommer att dödas" spännande? Byter man ut "svenskar" mot t.ex. "finnländare" så får den en ganska annorlunda klang.

Greven har muckat och snart släpper Burzum en ny skiva. Vad ska man tro om det?

2010-01-14

Konkret get

Tänkte bara berätta vad jag gillar med A Place to Bury Strangers:

1. De överdriver och låter lika illa som Flying Saucer Attack.
2. Namnet är bland de bästa.

Jag tror att den självbetitlade debuten är bättre än förra årets Exploding Head. De vräkte på mer på första. Recensenterna gillar den andra bättre för att den är bättre pop. Men måste man kompromissa för att vara bäst? Ibland behövs det att man överdriver. Och alla recensenter är fjantar. Per Bjurman kallar Oasis för rock'n'roll, bara en sådan sak. Och tycker att Rocket from the Crypt är hårda. Det kanske är länge sedan, men jag glömmer aldrig en oförätt.

2010-01-05

Konkret syntax från abstrakt syntax

Tittade lite på ast-modulen i Python, där ast står för Abstract Syntax Tree. Man kan använda den för att parsa Python-kod och analysera eller modifiera parse-trädet. Rätt coolt. Så här kan det se när en Python-n00b använder ast för att leta upp och skriva ut en funktion i en källkodsfil:


import ast

def find_last_line(func):
last_line = 0

for n in ast.walk(func):
if isinstance(n, ast.stmt) and n.lineno > last_line:
last_line = n.lineno

return last_line

def find_func(func_name, parse_tree):
for n in ast.iter_child_nodes(parse_tree):
if isinstance(n, ast.FunctionDef) and n.name == func_name:
return n

def read_file(filename):
f = open(filename, 'r')
text = f.read()
f.close()

return text

source = read_file('test_ast.py')
lines = source.split('\n')

p = ast.parse(source)

func_node = find_func('find_func', p)
last_line = find_last_line(func_node)

for l in lines[func_node.lineno-1:last_line]:
print l


Kanske inte världens mest solida kod, men vafan. Funkar det då? Ja, det är väl för i helvete klart att det funkar:


Olsson:testo linusakerlund$ python test_ast.py
def find_func(func_name, parse_tree):
for n in ast.iter_child_nodes(parse_tree):
if isinstance(n, ast.FunctionDef) and n.name == func_name:
return n
Olsson:testo linusakerlund$


Sensmoral: det är trevligt med högnivåspråk ibland.

Summa summarum

Vargjakten nu i helgen gick över förväntan. Det var sjukt kul att springa runt full i skogen och skjuta på allt som rörde sig! Några av vargarna vi sköt på träffade vi, det var skitkul! Några dog till och med, så får och taxar kan andas ut, och älgen kan gå säker tills vi klipper den i höst.

Vi började mornarna med skinkmacka och snaps. Väl ute i skogen är det viktigt att hålla värmen och vätskebalansen, så vi surplade Arboga 10,2 medan vi spanade efter vargen. Till lunch blev det korvgrillning och lådvin. Sen satt det fint med en konjak till kaffet.

På eftermiddagarna sov vi mest. Det är jobbigt att vara ute i skog och mark. Nästa vecka är det dags för valjakt, en annan av årets höjdpunkter!

2010-01-03

Om flödet och trädet

Jag tänker inte bara på Lars Leijonborg, ibland tänker jag också på objekt-orienterad programmering, hur den presenteras och vilka problemen är. Det jag tyckte redan från början, och det handlar om något så okontroversiellt som att bygga upp sitt program av en samling abstrakta datatyper, är att koden blir svår att följa. Det är svårt att förstå ett skeende. Läser man koden så kan man sätta sig in i en modul i taget, annars blir det bara ett hattande fram och tillbaka. Det illustreras ganska tydligt om man sätter en brytpunkt och tittar på callstacken: även i ett mindre komplext program innehåller den tiotals rader, med antalet moduler i samma storleksordning.

(Reenskaug och Coplien säger samma sak i DCI-artikeln. Objekt-orienterad programmering fångar inte beteendet.)

Objekt-orientering löser en del problem (inte alla, No Silver Bullet av Fred Brooks är väldigt grundläggande, men var nog bland det bästa jag gavs att läsa när jag pluggade), och skapar andra. Borde man inte kunna förbättra kodens läsbarhet genom att visualisera koden på ett bättre sätt? Måste den presenteras som en uppsättning textfiler bara för att den alltid har gjort det? De verktyg som finns för att visualisera kod verkar mest visa klass-hierarkier. Intressant i vissa fall, men det är inte datarepresentationen jag är ute efter, utan algoritmerna.

Det här är ett problem även i mindre, rent imperativa program. När man är uppe i ett 20-tal funktioner så representerar den linjära textfilen det som egentligen är ett träd (eller en graf, för att vara korrekt) på ett oöverskådligt sätt. Jag sorterar alltid funktionerna så att funktion B, som anropas av funktion A, står ovanför funktion A i källkodsfilen. Det hjälper till viss del, men det är en partiell ordning, så det finns en stor mängd korrekta linjära ordningar enligt det kriteriet. Jag kan inte se på funktion A var jag hittar funktion B.

Så om jag vill följa ett flöde genom koden så kan jag använda mitt IDE för att "Jump to definition" när jag ser ett anrop till en funktion som jag vill veta vad den gör. Det tar mig någon annanstans i samma fil eller till en helt annan fil. Därifrån kanske jag gör en "Jump to definition" någon annanstans, och snart har jag tappat bort mig.

Tänk om man kunde koppla loss det här från den ursprungliga textfilen och visa anropen grafiskt. Ungefär så här, fast med källkoden på plats, och inte allt på en gång, och med zoomning och möjlighet att surfa från låda till låda, Exposé-stylee. Fan vad awesome det vore. Inte för att det skulle lösa alltför många världsproblem, men det skulle hjälpa till med vissa.

En annan sak är naturligtvis att folk borde skriva bättre kod, genom att inte blanda alltför friskt med abstraktionsnivåer i en och samma funktion. Det är svårt, men eftersom många inte ens verkar känna till problemet så ser det ofta värre ut än vad det borde göra. Om man inte riktigt fattar poängen med funktionell abstraktion så drar man helt enkelt godtyckliga linjer genom koden och delar upp i funktioner efter dem, eftersom någon har sagt åt en att man ska skriva kortare funktioner. Det gör det svårt att få någon överblick genom att läsa koden, även om man skulle ha Awesome Turbo Code Surfer 3000.

2010-01-01

Bäst just då

00-talets 10 bästa skivor?

Agoraphobic Nosebleed: Frozen Corpse Stuffed with Dope (2002)

Grindcore sådär som grindcore måste vara för att man ska kunna lyssna på skiten: påhittig och störd. Gillar man inte det här så gillar man inte musik.

Anna Ternheim: Separation Road (2006)

Vet inte vad hon sysslar med på senaste skivan, men Separation Road är så fin så att jag ganska länge missade att låtarna på slutet egentligen är rätt kassa. Men det gör inget, jag har lyckats lyssna sönder dem också.

Apoteket Apan: Det är något med den där ödsligheten (2008)

Det blev bara bättre och bättre och så här bra blev det till slut. Väldigt smart och snyggt. Och bra.

Basia Bulat: Oh My Darling (2007)

Så gravt sönderlyssnad att jag bara inte orkar med den, men fan vad bra den är egentligen. Lite som Agoraphobic Nosebleed, fast pop. Eller vänta, borde jag använda uttrycket "singer/songwriter"? Nej, för det uttrycket ska man aldrig använda, inte ens om sina värsta fiender.

Bohren und der Club of Gore: Sunset Mission (2000)

Bohrens smått hotfulla ambient-jazz passar perfekt till alla chillout-tillfällen.

Drexciya: Grava 4 (2002)

Jag tycker att Drexciya kan bli lite väl monotona ibland, men här lämnar de plötsligt havsbotten och flyger ut i rymden, och lyckas faktiskt variera sig lite. Det är omisskänlig Drexciya-electro, men ändå annorlunda.

Erik de Vahl: Oh My Spine (2007)

Brusigt och avkopplande som de tidigare skivorna, fast här mycket mer påhittigt och tokroligt. Brdzola skulle kunna vara den bästa chip-låten som inte är en chip-låt. Och så lite stenhård göteborgsk kommunism på det. Som Khonnor, fast inte så jävla tråkigt.

Erik Enocksson: Farväl Falkenberg (2007)

Suverän musik från den inte riktigt lika bra filmen. Passar att koppla av till om man har spelat sönder Bohren und Der Club of Gore. Jag tror att ordet som beskriver den här skivan bäst är "fingertoppskänsla". Och kanske "minimalism". Och kanske typ "Enock måste vara världens roligaste namn". Eller jag vet inte.

The Field: From Here We Go Sublime (2007)

Egentligen ganska tråkigt på något sätt, men den kändes så förbaskat fräsch och härlig ett tag, så jag känner behov av att lyssna på den då och då.

Flaming Lips: Yoshimi Battles the Pink Robots (2002)

Sjukt bra skiva som jag bloggade om här för ett tag sedan, när jag återupptäckte den. Lagom oseriöst och väldigt fina låtar.

Goto80: Made on Internet (2007)

Enligt uppgifter från Statistiska Centralbyrån så har Goto80 släppt flera miljarder skivor (jag är inte fascist, så netlabel-releaser räknas också som skivor) under de senaste 10 åren, men jag väljer ut den här som den bästa. Kanske mest för att "Best of the West" är så jävla härlig, men det finns väldigt mycket annat godis här. Bra blandning liksom.

J. Arthur Keenes Band: Pamplemousse (2009)

Det är så att man kan sätta chipsen i halsen, det är liksom popmusik fast helt chippigt. Visst kan sången kännas lite enerverande i sin snygghet ibland, men låtarna och produktionen är så fina så att man nästan kan vilja gråta lite.

Jonas Lindgren: Lights Will Guide You Home (2006)

Drone med lite popinslag, som gör att den här skivan är något mer lättlyssnad än hans andra verk. En gitarr-loop, lite pling-plong, inte bara brus.

Konono No. 1: Congotronics 1 (2005)

Congo bongo! Fick reda på den här på en techno-mailinglista jag följde ett tag. Techno-gubbarna kände att de fick kontakt med sina rötter när de hörde det här oljudet. Kan bli lite monotont efter ett tag, men bara ljudet gör att jag kommer tillbaks till Konono igen och igen.

Kraftwerk: Tour de France Soundtracks (2003)

Okej, ska man vara hardcore så ska man väl hata det här, och de har naturligtvis förlorat ledningen, men det är fortfarande väldigt bra musik i en stil som ingen annan har lyckats kopiera. Funkar dessutom väldigt bra som bakgrundsmusik när man tittar på cykling på TV. Jag har testat. Skivan är alltså i någon mån per definition bra. Eller åtminstone ändamålsenlig. Och arpeggiona i "Vitamin" är väldigt fina.

M83: Dead Cities, Red Seas and Lost Ghosts (2003)

2009 var året då jag äntligen fick uppleva nöjet att ha på mig kläder från Nordkorea, men redan 2003 kunde man lyssna på M83s Nordkorea-synth. Det är på den här skivan de säger det bäst. Vad de säger vet jag inte riktigt, men det känns som om de pratar om något. Och så finns ju the creator of the universe med och berättar om dittan och dattan också. Som Simon sa: "M83 är den bästa franska elektronika-duon sedan Air. Fast bättre."

Majessic Dreams: Listen to the Moon (2005)

Drömsk popmusik med en produktion som då och då känns aningen hotfull, vilket gör att det inte känns så platt som det skulle kunna göra med en mer konventionell produktion.

Mortifera: Vatiia Tenebrd Mortifera (2004)

Väldigt konventionell black metal i Burzum-skolan, utan mycket som sticker ut. Men det som faktiskt sticker ut är att allt är så klockrent och helt enkelt skönt att lyssna på.

Omar-S: Just Ask the Lonely (2005)

Den galnaste och skitigaste housen. Jag hade hört folk ranta och ravea om hur bra Omar-S var, men när jag lyssnade på den här skivan så fattade jag först ingenting. Det kändes bara hafsigt och allmänt underligt. Men är inte hafsigt och underligt ändå det finaste man kan säga om musik? Om det görs rätt i alla fall. Här görs det så rätt. Han har släppt en massa andra bra skivor, men det är här alla de dummaste idéerna får ta plats. Hela paketet är genialiskt, inklusive omslagsbilden.

Pan Sonic: Aaltopiiri (2001)

Vansinniga finnar som hänger med Erkki Kurenniemi i skumma technobunkrar. Här har de lugnat ner sig och slutat mata toktechno, för att istället spela hotfull ambient. Det lite jobbiga och irriterande är det som gör den här skivan så bra, i kombination med de organiska, levande ljuden. Får mig att tänka på SPK. Den enda finska skivan på den här topp 10-listan!

Peste Noire: La Sanie des siècles - Panégyrique de la dégénérescence (2006)

Peste Noires första, lite ofarliga skiva. Okej, det är black metal, så det beror på varifrån man kommer, men det här är egentligen lite för snyggt för genren, lite för duktigt, välproducerat och ja, gitarrsolona. Det är inte konstigt att det här är deras mest populära skiva, för den är väldigt, väldigt bra.

Peste Noire: Folkfuck Folie (2007)

Peste Noire får givetvis ha flera skivor med på listan, i motsats till alla andra sopor. Här har de släppt sargen, vilket syns på titeln om inte annat. De snygga, lite episka låtstrukturerna är borta, de lugna bitarna, heavy metal-gitarrsolona. Här är det rens som gäller. Det är ett jävla drag från början till slut, med undantag från några sådana där irriterande icke-låtar. Jag kan inte heller låta bli att hata den här skivan lite grann, vilket väl säger en del om hur bra den är. Galna infall och sjukt drag, vad kan man mer begära?

Peste Noire: Ballade cuntre lo Anemi Francor (2009)

Peste Noire får givetvis ha med hur många skivor de vill på listan, men de har inte släppt så mycket mer än de här tre. Senaste skivan är helt jävla störd. Ännu en helt ny stil, men fortfarande väldigt bra. Jag saknar manglet, här börjar det nästan låta shoegaze om det, men det funkar. Kanske inte 00-talets allra bästa skiva, men skulle kunna vara den knasigaste.

Robert Hood: Rare Species (2002)

Robert Hood hade väl sin storhetstid i början av 90-talet, men den här mixen är ganska speciell. Han drar upp tempot till max och mixar mycket av sina egna låtar med andra likasinnades, så det är en timmes minimalistisk, synthig hysteri. Kanske världens bästa skiva att motionera till.

Sunn O)) and Boris: Altar (2006)

Inte riktigt vad man hade kunnat föreställa sig, men någonstans i närheten. Mörkt och doomigt, men överraskande även lite gothigt. Det är inte bara gitarrmuller. Jag tog nästan med Boris "Akuma No Uta" på listan, men struntade i den av någon anledning som jag knappt själv förstår. Den är ju skitbra. Varför har jag inte med den? Jag vet inte, jag kanske är dum i huvudet.

The Twilight Sad: Fourteen Autumns and Fifteen Winters (2007)

Det här är typ sådär som Glasvegas hade kunnat låta om de hade varit så bra som alla tyckte att de var förra året. Shoegaze med hård skotsk dialekt.

Willie Nelson: It Always Will Be (2004)

Kanske inte Willie Nelsons bästa platta, för han hade väl sin storhetstid för sådär 600 år sedan, men en fin liten skiva med musik att luta sig tillbaka till.

Okej, så det kanske blev lite fler än 10, men vad fan ska man göra?

Första januari

I Språkrådets nyordslista för 2009 kan man lära sig "fina ord": fiskpedikyr, fröbomba, fuldelning, grindstad, stuprörspolitik.

Farmor fyller 90.

Jag försöker fatta vad man egentligen ska göra åt att typisk objekt-orienterad design skapar farlige monster. DCI och COP är rätt abstrakt, men känns rätt. Jag går igenom en del kod jag har liggande och observerar 12 olika observer-implementationer i samma program. Jag har lärt mig att interfaces och mixins inte är samma sak.

Google Go verkar väldigt, väldigt vettigt, vilket kanske inte är så konstigt med tanke på upphovsmännen.