I do not have a Facebook account. Why don't I have a Facebook account? A couple reasons spring to mind:
* I think that it's a pathetic, average, unimaginable kind of self-portrayal.
* I do not want to give all kind of private details about my (social) life to some company with very questionable motives, let alone imprinting all that data into the internet for all eternity.
* It eats up lots of time I could spend writing blog posts that noone reads.
As a matter of fact, however, none of those is really the reason why I don't use Facebook. My reason not to use Facebook is that it is expected of me to use it. Let me clarify: People have stopped asking "Do you have a Facebook account?" and instead, they started asking
> What's your Facebook account?
Depending on who's asking, to them, my answer sounds a bit like "Oh I'm sorry, I do not have a Telephone." And indeed, that's a pretty good metaphor. Facebook is the best new tool of communication since mobile telephony was made available to the public. I remember when only very few people had a cellphone, because I was in elementary school then - and I had one. I got it for Christmas because I had begged and begged, I wanted no other present, just that cellphone. It caused all kinds of problems, teachers didn't want me to bring it to school, stuff like that. Can you imagine? Nowadays, that just sounds absurd. Nowadays, everyone has a cellphone, because that technology is so convenient that we got used to it, it has become vital to our way of life. You can not exist in the digital age, without a telephone.
And Facebook is headed in the same direction - for a good reason. It's an incredibly powerful addition to existing communication, partly replacing old technology and combining others into an easily manageable framework to maintain all your social relations. And it's almost free - you are paying them with just your personal information, which they use for advertising and thelike. Frankly, I couldn't care less about that. In fact, I think that's totally fair. But at some point, it will have become socially impossible to not have a Facebook account. At that point, we have given a private company complete control over our respective social statuses. When you apply for a job, they first check your Facebook profile. When you chat up a stranger, you exchange Facebook information and that's the first they'll really know about you. Of course, Facebook wouldn't use that power to harm anyone, that'd be very bad for business. If I were Mr. Zuckerberg, I'd offer special premium Facebook profiles instead, for a certain fee of course. Let's say $10 a month and you just seem better than everyone else. Most people would get one, and at some point you just seem like a bum if you don't. So you pay the ten bucks, what the hell. And before you know it, everyone's paying Facebook fee every month. You're upset? You'd never do that? It's absurd? Well, you pay about that much for your cellphone, don't you? Nobody would refuse to use a cellphone just because he has to pay for the calls. Only, like, a crazy communist hermit bum would say such a thing.
Now, you might say, alright! Facebook is worth paying money for it. What's the problem? The problem is that Facebook is neither controlled by the government nor by the market. They have no rivals, by design. Facebook does not interact with other social networks. That's different for cellphones - you have different vendors that live in a healthy state of competition. Same holds for email, regular mail, and basically all kinds of communication. Not one of them is monopolized. If we let a company monopolize our communication, we're screwed. Now, I am not actually very afraid that this will happen in such an apocalyptic manner. Things will work out alright. But right now, I don't think that it should be expected of everyone in the whole civilized world to have an account on that website, no matter how good it is. I am making a political statement by not having a Facebook account. Me not being a very politically active person, this is one hell of a statement.
Let's say you have a matrix $A\in\mathrm{GL}_n$. How do we best denote the inverse of its transpose? You would probably write $(A^T)^{-1}$ or $(A^{-1})^T$ because it is the same. However, today at the office we decided to henceforth write $A^{-T}$ instead. It seems abusive at first, but I can make it formal for you, if you care for that kind of stuff. As we all know, the transpose of $A^T$ is $A$. In other words, the transposition operator $\vartheta:\mathrm{GL}_n\to\mathrm{GL}_n$ which maps $A$ to its transpose satisfies $\vartheta^2=1$. So far, the exponentiation map is defined as $\mathrm{GL}_n\times\mathbb{Z}\to\mathrm{GL}_n$ mapping $(A,k)\mapsto A^k$. We instead consider the ring $\mathbb{Z}[T]:=\mathbb{Z}[t]/(t^2)$ and extend the domain of the exponentiation map to $\mathrm{GL}_n\times\mathbb{Z}[T]_\ast$, where $\mathbb{Z}[T]_\ast$ denotes the homogeneous elements of $\mathbb{Z}[T]$. This way, you can write $A^{kT}$ instead of $(A^k)^T$ and you have $A^{kT^2}=A^k$ as required. Note that by restricting to homogeneous elements in $\mathbb{Z}[T]$, we get $A^{p+q}=A^pA^q$ and $A^{pq}=(A^p)^q$ for all $p,q\in\mathbb{Z}[T]_\ast$.
Roman told us about a turing machine in Magic: The Gathering™. The design seems very complicated at first, I would have thought that there was an easier way to do it. However, with the 8 minutes invested so far, I did not come up with a better implementation.
I was recommended taskwarrior by Lars, who advertised it as a very cool todo-list manager for the commandline. It's available under cygwin as well. I wanted to give it a try today, so installed it and checked out the taskwarrior homepage. The first thing it does, it leads you to the 30 second taskwarrior tutorial where they give you a very tiny set of commands you need to make a todo-list in the most literal sense: A list of things that you have to do. Of course, the program can do much more than that, and I am not even familliar with all of its features. However, at this point already, I want to comment positively on the unusually gentle learning curve it provides, compared to most other Linux tools. This is an aspect of program design often neglected: Do not overwhelm the user, in particular not with features that are optional. I think a great many deal of open source projects could benefit significantly from improvements in that area, because all elitism aside, a large and devoted userbase is the heart and soul of a vivid, open software project.
You use Opera? Good. Go to
* Settings
* Preferences
* Advanced
* Content
Check the checkbox that says Enable plug-ins on demand. This is the plugin setting you always wanted. It replaces all plugins (say, annoying flash ads) by a little play button which you can click to activate the control. This way, all plugins are disabled by default (and that's good, because most of them are annoying), and whenever there actually is a plugin that you want to use, just click the play button and play your silly flash game if you must.
Ich möchte an dieser Stelle einfach mal los werden, dass es sich wirklich lohnt, ADAC-Mitglied zu werden! Die holen einem aus jeder erdenklichen misslichen bis unlösbaren Lage raus (alles von, Tank auf der Autobahn leer bis man bleibt in Spanien liegen). Die 80€ im Jahr sind es wert!
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?