Basic personligt

Daniel Brahneborgs blogg

Falsifierbarhet

Jag är ett stort fan av konceptet falsifierbarhet. Om det för en naturvetenskaplig modell inte går att designa ett test med ett förutsägbart resultat, så är det helt enkelt inte vetenskap, utan svammel. Om resultaten sedan inte hamnar inom ett tillräckligt snävt intervall, så är modellen felaktig. I Simon Singhs bok om Big Bang beskrevs en modell där experimenten träffade rätt med 6 värdesiffror, så den modellen var förmodligen ganska korrekt. En bra effekt av det här är att området hålls rent. Även om ingenting ju går att bevisa, så är det väldigt mycket som går att motbevisa. Linjen mellan sanning och fantasi blir stegvis allt tydligare.

Frågan som dök upp på Twitter för ett tag sedan var huruvida det finns någon motsvarande mekanism inom humaniora. Jag är övertygad om att någon form av “tryck” behövs även där, för att behålla någon form av kvalitet och undvika total urspårning. Annars blir det ju bara en massa “enligt källa X så Y”, vilket ju inte har något värde överhuvudtaget. Ingen lär sig någonting.

Att försöka använda falsifierbarhet inom humaniora funkar inte speciellt bra, med minimala undantag som “om man byter plats på DE och DEM så är det fler läsare som blir förvirrade och tycker det är svårt att läsa”, men det betyder ju inte nödvändigtvis att all humaniora är svammel. Att tillämpa “vetenskap är att samla fakta” på naturvetenskap funkar inte heller, då går det ju inte att förstå varför homeopati är trams.

Så, vad använder humaniora för gränsdragningsmetod?

January 27th, 2016 Posted by Daniel Brahneborg | blogg | no comments

Magisterexamen

(Borde kanske ha publicerat det här inlägget för typ ett halvår sedan…)

För att få tillräckligt med poäng till min magisterexamen, tog jag under förra våren en kurs i PHP på bth.se. Det var lämpligt att sikta på några tämligen säkra poäng, eftersom det inte kändes acceptabelt att förlora examen på grund av en missad kurs i det här läget. Jag sökte flera kurser för säkerhets skull, vilket slutade med att jag även läste en grundkurs i affärsredovisning.

PHP-kursen var relativt smärtfri. Jag hade kodat en del i det under hösten innan, så grunderna hade jag redan. Däremot var det kul att få en mer heltäckande genomgång, prova fler api’er, osv. På sista uppgiften fick jag en kommentar om att “lite mer ansträngning hade kunnat lagts på layouten”. Hallå, ser jag ut som en designer kanske? Multicolor lorem ipsum på dig själv, liksom. Sammantaget fick jag betyg B, på en skala A-F. Alternativt VG, på den mer normala VG/G/U-skalan. Även om det kanske hade varit kul att få ett A, hade det krävt mer tid än vad jag tyckte var motiverat.

Ekonomikursen var klart värre. Jag lusläste varenda rad i boken flera gånger om, gjorde alla övningar, och skickade ganska många mail till läraren med funderingar. En och annan frustration nådde både Facebook och Twitter. Till slut började saker få ett sammanhang, så på inlämningsuppgifterna fick mina grupper alltid kommentaren “mycket bra”. Tentan kändes bra, och sedan kom resultatet: 16 poäng av 20, dvs VG där också.

Exjobbet som helhet var nog något av de roligaste projekt jag har gjort. Den prestandaförbättring som jag såg i början försvann när jag hade rättat buggarna, men i vilket fall som helst lärde jag mig massor om multitrådning. Jag fick svar på de frågor jag hade haft som utgångspunkt, men upptäckte även en massa aspekter som jag inte hade tänkt på innan. Jag visste av erfarenhet att det skulle hända, men att veta att något oförutsett kommer dyka upp, och att se vad det där oförutsedda faktiskt består av, är ju två helt olika saker. Vi hade en lång dialog under månaderna som gick, jag och koden. Jag påstod och frågade saker, och fick svar och ibland missnöjda muttranden tillbaka. Vissa lösningar blev å andra sidan riktigt snygga, varpå koden glatt tackade mig och tuggade på lite snabbare.

Den magisterexamen som var mitt mål hade en hård deadline på sista juni, så sista veckorna var lite stressande medan jag väntade på att godkännandena skulle trilla in. Från handläggaren i Umeå fick jag veta att det räcker att en av kurserna (PHP eller ekonomi) rapporteras in med ett godkännandedatum senast sista juni. Om det skulle dröja in i juli innan Ladok blev helt uppdaterad hade inte gjort någonting, eller om själva examensbeviset inte hade hunnat skickas iväg innan dess. Eftersom kurserna var godkända den 17:e respektive 26:e juni, var jag hemma. Sedan var det bara att vänta medan databaserna synkade ihop sig.

Att få VG på båda kurserna med 0 poängs marginal och allt klart för en examen med knappt två veckors marginal efter 20 års velande, är kanske lite väl mycket “marginaler är för fegisar” även för min smak. Däremot känner jag mig lite nöjd med att exjobbet, som alltså skulle räcka i ungefär 20 veckor gånger 40 timmar, blev klart på ungefär en tredjedel av det.

När jag ändå hade några poäng för mycket, tänkte jag att det var lika bra att fortsätta plugga. Annars gör ju de där överblivna poängen ingen nytta. I somras läste jag därför Androidprogrammering, i höstas evolutionsbiologi, och framöver tänkte jag fylla på med fler kurser inom datavetenskap och annat för att förr eller senare komma upp på en masterexamen (dvs 2 år efter kandidat, totalt 5 år, till skillnad från den 4-åriga magister som jag får nu).

January 17th, 2016 Posted by Daniel Brahneborg | blogg | no comments

Embedded perl vs php

För några år sedan lade jag till möjligheten att köra pluginer skrivna i perl, i en av våra produkter (tänk “mod_perl”, typ). På det sättet kan kunderna skriva sina egna filter och annat, utan att behöva kladda ner grundprodukten med funktioner som bara en enstaka kund använder. Implementationen blev ganska rakt på sak: Läs in perlscriptet i början av programmet, kolla vilka funktioner som är implementerade, och via diverse magiska anrop kopiera visst data till perl-strukturer, och anropa perl-koden. Med ytterligare magi plockas data tillbaka från perl-världen till C. Kunder kan skriva egen kod, ingenting behöver kompileras, och det går tämligen snabbt. Alla har varit glada.

Sedan hittade vi en motor för embedded php. Tyvärr kunde den bara köra hela filer och inte enstaka funktioner, men det löstes genom att helt enkelt låta varje funktion ligga i en separat fil. För att komma åt datat från C-världen visade det sig vara enklast att registrera en callback. När php-koden anropar funktion X, så anropas funktion Y i C-världen. Den gör det den ska, och så återvänder man till php-världen. Data kunde skickas i båda riktningar, så vi kunde få både get-funktioner och set-funktioner. Det hela fungerade klockrent, och benchmarking visade att det gick snabbare än perl. För perl-pluginer byggde man nämligen ihop allt data i förväg, medan man för php bara gjorde det vid behov.

Den uppenbara tanken blev ju då att försöka göra samma sak för perl. Hej “perl xs“. Hahaha. Nej, det blir ingen perl xs. Visst, det är svårt att hoppa mellan C och scriptspråk med garbage collection, men det finns gränser för vad jag vill utsätta mig för.

January 11th, 2016 Posted by Daniel Brahneborg | blogg | no comments

Barnlös med syskonbarn?

Höstens kurs i evolutionsbiologi ger fortfarande nya insikter och frågeställningar. Idag började jag fundera lite mer på barnlöshet.

Bakgrund: För några decennier sedan så bytte evolutionsbiologerna perspektiv. Från att det var individer som förde gener vidare, gjorde man en 180-graderssväng och började se det som att det var gener som replikerade sig själva. Denna replikering består av en lång kedja med instruktioner för att först bygga ihop en individ, därefter få individen att å ena sidan överleva själv och å andra sidan visa sig lämplig som förälder för individer av det andra könet, för att slutligen se till att det uppstår en eller flera avkommor. Viss energi läggs också på att se till att andra individer överlever, vilket är den huvudsakliga payoffen för homosexualitet (de konkurrerar inte med heterosexuella om att få para sig, men kan ta hand om föräldralösa barn när dessas föräldrar dör).

Här finns en intressant grej. Gener vill att de själva ska få replikeras. Gener som inte vill replikeras dör ju av uppenbara skäl ut (duh). Dessutom finns mekanismer som gör att de helst stödjer andra individer som är så lika dem själva som möjligt. Ju mer lika individerna är, desto mer lika är deras gener. Individer hjälper varandra, men mer ju närmare släkt och mer lika de är.

Frågan som slog mig var hur syskonbarn påverkar individernas drift att föröka sig. Förekomsten av egna barn påverkar föräldrarnas hormoner och därmed hur de värderar saker i omgivningen, vem de vill para sig med, om de vill få fler barn alls, osv. Det borde då inte vara orimligt att anta att även syskonbarn och till viss del kusinbarn har en liknande, fast självklart svagare, effekt. För egen del har jag syskonbarn på ena förälderns sida och kusinbarn på den andres, så de flesta av “mina” gener har redan replikerat sig. Begäret att skaffa egna barn är lågt (förvisso har det aldrig varit speciellt högt).

Samma mönster ser jag hos allt fler. Personer som är enda barnet, skaffar egna barn. Ju fler syskon som har barn, desto större verkar sannolikheten vara att något annat syskon är frivilligt barnlös. Resurserna som skulle krävas för att skaffa egna barn, läggs istället på att hjälpa syskonen, ens “by” eller arten som helhet.

Är det någon som har undersökt det här mer i detalj? Pluralformen av “anekdot” är ju inte “data”, som sagt. Samtidigt finns ju massa kulturella faktorer här som ställer till det, men det kanske går att kompensera bort.

January 10th, 2016 Posted by Daniel Brahneborg | blogg | no comments

|