|
Jonasfj.dk/Blog
A blog by Jonas Finnemann Jensen
May 24, 2009 TheMatrixDistributed, distributed realtime ray tracing
Now I’m finally done with my second semester project at Aalborg University, and as usually I publish my things here. This project is about distributed realtime ray tracing. Which have been fun, because ray tracing is CPU bound and it have been a joy to play with all sorts of hacks and optimizations.
The report discusses what the demand for ray tracing is, what ray tracing is and how a ray tracer can be implemented, covering the basics of ray tracing and bounding volume hierarchies. It also discusses how distribution could be done, which is the only slightly new thing in it… It’s not a perfect report there’s still some areas where the English is kind of bad and some sections that could use a rewrite or two 🙂
Nevertheless, considering the circumstances I’m satified the result. And the group have worked fine…
Now the interesting part, TheMatrixDistributed, as a part of this project we implemented a distributed realtime ray tracer, with bounding volume hierarchies, spheres, planes and triangles that supports textures. We also did a small obj parser to import models exported from Blender. TheMatrixDistributed is implemented in C++ and it’s turned out to be quite fast, considering that the rest of my group have little to no programming experirence. When distribution to 6 dualcore laptops and a quadcore desktop we got around 8 FPS at best with 1024×768 screen and about 100,000 triangles in the scene, not filling the entire screen.

The frontpage image (original 1024×768) seen above has about 1,000,000 triangles it was render on 6 dualcore laptops and a quadcore desktop at about 0.6 FPS with 4x antialias.
Though the report and TheMatrixDistributed probably isn’t of much value to anybody it’s published here if anybody should be interested. The report is released under Creative Commons Attribution-Noncommercial-Share Alike 2.5 and TheMatrixDistributed is released under GNU GPL.
January 31, 2009 Ny laptop, Lenovo Thinkpad R500
Så blev det endelig tid til at få en ny bærbar, jeg har længe gået og truet min Toshiba med at den skulle ud… Til sidst holdt batteriet også op med at virke, men efter 3,5 år som min primære desktop må man også indrømme at det er godt klaret at den overhovedet er i live endnu…
Derfor har jeg fornyeligt anskaffet mig en Lenovo Thinkpad R500, med 2 GiB ram, 250GB harddisk, dualcore 2 processor og 1600×1050 i skærmopløsning, sidste nævnte skal man vende sig lidt til… Verden er jo blevet næsten 4 gange så stor 🙂
Da jeg fik den, havde den en fin Windows Xp installation der fyldte hele harddisken og havde de omkring 70 fuldstændigt totalt uundværlige baggrundsprocessor kørerende. Jeg formoder at ironien er tydeligt, det tog mig i hvertfald ikke ret langtid at få lukke ned for det skidt. Så prøvede jeg om jeg kunne få system gendannelses partitionen til at lave partitioner og gendanne, men fandt ikke uden videre ud af hvordan man skulle gøre det… Hvis man da kan det…
Det lykkedes mig dog, uden størrer problemer at installere Ubuntu 8.10 på PC ved at formatere fuldstændigt. Jeg var dog så betænksom at efterlade en lidt plads til en Windows partition, hvilket jeg nu har installeret fra VirtualBox 🙂 Jeg har ikke prøvet at boote den uden for VirtualBox, og tvivler også lidt på at den vil samarbejde…
December 15, 2008 RaptorMail, an encrypting GMail client
Tomorrow, I’m finally turning in my P1 project, that’s the first semester project, at Aalborg University. The project is about RSA, and usability of encrypting email clients, and as a part of the project we’ve implemented an encrypting email client for GMail. In Python, with PyGTK and SQLite as backend, e.g. access mail while not online.
Anyway, I thought I’d publish the report here for anyone to stumble upon. Honestly it’s not that great, it’s written in English and is subject to some serious gramma issues, as we’ve been pretty busy actually getting it ready… For those who does not know what a P1 project at AAU is, it is a project conducted by a group of 4-7 students. Most of the education at AAU, happens through these kind of projects, which is kind of nice and gives a lot of freedom. But just for the record, I have not written the entire report myself, so do not blame me all the horror that may be found within it… 🙂
Enough about the report, during the project we also wrote an encrypting GMail client, called RaptorMail – don’t ask why. A GMail client is actually quite interesting, if I managed to find the time, it would be real nice to nail the last few bugs and integrate it with GPG… An application to access GMail through a non-webinterface while still maintaining the same feature set would be nice to have. And cacheing all mail for offline usage is an absolute killer-feature.
But I’m afraid I have a lot of other small projects on my mind too, so actually getting it out there is probably not going to happen. But if anybody is looking for a way to synchronize and interface GMail with a local database from Python the “gmail_cache” module I’ve written for this project is fairly comprehensive and well documented.
October 29, 2008 Announcing TheLastRipper development discussion group/list
It’s been quite a while since I’ve been actively developing TheLastRipper, even though I’ve been promising myself I’d find time for it over and over again…
But since there’s other people who have shown interest for the project, I’ve decided that it’s probably best if project coordination happens in an open forum instead of just sending mails between developers. Therefore I’ve created a TheLastRipper development discussion group for discussion of project direction, features, technical matters etc. without always having to create an issue in the issue tracker.
I’m not leaving the project, just realizing that with my current activity or just in general, it’d probably be good for a project with multiple developers to have a development list for discussions of all the stuff we can’t fit in the issue tracker.
So if you’re interested in TheLastRipper development join today…
Update: I’m happy to announce that Andreas Langmann is also a project owner now, so that I’m not the only administrator…
August 31, 2008 Så er jeg flyttet hjemmefra…
Så er sommeren ved at være slut og studiestart lige om hjørnet. I går flyttede jeg så til Aalborg, og nu er jeg så altså flyttet hjemmefra… Som siturationen er har jeg 3 kg kylling, 22 pølser, en pose boller, og en fryse pizza i fryseren; derudover har jeg 4 skriver rugbrød og pose havregryn… så med alt held går der i hvert fald mindst en uge inden jeg flytter hjem igen… 🙂

Ellers går det faktisk fint, jeg har fået indrettet mig praktisk i min 34m² lejlighed og i går fik jeg, med hjælp fra mine forældre, købt det meste af alle de mærkelige små ting man går og mangler. F.eks. bradepande, karry, tørrestativ og meget andet… samt 2, på anden dagen, stadigt levende potteplanter…
July 8, 2008 Bøllebob – Børnesommelejr 2008
Så blev det mandag og jeg har næsten fået sovet ud fra sidste uge børnesommerlejr. Jeg var nemlig med på kfum-kfuk distrikt midtjyllands børnesommerlejr igen, faktisk for fjerde år i træk – et tal der begynder at virke skræmmende. Vi havde en fed lejr, og man må nok tilstå at jeg var en smule træt da jeg kom hjem…
Jeg var i år igen, leder for nogle 5-6 klasses unger, vi startede i år ud med et handicap løb, sådan for at ryste ungerne sammen. Løbet gik ud på at vi delte ungerne ind i 4 hold og derefter påførte dem nogle fysiske handicaps med malertape til pigerne, pakketape til drengene og gaffatape til dem der snyder 🙂 Efter opdeling og påførelse af handicaps skulle de ud til 4 poster. Første post var et forhindringsløb, opsat i en gymnastik sal, så forholdende var jo ideelle til den slags. En anden post gik ud på at hoppe i sjip, derudover havde vi også en post hvor holdet skulle folde en presning sammen mens de stod oven på den. Sidst men ikke mindst var der video maraton, her havde jeg nogle video bånd, som de skulle rulle ud, mens de gik maraton oven på dem. Det vidste sig at være en ret hurtig måde at få set et helt bånd på. Det kommer vel ikke som nogen overraskelse (pas på, sort humor) at “My Little Pony” båndet vandt stort. Dette resulterede i at jeg kom til at fortælle en godnat historie om My Little Pony, der involverede både den specielle relativitets teori og newtons tredje lov. Noget der vidste sig at være en meget underholdende oplevelse……

Senere var vi på hike, det startede for mit vedkommende ved at jeg faldt i søvn i en grøft på en post på vej til overnatningen, der sov jeg så under middags solen og blev godt solbrændt. Ved min post legede vi kims leg med kikkert, hvilket faktisk var vældigt underholdende. Den mærkeligste post i år, som dog ikke var nær så sej som den vi havde sidste år, gik ud på at ungerne skulle løbe stafet og spise flødeboller undervejs. Flødeboller os ledere havde brugt natten forinden til at fylde med majonæse. Vi serverede selvfølge de overskydende flødeboller sammen med køkken tanternes lagkage til lederhygge den efterfølgende aften; hvilket bestemt var hele besværet med at fylde flødebollerne værd! Sidst men ikke mindst, skal det da med hensyn til hiken siges at der blev født en kalv på gården hvor vi overnattede. Jeg var heldigvis ikke med til at overvære det, men da ungerne fik lov at navngive kalven kom den efter sigende til at hedder Jonas, da det var det værste navn ungerne kunne komme i tanke om 🙂 Personligt har jeg også lidt ondt af kalven, specielt fordi det var en hun-kalv…
June 28, 2008 Så blev man student, med hue på hovedet
I den forgangne uge er jeg blevet student, og har hermed afsluttet HTX. Med et snit på 9,6 kan jeg også godt være meget godt tilfreds med mine karakterer. Herunder ses mine eksamenskarakter:
Studie område 2 |
7 |
Matematik Skriftlig |
12 |
Dansk Skriftlig |
10 |
Fysik Skriftlig |
12 |
Engelsk Mundtlig |
12 |
Teknik |
12 |
Dansk Mundtlig |
7 |
Jeg synes også selv at alle mine eksamener er gået meget godt. Der var lige teknik, hvor tiden gik lidt for hurtigt og jeg ikke fik sagt noget fornuftigt, men så var projektet heldigvis så godt at de ikke kunne give mig mindre end 12. Til dem der ikke har hørt om mit afsluttende teknik projekt, så var det et intelligent hjem under navnet iHome. Systemet var bygget op omkring en webserver, der bestod af et atmega644, et SD-kort, en enc28j60 ethernet controller og lidt andet godt. På webserveren kørt uip (Tcp/Ip stack), Tiny FatFs (FAT implementating), diverse drivere, en simpel HTTP server til både statistiske sider og Web API, diverse hardware drivere og en mDNS-responder name resolution implementering. Sidst nævnte er jeg selv lidt stolt af at have skrevet, mange af de andre komponenter er tyv stjålet andre steder fra. Webserveren var tilsluttet LCD, keypad, tribleastabilmultivibrator (alarm), dørlås, vindue åbner samt diverse sensorer. Jeg har valgt ikke at frigive projektet da kildekoden er en smule mixed og meget hacked. Men dele af systemet er tilgængeligt i SVN hos avr-uip.
May 16, 2008 Sidste skoledag…
Så er min skole tid på HTX forbi, nu mangler jeg blot eksamenerne og så er jeg student. I går var det min sidste skoledag på HTX, og da skolen var færdig, var vi til galla på HTX. Hvilket var vældig hyggeligt, og danset fik vi i sagens natur heldigvis ikke 🙂
Kl 24.00 fik vi udleveret årskarakter og eksamens udtrækninger, og jeg fik trukket Dansk, Engelsk mundtlig samt Dansk, Fysik og Matematik skriftlig. Derudover skal jeg selvfølgelig op i Teknik A og desværre også studie område 2 (“desværre”, fordi ikke engang bekendtgørelsen definere tydeligt hvad det går ud på). I årskarakter har jeg fået som følger:
Astronomi C mdt. |
10 |
Dansk A mdt. |
10 |
Dansk A skr. |
7 |
Engelsk A mdt. |
7 |
Engelsk A skr. |
7 |
Fysik A mdt. |
12 |
Fysik A skr. |
10 |
Kemi B skr. |
7 |
Kemi B mdt. |
7 |
Matematik A mdt. |
4 |
Matematik A skr. |
10 |
Programmering C mdt. |
12 |
Teknik A samlet vurdering |
10 |
Teknologi B samlet vurdering |
10 |
Teknologi Historie C mdt. |
7 |
Der er selvfølge intet overstående jeg kan være utilfreds med, udover Dansk A mdt. selvfølgelig, der ville jeg nok gerne nøjes med 7 🙂 Men jeg føler ikke der grundlag for en klage. Derudover er jeg personligt lidt skuffet over min Engelsk A, hvor jeg plejer at kunne gøre det lidt bedre, men jeg er nok faldet lidt af på den her til sidst… Min matematik mdt. er heller ikke overraskende, men aktivitet i matematik timerne taget i betragtning, ikke at jeg har nogle faglige problemer der. Men alt i alt er jeg godt tilfreds… Nu skal jeg bare over mine 7 eksamener.
January 14, 2008 HSH – A simple hash algorithm + embedded webserver
Lately I’ve been building a webserver, in school as a light and curtain controller, on top of an AtMEGA168 and ENC28J60, I’ve based it off an article I found at TuxGraphics.org. Which by the way is a fine place to order components for personal usage – They’re cheap and they shipped to Denmark in 2-3 days…
Anyway, the webserver software I found sends a plaintext password over HTTP for authentication. This is of course not desirable since anybody with access to the same network link can see the password. This is very bad security, especially if it’s a wireless link. And who would want a light and curtain controller if the neighbor kid suddenly hacked it.
Therefore I decided that I needed a secure authentication method. Asymmetric cryptographic algorithms are already out of the question since I’m working on a microprocessor with 16kbytes program memory. I tried to find a conventional md5 or sha1 implementation, however they were very easily too big in program size and inefficient. So I looked around and found HSH 11/13 by Herbert Glarner.
HSH 11/13 looked to be efficient, small and easy implement. Later I discovered that with my lack of experience with bit manipulation in C ladder was not true. However, I did manage to get an implementation working, it’s written in C and I’ve tested it with GCC and AVR-GCC against glibc and AVR-libc respectively. You may download it here:
Now having a webserver with a serverside hash algorithm doesn’t solve the issue. The client needs to have the hash algorithm as well. Therefore I wrote a compatible implementation of HSH 11/13 in Javascript. This may seam rather weird, and it’s sure not efficient anymore. I’ve only tested the script in Firefox 2.0, however I’d imagine that it works in other browsers as well. You may download the Javascript implementation here:
Like I said before this may seam rather weird, as the webserver isn’t capable of serving pages as big as the Javascript implementation. However the solution is to let the main page of the embedded webserver be:
< script src = 'http://mywebhost.com/myjsfile.js' > < / script>
Where “http://mywebhost.com/myjsfile.js” is a file located on a remote ordinary webserver, e.g. not served from the embedded webserver. The included Javascript file then writes an entire web 2.0 application using “document.write”. Once the web 2.0 application have been loaded it can use AJAX requests and the HSH 11/13 implementation to communicate with the embedded webserver.Apart from the main page, a simple AJAX API is all the embedded webserver needs to host. Authentication against the webserver may then be done using a HSH hashsum of a timestamp + password + data, referred to as token. Where timestamp, data and token, are send everytime an API request is made. The embedded webserver then knows the password and generates the token from the given timestamp and data, one can then authenticate the request by comparing the generate token with the received token. Note, it may not be desirable to keep track of time on a embedded webserver, so it’s easier to just check if received timestamp is bigger than the latest received timestamp, and then save the timestamp for later use.
January 12, 2008 Release of TheLastRipper 1.3.0 for Windows
Development on TheLastRipper have been stalled for a while, but thanks to Andreas’ work we’re now able to release TheLastRipper 1.3.0 for Windows. It features:
- New GUI station selection improvements.
- Using the new last.fm protocol version 1.2 (Skip now works!).
- Additional management features like skip songs already recorded.
- A few other minor details…
This release is largely created by Andreas, since I haven’t really had time for it. Which is also why it’s not ported to Linux yet, though the executables with Windows.Forms GUI runs fine under Mono/Linux, we’d like a GTK# GUI because it’s much prettier. I hope I’ll find time to do a Linux port soon…
Now some might be wondering why it’s called version 1.3.0 and not 1.2.0 – well, what can I say: It’s a “known issue” 🙂 I think I accidentally incremented it one too much, and since we can’t really delete downloads from GoogleCode it’s going to be version 1.3.0 instead. It would also look weird to have a version 1.2 featured and a version 1.3 deprecated.
Anyway I don’t think the version number thing is so bad either, I think I previously stated that there wouldn’t come a version 1.2.0, because I was going to rewrite the codebase. Because a rewrite would be needed to make a clean, easy portable and extendable backend implementation of the Last.fm protocol version 1.2. I started development of such a clean backend, but it’s still stuck in development, since I don’t have time for it at the moment.
« Newer Posts — Older Posts »
|
|