Here's my code for quickly uploading files to virustotal and retrieving the reports.
import postfile
import sys

import json
from StringIO import StringIO

import urllib
import urllib2

import time

import webbrowser

apikey = 'YOUR API KEY ' + \
         '  GOES HERE  '
resources = []
for i in range(1, len(sys.argv)):
    file = sys.argv[i]
    print 'Preparing Scan of %s ...' % file

    host = 'www.virustotal.com'
    selector = 'https://www.virustotal.com/vtapi/v2/file/scan'
    fields = [('apikey', apikey)]
    file_to_send = open(file, 'rb').read()
    files = [('file', file, file_to_send)]

    print 'Uploading file...'
    ret = postfile.post_multipart(host, selector, fields, files)
    try:
        data = json.loads(ret)
    except ValueError:
        print 'Cannot decode server response: '
        print ret
        exit()
    print 'Upload done.'

    # for k in data: print '%s: %s' % (k, data[k])

    resources.append((file, data['resource']))

print 'Retreiving reports...'
i = 1
permalinks = []
for resource in resources:
    response_code = 0
    while response_code == 0:
        url = 'https://www.virustotal.com/vtapi/v2/file/report'
        parameters = {
            'resource': resource[1],
            'apikey': apikey
        }
        data = urllib.urlencode(parameters)
        req = urllib2.Request(url, data)
        response = urllib2.urlopen(req)
        ret = response.read()
        data = json.loads(ret)
        response_code = data['response_code']
        #print json.dumps(data, sort_keys=True, indent=4)
        if response_code == 0: time.sleep(5)
    #print json.dumps(data, sort_keys=True, indent=4)
    permalinks.append(data['permalink'])
    print '%2i: %s' % (i, resource[0]), 
    print ': %i / %i' % (data['positives'], data['total'])
    i += 1

wb = webbrowser.get()
selection = 0
while selection >= 0 and selection < len(permalinks):
    selection = int(raw_input('Open: '))-1
    if selection >= 0 and selection < len(permalinks):
        wb.open(permalinks[selection])
P.S.: This is all part of a great plan I'm following at the moment. Edit (2013-09-05): Since the VirusTotal API is now out there for a while, a lot of awesome python libraries have emerged: * https://github.com/Erethon/vta.py * https://github.com/Gawen/virustotal * https://github.com/botherder/virustotal * https://github.com/Xen0ph0n/VirusTotal_API_Tool


Lars has put together a rather disturbingly large list of objects that are either useless or dyfunctional. Most of them have pretty YouTube Videos. Maybe one of them makes for a great gift. Do you want to look at them?


I have wondered how to undefine existing commands in $\LaTeX$ for so long. Finally, I googled it up. It's easy. Simply
\makeatletter
\let\command\@undefined
\makeatother
and the \command has been undefined. This does not cause an error when \command was undefined before. After that, you can merrily
\newcommand{\command}{Hell Yeah.}
and be on your way.


I just wanted to include an SVG file into a LaTeX Beamer presentation and I found the following articles very useful: * LaTeX and Inkscape * includesvg Apparently, Inkscape has a built in feature that allows you to write LaTeX-Code in Inkscape, export the generated SVG image as PDF and then even reimport this into LaTeX documents. Awesome!


Under Cygwin, you can install the 64 bit mingw version of GCC, but you don't get the gnu multiprecision library for free with it, you'll much rather have to compile it from source. I ran into a bit of trouble here: It will not suffice to tell the configuration script about the new compiler, there are now mingw-64 versions of all relevant binaries that should be used instead. Basically, you go like
tar -xjf gmp-5.0.4.tar.bz2
cd gmp-5.0.4
./configure                          \
  AR=x86_64-w64-mingw32-ar           \
  AS=x86_64-w64-mingw32-as           \
  DLLTOOL=x86_64-w64-mingw32-dlltool \
  DLLWRAP=x86_64-w64-mingw32-dllwrap \
  CC=x86_64-w64-mingw32-gcc-4.5.3    \
  NM=x86_64-w64-mingw32-nm           \
  LD=x86_64-w64-mingw32-ld           \
  OBJDUMP=x86_64-w64-mingw32-objdump \
  RANLIB=x86_64-w64-mingw32-ranlib   \
  STRIP=x86_64-w64-mingw32-strip
I am not sure if all of these are needed, but it won't hurt either. After that, you should
make && make check
the whole thing. Worked perfectly for me, so now I can link with libgmp.a in .libs and native 64 bit bignum action ensues!


Als großer Befürworter von Palatino-Schriftarten ((insbesondere auch mathpazo für mathematische Texte)) möchte ich natürlich auch meine Briefe so verfassen. Wem das nicht passt, der kann ... trotzdem weiterlesen! Wesentlich wichtiger war mir für diesen Brief nämlich, dass die Adresse des Empfängers bei korrekter Faltung in einem Fensterumschlags sichtbar ist. Das sieht dann etwa so aus. Wollen Sie den Code sehen?


Let's say you have a vector space $V$ and a vector space $W$ over the same field $k$. Then, according to a huge pile of books on representation theory I read, there is an obvious isomorphism $V^\ast\otimes_k W \cong \mathrm{Hom}_k(V,W)$, where $V^\ast=\mathrm{Hom}_k(V,k)$. I concur, it's not hard to write down, but then why don't they just write it down? It is given by \[ \begin{array}{rcl} \phi: V^\ast\otimes_k W &\longrightarrow& \mathrm{Hom}_k(V,W) \\ f\otimes w &\longmapsto& (v\mapsto f(v)w), \end{array}\] when we assume $W$ to be finite-dimensional. Do you want to see the proof?


Ich befand mich vor nicht allzulanger Zeit in der unerquicklichen Lage, dass mein sage und schreibe sieben Jahre altes ThinkPad so langsam den Geist aufgab. Meiner Meinung nach sind ThinkPads immer noch das Mittel der Wahl, auch wenn inzwischen Lenovo draufsteht. Ein Kommolitone empfahl mir dazu Notebooks wie Neu: Dort werden ThinkPads verkauft, die mal irgendwann auf irgendeiner Messe ausgestellt worden sind und damit formal als Gebrauchtware gelten. Ich war zunächst skeptisch, doch gab es mein Wunschmodel dort rund 30% günstiger, also wurde das gute Stück einfach direkt mal gekauft. Ich habe es jetzt einige Wochen und kann nur sagen, ich bin rundum zufrieden. Das Gerät ist wirklich wie neu.


I am currently working through the book on Young Tableaux by Fulton, and I find it a very nice read - in a prose ((Attention Nikolai: Do not touch this book.)) kind of way. As you might notice from the general sound of it, I am getting into representation theory. However, this book is more about the combinatorical aspects of the field. Since combinatorics is a very hands-on kind of math, I really think I should do a certain amount of exercises. I am only skimming through the book since ultimately, I want to get back to abstract nonsense really bad, but I will write down my solutions for any exercise I do ((I know that the book already contains "solutions", but I'd rather call them "hints".)) . Do you want to know more?


Just a checklist for programming the microncontroller Ralf gave me yesterday ((Also check out this useful article)) * you need a functional eclipse installation * Install WinAVR and be sure that it is in the PATH by executing  avr-gcc from a command prompt * Install the AVR-Interface into eclipse via HelpInstall New SoftwareAdd. Then paste the following link in the URL Box:
http://avr-eclipse.sourceforge.net/updatesite/
* When I create a new project, I need to adjust the following settings in the project properties: * AVRAVRDude Programmer click on New, Name: USBASP, Programmer Hardware (-c) USBasp, http://www.fischl.de/usbasp/ * AVRAVRDude, Advance be sure the check Disable device signature check * AVR → Target Hardware MCU Type select ATmega168 and set the MCU Clock Frequency to 12000000 (that's $12\cdot10^6$) * C/C++-Build → Settings unter Tool Settings check Generate HEX file for Flash memory * C/C++-Build → Settings unter Tool Settings, AVR CompilerOptimization set the Optimization Level to Size Optimizations (-Os).


This article adresses the following problem: Assuming you have some amount of data, let's say 20 GB, on your local machine at home, and you would like to synchronize this data with a remote server. You are a security aware person and your local hard drive is encrypted. Therefore, it would make no sense to just upload this data unencryptedy to an unencrypted remote server you eventually don't even really trust. We suggest the following solution to this problem (assuming you work in a Win7 environment or something like that): Instead of the data itself, we will upload a True Crypt file container instead. Then we use Dokan to mount the remote drive as a local drive. The file container on this ''local drive'' is then mounted via True Crypt as a drive. Now you can use any local synchronization tool of your choice and dismount everything again. Usage of all this different software can be simplified by using AutoHotkey. Do you want to know more?


In the recent weeks, we have acquired the phony habit of customizing our Windows desktop PC's. The following is my checklist for making a Windows PC more pretty. ## Making Windows Themable You go and download the universal theme patcher: * Universal Theme Patcher Homepage (Author's Blog) * Universal Theme Patcher on nullteilerfrei Then, you click it. You can find a ton of themes on deviant art, but I'd strongly advise against overly dark themes, it really does not make for a healthy working environment. ## The Logon and Boot Screen To customize the windows login screen to look really nice, we have to do several things. * To change the background image, you simply use the Tweaks Logon Changer: * Tweaks Logon Changer Homepage * Tweaks Logon Changer on nullteilerfrei * To remove the little branding logo on the bottom of the login screen, you open the file
%SystemRoot%\Branding\Basebrd\basebrd.dll
in a resource editor of your choice ((We recommend either resourcer or resource hacker.)) and simply delete the corresponding resource bitmaps. Note that some of the bitmap resources are not used for the logon screen but for other dialogs, such as the shut down menu that appears when pressing ALT+F4 on the desktop. * If you have a fingerprint reader and you are annoyed by the blue Fingerprint icon, you can change these icons by replacing the bitmaps in the file
%SystemRoot%\System32\BioCredProv.dll
## The Boot Screen To change the Windows boot screen, best use the Windows 7 Boot Updater: * Windows 7 Boot Updater Homepage * Windows 7 Boot Updater on nullteilerfrei ## The Start Orb For changing the start Orb in Windows, I strongly recommend using the Start Orbz Studio; * StartOrbz Studio on deviant art * StartOrbz Studio on nullteilerfrei ## The Wallpaper Seriously? I really like wallhaven, but there are most literally a million wallpaper archive sites out there.


Why would anyone want to use Windows 2008 R2 Server as a workstation? The main arguments in my case are the superior firewall and user account control. Now, if you want to do the same, you can go to win2008r2workstation.com and get a really detailed howto with screenshots - or you can read this post for a really short checklist, something I prefer to have for future installs of the same variety. Do you want to know more?