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?
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?
In the process of doing some windows customization, Chuck shot his Windows dead. Hence, we needed a USB stick to boot Grml. It's quite easy to make a USB stick bootable in Windows, and here's the short version: I will assume that your USB stick is drive U:. Use the command-line tool diskpart and use the command list disk to find your USB stick (check the size). Then, enter:
select disk <usb stick number>
clean
create partition primary
select partition=1
active
format fs=ntfs quick label=”overdrive”
assign
and exit the diskpart utility. Finally, use
bootsect /nt60 U:
xcopy <image>:\*.* U:\*.* /S /E /F
to first make the stick bootable and then copy all data to the stick, where image is a directory where the files from your ISO reside. If you do not have the bootsect utility for some reason, grab it from a friend who has Windows 7.
After a couple of tests, it turns out that the very simple
#include <limits.h>
inline void memzap(void *dest, unsigned long count) {
asm( "cld"
# if ULONG_MAX == 0xffffffff
"\n" "andl $3, %%ecx"
"\n" "rep stosb"
"\n" "movl %%ebx, %%ecx"
"\n" "shrl $2, %%ecx"
"\n" "rep stosl"
# else
"\n" "andq $7, %%rcx"
"\n" "rep stosb"
"\n" "movq %%rbx, %%rcx"
"\n" "shrq $3, %%rcx"
"\n" "rep stosq"
# endif
: "=c" (count), "=D" (dest), "=b" (count)
: "c" (count), "D" (dest), "b" (count), "a" (0)
);
}
is the fastest way to zero out a large block of memory, which is not very surprising. It is about 4 to 5 times faster than memset
and about as fast as new []
, if I can trust @tobi on that matter. I tried using MMX registers, but anything that involves actually
looping over the memory region will be about as fast as memset
. The only way to get a bit of speed is using the rep
opcode.
Tiny Edit: The above code is much more safe to compile on both 64 and 32 bit computers.
TrueCrypt is the tool of choice to encrypt your computer hard drives, and under windows it offers the option to encrypt the system drive on the fly, which is very comfortable. As you might guess, this could also go terribly wrong, which is why TrueCrypt forces you to create a rescue disk ISO, which has saved me a lot of trouble in the past. However, by default, TrueCrypt does not let you encrypt your system drive before you have actually burned that image to a real CD, and that, on the other hand, is quite annoying in a day and age where many notebooks no longer have an optical drive. What few people know - this check can be turned off by executing
"TrueCrypt Format.exe" /noisocheck
If you don't believe me, try it yourself or check out their documentation.
For reasons I have not yet been able to figure out, @tobi is making me implement a couple of very rudimentary routines in x86 GCC inline assembler because he wants them faster than possible for mere mortal C. The first was a routine to calculate $\lfloor\log_2(n)\rfloor$ for $n\in\mathbb{N}$ and the second one was to zero out a large block of memory. For instance,
unsigned inline log2int(unsigned x) {
unsigned l;
asm("bsrl %1, %0" : "=r" (l) : "r" (x));
return ( 1 << l == x ) ? l : l + 1;
}
is about 50 times faster than the C-native Version
unsigned inline log2int(unsigned x) {
unsigned l = 0;
while(x > (1<<l)) l++;
return l;
}
even after optimization. For some reason, I found it tricky to google up the official intel x86 opcode reference ((Opcode Reference Part 1)) ((Opcode Reference Part 2)), so I am linking these here.
I am writing this blag post from the second annual meeting of the DFG priority programme SPP1489 (algorithmic and experimental methods in algebra, geometry and number theory). Apart from having a lot of fun, I am catching up on the recent developments in open-source computer algebra software. Do you want to know more?
I handed in my diplom thesis today. I'm fairly proud of it, and I am also quite fond of the layout. So, if anyone finds it quite appealing, I am gladly willing to share the LaTeX. Note that although it has (to have) a German introduction, it is written in English.
The term *ramification* was the one that had befuddled me longer than most others, in my studies of algebraic geometry. Let's take a morphism $\pi:Y\to X$ of schemes, and let us assume that it is finite and surjective. We will call a morphism of this kind a **covering** and although I am not sure whether this terminology is standard, I think it's very appropriate. Here, I document some notes I took to connect the various results from several books I know. It helped me to get a better idea and better tools to work with coverings. Do you want to know more?