Getting Hyperref to Work with Hebrew (in XeTeX)

The hyperref package is notorious for causing problems with RTL text, which unfortunately includes Hebrew. In this post, I present some preliminary workarounds that enable the user to use the hyperref package with Hebrew and possibly other RTL languages. The solution requires XeTeX, which is available in TeXLive. I had no success yet porting the workaround to pdfTeX, which is more popular.
Continue reading Getting Hyperref to Work with Hebrew (in XeTeX)

Upgrading All KDE-Related Packages in Gentoo

Yesterday, Gentoo marked KDE 3.5.10 as stable on amd64. I looked for a way to upgrade all of the KDE-related packages without manually specifying each one of them. Normally, one could do

emerge -avu world

but I encountered some nasty conflicts that I didn’t have time, nor would I, to resolve at that time. So I looked for a different solution. To my rescue came qlist from the great app-portage/portage-utils package. This package provides a set of very fast utilities to query portage. I used qlist to list all of my installed packages, grep‘ed the list, and piped the result as arguments to emerge using xargs.
Continue reading Upgrading All KDE-Related Packages in Gentoo

Installing lighttpd-1.4.22 on Ubuntu 8.04

I had some problems with the lighttpd-1.4.19 that comes with Ubuntu 8.04, mainly with its handling of the HTTP header Expect: 100-continue (older versions of lighttpd return error 417). The problem was fixed in lighttpd-1.4.21, but 1.4.22 is the newest version, so I’ve decided to install it.

As I mentioned before, Ubuntu doesn’t have lighttpd-1.4.22 for 8.04, and it’s also not available in the updates or backports repositories. Fortunately, I found that the package is available from Debian Sid (unstable). Here are some instructions on how to install it.
Continue reading Installing lighttpd-1.4.22 on Ubuntu 8.04

Hash Puppy – A Qt Checksum Calculator

I’ve decided to give Qt a try after a long time of wxWidgets programming. When I learn a new language or how to use a new library, I always like to build some small projects to get my hands dirty. This time I’ve built a small checksum calculator – Hash Puppy (in fact, first I had the name, then I decided I must use it for some new project).

hashpuppy
Continue reading Hash Puppy – A Qt Checksum Calculator

Re-distilling PDFs to Reduce Size

I decided to finally learn Qt and started to read “C++ GUI Programming with Qt 4” (first edition), which is available online. The book comes in a zip file that unzips to a huge, 51MB, PDF file. Even considering that the book is quite long (556 pages), the file size is very large compared to what one would usually expect. The huge file size made reading the PDF less convenient, as one notices a considerable delay when opening it (especially if the PDF resides on some portable storage), so I decided to play around a little and see what I could do about it.
Continue reading Re-distilling PDFs to Reduce Size

Book Review: Lighttpd by Andre Bogus

As an avid user of Lighttpd, I was glad to receive a copy of the “Lighttpd” book by Andre Bogus (Packt Publishing) for review. I’ve been using Lighttpd extensively in production for over a year now, and I’m very satisfied. However, I remember that as a new user I had my share of frustration. In his book, Andre Bogus tries to ease the process for those who decide to move to Lighttpd.
Continue reading Book Review: Lighttpd by Andre Bogus

Displaying Non-Builtin Math Macros in LyX

I believe LyX is a great tool for writing LaTeX documents. It makes writing formulas very easy, and it allows you to see the formula as you are writing, as opposed to seeing only LaTeX code. However, LyX doesn’t support every LaTeX package and the macros it defines. Sure, it doesn’t stop you from using these macros in your formulas, but they don’t display nicely; you see the name of the macro instead of a schematic preview.

While LyX doesn’t support many of the great packages out there, like mathtools (which I really hope it will someday), you can add some support to your documents. At the beginning of the document, insert a comment via Insert->Note->Comment. Inside the newly created comment, insert a math macro via Insert->Math->Macro. In the name part, put the name of the command you want to add support for. In the second box (captioned LyX), use existing LyX commands to mimic how the macro will look. For example, this is what it looks like for the coloneqq macro (from the great mathtools package):
math-macro

After adding the math macro in the comment, when you use the macro inside formulas, it will display nicely:
math-macro2

A little explanation of how things work: when you define a math macro in LyX, LyX does two things:

  1. Inserts LaTeX code to create the macro.
  2. Displays the macro nicely when editing the document.

While the latter is desirable, the former is problematic. If LyX inserts LaTeX code to define the existing macro, it will cause errors. So when you put the LyX macro in the comment environment, the code LyX generates gets ignored, and only the second, desirable, outcome is achieved.

Convert int to string (As Well As Almost Anything)

This is a little code snippet from Open Yahtzee‘s code base that converts all the built-in types and many custom classes (ones that override the << operator) to string.

template <class T> inline std::string stringify(T x)
{
    std::ostringstream o;
    o << x;
    return o.str();
}

I first wrote it to convert ints to strings, but later I templatized it so it would work with other types as well. It’s a clean, elegant snippet that I thought others might find useful too.

tarsum-0.2 – A read-only version of tarsum

When I first scratched the itch of calculating checksums for every file in a tar archive, this was my original intention. When I decided I wanted the script in bash for simplicity, I forfeited the idea and settled for extracting the files and then going over all the files to calculate their checksum values.

So when Jon Flowers asked in the comments on the original tarsum post about the possibility of getting the checksums of files in the tar file without extracting the whole archive, I decided to re-tackle the problem.

Continue reading tarsum-0.2 – A read-only version of tarsum