1. …Yuup.

     

  2. some gifs.

     

  3. While signing up for some free education (it’s a bavarian thing), i took some pictures of my hood.
    It turned out pretty good, considering the sensor on the galaxy s3 is like half a centimeter big.

    wallpapers: 3840x1080 (2x16:9), 3840x1200 (2x16:10), 3200x1200(2x4:3)
    full-size: full-size 1:3.511 (10435x2972) 1:3.55 (2x16:9), 1:3.22 (2x16:10), 1:2,667 (2x4:3)

     

  4. first iteration
    second iteration
    wee hee

    everyday im blenderin’

     


  5. Java 7 and Files

    I was happy about the fact that Oracle decided to reiterate their grasp on handling Files in Java 7.

    So, there are mainly the new classes java.nio.file.Files and java.nio.file.PathFiles provides methods like isDirectory, exists, isReadable or copy. While the first of them are familiar from java.io.File, copy is new and allows for native-like performance when copying data. I haven’t performed any specific Benchmarks, but research suggests they are more lightweight when used heavily and use the native OS functions for copying stuff. Also, handling symlinks seems to be prettier now.

    Getting to the point: Beware of java.nio.file.Files.isReadable()! When converting tuSync to this new API, I noticed my code for checking my filebase had gotten really slow. Some profiling later, I found the culprit.
    When checking about 10,000 files for read access, my profiler showed me this:

    Method           —            Avg. time (ms)
    java.io.File.canRead()          
    — 0.0333
    java.nio.Files.isReadable()    2.5679

    Which means it takes about 80 times longer for Files.isReadable() to return.

    According to this, which is my current system (Win7 x64), I am encountering a bug, which is already fixed. So if you run into this problem, either use the workaround path.getFileSystem().provider().checkAccess(path) or the old method, because it does exactly the same.

    If you are in the future and Java 8 is out, you can happily update your JDK and move along to, like, attending to serious problems.

     


  6. Music organizing philosophy, part 1

    Some general thoughts about how to store my music metadata.  

    Warning: rather long read. If you are into music and are interested in a real-life example of linear algebra, read along.


    Music is most fun when it’s surprising, but meets your taste. Music listening (marketing) systems like Last.fm are based on that principle. Underlying suitable algorithms thus need a formalization of aesthetical similarity and a concept of what kind of music it is.

    Music in a database should therefore, additionally to being ordered in Artist/Album/Genre, have attributes like mood, tempo, syntheticness or aggressivenessThe concept of tags, which I quite like, is an approach to this. Tags are boolean only, so they can’t always be precise. A song can have a tag or  well,  not have a tag. By having a ginormous amount of sub-genres, sub-sub-genres and sub³genres, you can still add some granularity, however giving a song such tags can be time-consuming and mostly inaccurate.

    Last.fm solved this by having each user tag his/her songs and display the most-used tags on a song first. For this to work, the song has to be listened to by many users. For less well-known music, there is never enough tag data for a song.

    How to solve this?

    With Math

    Woo, math. You could describe a song with a set of properties (see above) each having a value specifying to what extent that property applies. Assigning these values (for me) often requires more thinking time than just assigning genres (or subgenres). Genres are basically predefined sets of values for the abovementioned properties, and because they are easier to deal with (in your brain), let’s use a set of genres and a value for how much this song represents a genre.

    Mathematically, a song is just a point in the n-dimensional space of properties. Viewing it as a space where the genres are the dimensions (so just a different basis, linear algebra whee), we can assign it coordinates in that space. If we have the mappings from our genres to their properties, using a little geometry, we can derive properties from a song by transforming the (genre,value) tuples to the (property,value) basis. This basis change happens through a transformation matrix, let’s call it Mg→p.

    The number of dimensions is rather infinite, let’s limit it to the number of genres a user listens to.

    What now?

    So now that we have every song assigned a vector in our genre-basis, we can calculate the songs properties and also know, which tags (= genres) other users would assign to such a song.

    Using the data we gain about the song from the user, we can construct and correct the genres position in the property-room, assigning each genre a vector of properties. From that, we can also construct Mg→p.

    Going even further, since genres are often broad definitions, we can instead assign to a genre for each property a mean value and a standard derivation, which, when combined, gives us a definition of the variations (and fixed properties) of a genre.

    We need to go deeper

    Additionally, a user might react differently to a given song based on his current mood, situation or the time, giving it different ratings. So, when assigning values to a song, we need to compensate for how the user rated the other songs he listened to in the last few hours, comparing offsets and trends in specific properties.

    If we ask the user about his mood, we can even build a profile and, when there is enough data, tell him what genres he might like in his current mood.


    Conclusion: iTunes just isn’t good enough.

    Next time: How do we capture all that data and use it to play the user music to his liking?

    If you’re wondering: this post is a part of my attempt to design (and make) the best media-manager i could imaging. For updates on it, just follow https://github.com/cfstras/cfmedias

     


  7. Go (a programming language by Google)

    Reading the Go documentation makes me drool. I mean, seriously, how has noone ever thought of that stuff?

    So, if you’d like to learn a new programming language, try Go.

    Interesting Links:
    http://golang.org/ - main homepage (the homepage is written in go!!11)
    http://tour.golang.org/ - an interactive tour covering the basics (also written in go)
    http://golang.org/doc/effective_go.html - a more in-depth guide on how to get efficient in Go

     


  8. tagged


    I was tagged by bleedingindisneyworld (nsfw).

    Since I try to keep this blog a “productive results only”-thing (except for extraordinary gifs of daleks), i’ll be too lazy to think of 11 tumblr people i know and 11 questions, but answer them anyways. :D

    Rule 1: Always post the rules

    Rule 2: Answer the questions the person who tagged you has written and write 11 new ones.

    Rule 3: Tag 11 new people and link them to your post. 

    Rule 4: Let them know you tagged them.

    • What did your former teachers (probably) think about you?
    i know of a few that thought i was smart, but i am sure of some who saw me as incompetent and unable to achieve the class goal (who’s laughing now?)
    • What are you better at than most people?
    probably programming (and knowing where every single feature in winXP/win7 is hidden)
    • What’s the most embarrassing interpret you still listen to once in a while?
    i am very enthusiastic about my taste in music: last.fm - cfstras, but if i have to name one; i would say Lana del Rey, partially because i dislike the way she sells herself.
    • Why aren’t you perfectly happy right now?
    because i’m sick.
    • What do you like most about getting drunk?
    the friends i usually meet (if) i get drunk.
    • Why do you think i still have only 73 followers? bahaha
    6. probably because i haven’t found “my” audience :]
    • Which celeb would you like to punch in the face and why?
    why punch them? they didn’t do any harm to me.
    in a scenario where i wouldn’t be so pacifistic, charlie sheen would be my first choice, because he killed 2 1/2 men
    • Which TV show do you like most and why?
    Doctor Who has been my “all-time” favorite for some time now:
    time travel, story line, characters, concept
    • Favorite movie?
    In Time because the idea of mapping money to lifetime is ingenious
    also Inception.
    • Who’s role would you like to play for one day (can also be someone you know personally)?
    the doctor (but i would probably freak out over all the burden and responsibility)
    • What would you like to change about your personality?

    i would certainly profit from a slight decrease in urge to procrastination, but that might cause overheating and memory glIIIIIiiiIItches

    bar har har, how i laughed at that last one.

     

  9. So i finished my project for uni, whaddaya say.

    (here’s something i learned: never, ever, apply a subsurface modifier if you want to edit your mesh again)

    hi-res

     


  10. Rants: Part 4, about MTP & PTP together with Android 4

    Android (since Honeycomb) switched from USB Mass Storage to MTP/PTP.

    I understand the reasons for (some) switch, it’s just simpler to avoid filesystem-mess when your average windows starts crapping at that exFat. In general, it makes it easier for device developers to figure out partitioning, since they don’t have to unmount the drive before making it accessible to the computer.

    Now, there’s two points I absolutely don’t understand.

    First: Why the HELL would you completely take out any support for Mass Storage? Every PC has it. Most smartphones have an sd-card that could be unmounted without any concerns. At least let me mount my SD card!

    Second: WHY MTP? Has anyone noticed that the current implementation of MTP clients is absolutely horrible on the PC side? I don’t know about Mac, but MTP on Windows has some horrible memory leaks (yup, i really got a complete system crash from just copying files), it’s terribly slow and most important: it’s not implemented as a mount protocol, but as something else you can only access through explorer, not through your average sync program.

    On Linux it seems there are better implementations with FUSE, i might just have to make the switch - oh wait - there’s no good music manager for linux, so why bother (let’s not discuss that).

    So while I am stuck with taking out my SD card whenever I have new Music, maybe someone will come up with a way to make my sgs3 enable UMS again. I mean seriously, this is a huge step backwards.

    /edit - Quick Update:

    I figured out how to work around Samsung and re-enable USB Mass Storage. Wee.

     

  11. click the high-res link!

    doin some blenderizing again - what is the optimal file size for tumblrgifs?

     

  12. whoayee:

    this is fantastic

    INTOXICATE

    (via thingsthatrhymewithexterminate)

     

  13. the font turned out weird - this took too long to render.
    needs more rendertime. i like the glass, though.
    single-monitor-version of the above

    my recent advances in cycles for blender \o/

    hi-res dualmonitor wallpaper: http://cfs.q1cc.net/temp/blender/mirrors2k.png

    hi-res wallpaper: http://cfs.q1cc.net/temp/blender/q1ccblue2k.png

    hi-res glass (but noisy, needs more rendertime): http://cfs.q1cc.net/temp/blender/ice.png

    don’t hesitate to ask for more.

     


  14. Memory Management in Java

    Since this is a pretty serious topic which is highly discussed, I will try to summarize all the arguments you might be reading and concluding them.


    new This(); new That();

    while (true) { new Crap(); }

    //fuck you, buy more ram!

    throw new OutOfMemoryError();

    // it will never change.

     

  15. fuckyeahcrashcourse:

    Pictured: Hank Green shaking hands with a plant.

    Not pictured: Context.

    oh, how pleasant to meet you, too.