Guld och Malm

Guldpriset har nu (i vanlig ordning) slagit prisrekord. Ett gram guld kostade (enligt förra veckans Ny Teknik) i augusti 363:-. Med en världsproduktion på 2 500 ton är värdet på den totala mängden producerat guld cirka 655 000 000 000:-.

År 2012 ska Boliden öppna sin nya gruva Kankberg. Där har malmen en medelhalt på cirka 4.1 g guld/ton malm. Detta innebär att guldet i ett ton guldmalm är värt cirka 1 500:-. Detta ger åtminstone mig en känsla av hur extremt effektiv utvinningen måste vara. Femton hundra spänn för ett ton malm?

Posted in Funderat, Observerat | Tagged , , , , | Leave a comment

Site name generator

Do you want to start a site, but don’t know what domain to get? This is the site name generator! It generates random domain names using popular buzz words. Give it a shot! Continue reading

Posted in Coding, Fun | Tagged , , , | Leave a comment

Garbage Collecting Threads

During the work on my master thesis, I found myself sitting and running Java simulations on a implementation of a database model. The implementation had one worker thread (anonymous enclosed class extending java.lang.Thread) running in the background and made callers to the model wait for different times depending on load and such. What I then realised after running a long simulation involving several instances of the model implementation was that they all stay in memory.

The program I wrote made hundreds of calls to a method which started by instantiating the model implementation. When that experiment was done, it released the reference to the model object by simply returning. This meant the worker thread would still be running in the background.

One of the nice features in Java is that objects without any references to them are cleaned away by the Java Garbage Collector (GC). The GC starts from all running threads and sees which objects it can reach. Non-reachable objects are safe to clean away.

But since my worker thread was running in the background, the GC could not clean away my old instances of the model implementation. Also, making the worker thread a daemon thread was one thought, but that doesn’t affect the GC, only the ending of a Java program.

The solution I found was in the package java.lang.ref. The WeakReference class holds a reference to an object. But the weak reference doesn’t stop the GC from cleaning the object away. In other words, if an object can only be reached through a chain of references were at least one is weak, then the object is weakly reachable, and clean away that object. Atomically, at the same time, all weak references to that object will be set to null.

So, it was only a matter of extracting the worker thread from the model implementation, making it a normal class, giving it a weak reference to the model implementation and checking whether the reference is null before using it. Also, it is important to remove all references to the model implementation as soon as you are done with them, because hard references prevent the object from being cleaned away.

Some Java code… Both classes can be en the same file, Database.java.

public class Database {
    void updateStatesAndStuff() {
        // ...
    }
}
 
private class WorkerThread extends Thread {
    WeakReference<Database> dbRef = ...;
 
    public void run() {
        while (true) {
            Database db = dbRef.get();
 
            if (db == null)
                // Object has been cleaned away! Stop thread
                return;
 
            db.updateStatesAndStuff();
 
            // Remove hard reference, allowing it to be cleaned away
            db = null;
 
            // Sleep until it's time to update again
            timingAndSleep();
        }
    }
}
Posted in Coding | Tagged , , , , | Leave a comment

OS vs. MS

Efter att ha suttit ett antal timmar med att försöka få Windows 7 att få tillgång till mina utdelade filer på Ubuntu-burken körandes Samba gav jag upp. Men nu kom jag på att jag även hade sshd igång. Så jag laddar ner WinSCP och kopplar upp mig. Allt fungerade direkt, efter cirka 30 sekunders jobb.

Posted in Teknik | 2 Comments

Bdb upload script

Jag har länge tänkt att jag på något sätt skulle vilja dela med mig av min vardag till folk jag känner genom foton. Jag höll på med bilddagboken ett tag, men det blev så tråkigt att ladda upp bilder där med deras formulär. Men nu har jag äntligen fått tummen ur och löst problemet för mig själv, åtminstone tillfälligt.

Jag har nämligen, med hjälp av en del exempel och en bristfällig API-dokumentation slängt ihop ett script för att ladda upp bilder på Bilddagboken. Det är skrivet i PHP och använder sig av curl (både programmet curl och libcurl i PHP, funderar på att ändra till bara libcurl), notify-send och zenity. Jag kör det i Ubuntu Karmic 64 bit, men det funkar alldeles säkerligen under andra operativsystem också, kanske med lite pill. Jag tänkte hur som helst dela med mig av scriptet i fråga. Jag personligen har lagt scriptet i ~/.gnome2/nautilus-scripts/ för att kunna högerklicka på bilder och ladda upp dem direkt från Nautilus, men det går ju att göra på andra sätt.

Scriptet läser även ut datumet som namnet på katalogen bilden ligger i, i formatet ÅÅÅÅ-MM-DD eller ÅÅÅÅ_MM_DD. Det går givetvis lätt att fixa på något annat vis om så önskas (exempelvis från EXIF-taggarna).

För att använda Bdbs API krävs en API-key och ditt userid. Kommentarer i koden beskriver hur man skaffar apikey och tar reda på userid.

Och här är koden (hos pastebin).

Update: Jag har jobbat vidare en del på koden. Här är en senare variant.

Posted in Programmering | Tagged , , , , , , , , , , , | 3 Comments

Det Sista Programmet™

Inte helt sällan inom mitt område av studier är det problem man ska lösa. Dessutom problem kan ofta delas in i grupper av problem där de olika problemen har olika metoder för hur de ska lösas. Ibland kan en grupp problem ha som lösning att man omformulerar problemet och joxar runt det lite grand så att det ser ut som en annan grupp av problem som går att lösa mer direkt.

För någon vecka kom jag att tänka på det här med mjukvara. Hur många olika mjukvaror har det utvecklats under historien? Även om vi inte räknar uppdateringar och mindre utökningar som nya program så skulle jag tro att kvoten (antal utvecklade program) / (antal olika, av dess program, lösta problem) är ganska hög. Alltså att det finns väldigt många program/system som löser exakt samma grundläggande problem. Om man bara kunde identifiera dessa distinkta problem-typer borde man väl i teorin kunna skriva Det Sista Programmet™. Alltså skriva det sista programmet som någonsin behövde skrivas. Programmet som kan lösa alla tänkbara problem som någonsin skulle kunna tänkas behöva lösas av en dator. Man kanske skulle få jobba med att anpassa användargränssnitt och annan kosmetik efter rådande normer och mode. Men i övrigt skulle världens problemlösning vara tryggad.

Nackdelen med den här tanken skulle jag väl kunna tänka mig är att mängden problem som kan behöva lösas är så astronomiskt stort att det… Jag behöver nog inte skriva mer nu.

Posted in Funderat, Programmering | Tagged , , , | Leave a comment

Optimerande Kompilator

Jag har nu avslutat, lämnat in och blivit nöjd med det roligaste projektet på LTH (hittills). Kursen heter Optimerande Kompilatorer och hålls av kompilatorernas Yoda Jonas Skeppstedt.

Projektet gick ut på att vi fick en simpel kompilator för en förenklad variant av C med inbyggd simulator som vi skulle utöka med optimeringar. Målet var att en bifogad benchmark skulle köras på så få klockcykler som möjligt.

Inte nog med att jag och Jesper vann, vi spöade även alla de tidigare åren med ganska god marginal. Orginalkompilatorn körde benchmarken på ~180.000 klockcykler. Tidigare rekordet från 2007 var på 1047 klockcykler. Vår kompilator fick ner det till 950 klockcykler. (Enda besvikelsen var väl att vi inte lyckades slå dem med 100, vilket var målsättningen mot slutet.)

De kommentarer vi fått efter att vårt resultat blev (ehrm) offentligt har verkligen varit självförtroendehöjande. Jonas själv trodde inte det var möjligt att få ner siffran under 1000. Minst sagt en boost!

Posted in Programmering | Tagged , , , | 1 Comment

Brand i hooden igen

I natt brann det i hooden igen. Den här gången brann det dock i en av butikslokalerna som den förra branden höll på att sprida sig till. Inte lika illa denna gången. Tre brandbilar, ett antal polisbilar och en fruktansvärd röklukt. Ibland undrar man ju vad det är för ställe man bor på…

Sydsvenskan skriver lite om nattens brand och även förra branden.

Posted in Observerat | Tagged , | Leave a comment

Äntligen online backup

Så, har man äntligen kommit loss och skaffat sig en online backup. Efter många års letande med ljus och lykta har valet äntligen gjorts och landat på Jungle Disk. Detta motiveras främst med att det finns bra stöd för Linux, det låga priset, samt det faktum att man bara precis betalar för det man använder.

Den första backupen verkar, som väntat, bli en långdragen historia. För närvarande transporteras data med den hisnande hastigheten 200 kbit/s över min 10 Mbit-lina. Med 25.7 GiB data att kopiera beräknas jobbet ta tolv dygn på sig att bli färdigt. Knappast hållbart va?

Posted in Teknik | Tagged , , | 2 Comments

Danskt territorium?

Den 7 juli var jag och flickan min på minisemester i nordvästra Skåne. Vi hann avverka både Mölle, Kullens fyr, Nimis och mycket mer. Medan vi var nära nordvästspetsen (vid Kullens fyr ungefär) ringde en person om ett extrajobb jag hade sökt. Samtalet blev inte långt utan vi fortsatte vår trevliga naturupplevelse.

Men för några veckor sedan damp det ned en liten överraskning i form av en mobilräkning. Mobilräkningen i sig var ingen överraskning, däremot påstod den att jag hade varit i Danmark den 7 juli och tagit emot ett drygt två minuter långt telefonsamtal. Jag antar att min operatör råkar ha dålig täckning just där och deras danska kompanjon väldigt bra täckning.

Då ställer man sig självklart frågan; Vad är det som avgör vilken taxa jag är skyldig att betala? Är det i vilket land jag faktiskt befinner mig, eller bara helt enkelt vilket nät jag använder? Som konsument vet jag vad jag tycker är rimligt.

P.S. Och ja, man hade absolut kunnat klippa in något skämt om att Skåne ju faktiskt tillhör Danmark här, men det känns uttjatat. D.S

Posted in Observerat | Tagged , , , , , , , , , | 1 Comment