McEs, A Hacker Life
Europe, here I come!
I wrote my last exam on Tue night and We afternoon headed to the airport to get to Spain for the
WebKitGtk hackfest at the Igalia offices. At this time, stuck in Frankfurt airport after missing my connection.
After the hackfest I'm doing a mini tour of Western Europe, thanks to RailEurope. Mostly visiting friends and family. Currently looking like: Frankfurt -> Kassel -> Paris -> Brussels -> Amsterdam -> Hanover -> Berlin -> (Maybe) Zurich.
Looking forward to meet GNOME guys. And will blog about hackfest progression. Before you ask, my mandate for the event is to port WebKit to use the new HarfBuzz API.
Labels: gnome, harfbuzz, travel, webkit
Lazyweb: Conference organizing/scheduling software
Dear Lazyweb:
What are the best Free Software conference orginizing / scheduling pieces of software?
We are looking for things more sophisticated than Drupal's conference module. Two years ago we used
expectnation, a kickass hosted service that
Edd Dumbill kindly offered to GUADEC free of charge. But we are looking to host our own within the GUADEC infrastructure now that we finally have started looking into building real infrastructure for running GUADEC website on an ongoing basis as opposed to rebuilding it from scratch every year.
So, please leave comments and share your experience. Thanks in advance.
Labels: guadec
Funny spam
Quite slick actually compared to the average spam I get...
Subject: This is hard for me to say
This is quite hard for me and I haven't been able to let you know up till now (you'd know why if you knew who I was)...but I have a crush on you.
You'll have to find out who I am though (I'm quite shy and this is without a doubt the bravest thing I've ever done). To help you out I made some videos and pictures with your nickname over my body. The photos and videos are kind of risque so I had to make a name at
Black Book and put them there. My username in the members area is " behdad.esfahbodandme2009" (it's a free website).
But anyway, get on
Black Book and once you are in, take a look for me. I want you to guess who I am and then approach me yourself. Good luck.
Hugs and kisses, Your secret admirer
PS. You'll get no extra help by e-mailing me back, so don't try :P
Labels: spam
Pango vs HarfBuzz
Since the
rewritten HarfBuzz is shaping up fast and getting lots of Buzz these days, I get asked the same question again and again: "Will HarfBuzz replace Pango?" This post tries to answer that.
Short answer: No, not at all! Pango is here to stay. It will change, but only get better.
Long answer:Pango provides two levels of API: A low-level and a high-level.
Low level API: What I can the "three pillars of pango":
pango_itemize(): Breaks text into runs that each have the same font, Unicode script, language, direction, and other characteristics.pango_shape(): Shapes a single run of text, given the font, script, language, direction, and other properties. Shaping means converting Unicode text to positioned glyphs.pango_break(): Does line breaking and other text segmentation (cursor positions, cluster boundaries, word boundaries, and sentence boundaries).
High-level API: Pango's high-level API consists of the
PangoLayout object, aka "here's a piece of text render it in this box I don't care what you do."
Of these, HarfBuzz only does shaping. That is,
hb_shape() is functionally equivalent to
pango_shape().
API implications: Here is how moving to HarfBuzz affects the Pango API:
- Everything in
pango-ot.h will be deprecated and be a thin wrapper around hb-ot.h. This is already done in the harfbuzz-ng-external branch of Pango. - There will be new API in Pango, perhaps in
pango-hb.h to help extracting various HarfBuzz structures from their Pango equivalents. pango_shape() will be a thin wrapper around hb_shape() (read below).
Pango Modules: pango_shape() calls into Pango shaper modules to get the actual shaping done. There are two kinds Pango shaper modules depending on what they do (the API is the same, so Pango doesn't differentiate between the two classes):
- Bridge modules: The basic-win32.c, basic-atsui.c modules call into another, platform native, shaping system to get the work done. The external (not integrated in Pango yet) modules basic-graphite.c and basic-m17n.c also do the same for the SIL Graphite and m17n shaping libraries.
- On Linux, since there currently is no native shaping engine, Pango has multiple shaping modules, one per script, to do the actual shaping (arabic-fc, syriac-fc, indic-fc, thai-fc, ..., and basic-fc for all the non-complex scripts).
Now, as HarfBuzz becomes
the shaping engine on Linux, all those script-specific modules will be removed and basic-fc will simply call into
hb_shape(). That's indeed what the basic-fc.c in the
harfbuzz-ng-external does.
Later on, when we add support for native win32, CoreText, Graphite, and m17n to HarfBuzz, all those other modules will also be replaced by HarfBuzz-calling equivalents.
Which one to use: Pango or HarfBuzz? Depends.
PangoLayout is designed to be the 'render this text in this box I don't care how' kind of API. That's a perfect fit for GUI toolkits like GTK+, but not suitable for lots of other uses, for example:
- Web browsers
- Word processors
- Designer tools
- Font design tools
- Terminal emulators
- Batch document processors
- TeX engines
while in many of those cases PangoLayout can be
made to work (with much pain, mind you), Pango still provides the lower level API and lots of other bits and pieces to get something going. What it doesn't give full control on however is font selection, which happens to be a deal-breaker for many of those usecases (browsers following CSS rules, etc).
So, each of those kinds of applications need to assess the pros and cons of using Pango vs using HarBuzz and providing all the other bits themselves. For example, HarfBuzz
doesn't provide:
- An itemizer
- A Unicode Bidirection Algorithm implementation
- A Unicode Line Breaking implementation
- Glyph rasterization
- Glyph metrics information
- etc
There's also a hybrid use possible: to borrow those pieces from Pango on platforms that it's feasable, but drive HarfBuzz directly. It all depends. When in doubt, ask! We have a mailing list.
That said, Firefox will use HarfBuzz as soon as it's ready (there are patches circulating around). Google is using old HarfBuzz for their Webkit and will port to the new one. I'm also attending the Webkit-GTK hackfest in December to port that to the new HarfBuzz. We'll work towards sharing the HarfBuzz-dealing code among Webkit backends.
This is already a long post. Let me finish now. Hope I made it a tiny bit more clear.
Labels: gnome, harfbuzz, pango, textlayout
On Unexpected Hanging Paradox and applications in law enforcement
[Note: this post has nothing to do with the ongoing executions in Iran.]Unexpected hanging paradox is a well-known alleged logical paradox about a prisoner's response to an unusual death sentence. To quote Wikipedia, here is the statement of the paradox:
A judge tells a condemned prisoner that he will be hanged at noon on one weekday in the following week but that the execution will be a surprise to the prisoner. He will not know the day of the hanging until the executioner knocks on his cell door at noon that day. Having reflected on his sentence, the prisoner draws the conclusion that he will escape from the hanging. His reasoning is in several parts. He begins by concluding that the "surprise hanging" can't be on a Friday, as if he hasn't been hanged by Thursday, there is only one day left - and so it won't be a surprise if he's hanged on a Friday. Since the judge's sentence stipulated that the hanging would be a surprise to him, he concludes it cannot occur on Friday. He then reasons that the surprise hanging cannot be on Thursday either, because Friday has already been eliminated and if he hasn't been hanged by Wednesday night, the hanging must occur on Thursday, making a Thursday hanging not a surprise either. By similar reasoning he concludes that the hanging can also not occur on Wednesday, Tuesday or Monday. Joyfully he retires to his cell confident that the hanging will not occur at all. The next week, the executioner knocks on the prisoner's door at noon on Wednesday — which, despite all the above, will still be an utter surprise to him. Everything the judge said has come true.
This has intrigued me again and again and I could never come to peace with it. While researching this recently I came across
this paper which is a non-exhaustive survey of various tries to model the paradox. Great read.
Today I came across a blog post by
Ed Felten called
Targeted Copyright Enforcement: Deterring Many Users with a Few Lawsuits. While I find it very disturbing that a scientist like Ed Felten may be helping RIAA better screw people by their copyvio lawsuits, the puzzle and the solution provided are well worth a read. Not irrelevant to the Hanging Paradox, though in this case the reasoning may actually work.
Labels: copyfight, puzzle
litl by litl
Finally
litl's product is out: it's a
webbook. The easel mode looks quite interesting, and reading their website, it looks like the kind of gadget/netbook/appliance I'd be more than happy to have around (in a theoretical family setting, not /me as lone hacker).
But at the starting price of $700, I'm not sure who they are targeting. Sounds like Apple customers... And that does not include the remote or the HDMI cable. And the twinpack offers exactly $0 dollars discount over buying two units separately. I found these very cheap of them. Otherwise it all looks very promising.
While at gadgets, anyone knows whether n900 will have a developer program?
Labels: gadgets, litl
HarfBuzz HackFest
Here is a quick update re
HarfBuzz:
During May and August I finished rewriting the OpenType Layout engine to use mmap()ed font files. This is in Pango 1.26.x already. Pango and fontconfig also received a lot more optimization love. That deserves a long and separate blogpost. The net result is that the text stack's
memory usage is considerably lower now.
All this goodness will be in the upcoming Fedora 12.
In October, I attended the
33rd Internationalization and Unicode Conference in San Jose to present the free software text stack (
useless slides) as well as present and promote HarfBuzz (
useless slides). That was a very fruitful event and I received lots of interest from many major industry players. With the liberal license that we are releasing HarfBuzz under, we expect broad adoption, which is exactly what we are looking for.
This week, Jonathan Kew and myself are having a small HarfBuzz HackFest here in Mozilla's Toronto office. Here's what we have got done so far:
- Jonathan has a version of Firefox using harfbuzz-ng (the codename for the rewrite) that has advanced layout features controlable through CSS. Very very cool stuff. He updated it to the latest harfbuzz-ng code.
- I ripped harfbuzz-ng out of the Pango tree and into a standalone module. Finally! Took a couple hours of git surgery plus ten minutes to put together an autotools build system. Git clone URL is this. The harfbuzz-ng-external branch in Pango uses that as an external module. The plan is to reach a stable 1.0 release of harfbuzz-ng before next stable GNOME and most probably, Pango will require harfbuzz unconditionally (that is, on all platforms). Note that harfbuzz is NOT tied to FreeType, so you can use it with any rasterizer you have around.
- We fixed all portability issues Jonathan had faced when compiling harfbuzz-ng with MSVC.
- Jonathan is working on the shaper side, while I'm working on the API and pulling it all together.
- I added glue code for using harfbuzz-ng with glib, ICU, and FreeType.
- Lots of API and design review.
At the rate this is developing, by the end of the week we should have basic shaper (Latin, Cyrillic, CJK, ...) and Arabic+Syriac working perfectly and tackling Indic family. We're closer to 1.0 than you may think!
Labels: hackfest, harfbuzz, pango, textlayout
Iran at the Toronto Int'l Film Festival
It's
Toronto International Film Festival time again. TIFF has been growing leaps and bounds every year, and one of the nice features this year is the
free screenings at the Yonge & Dundas Sq., plus a few short concerts too. Looking forward to finally see
Joan Baez live. And I digress.
I'm typically not a huge fan of following the Iranian films at TIFF, not living a nostalgic life and all, but this year is different. The five Iranian-directed films in the festival present a valuable and remarkably synchronized view into what's currently going on in Iran, its roots, and its historical background.

Shoja Azari, Shahrnoush Parsipour, and Shirin Neshat at the North-American premier of "Women Without Men" at TIFF
Shirin Neshat's adaptation of the similarly named novella by Shahrnoush Parsipour, "Women Without Men" depicts the story of five women in the Tehran of early 1950s, struggling to find their freedom each in their own way. The story is set around the CIA-run coup d'état of 1953 that removed the democratically elected prime minister Mohammad Mosaddegh, an event that is as relevant today as it was in 1953. Other than its historical significance and candid view into the lives of Iranian women (of 50 years ago, but still quite accurate today), I particularly liked the pale colors and the cinematography. Not surprising given that Neshat's background is of a visual artist and this is her first feature-length film. Neshat was also present at the UN hunger-strike event last month that was organized by Akbar Ganji.
Fast forward to Iran today and Shalizeh Arefpour's "Heiran" tells the story of a teenage Iranian girl, Mahi, falling in love with an illegal Afghan worker, Heiran. They take their relationship from their small town to Tehran, hopefully a more forgiving place for their controversial romance, but they are faced with the cruelties of adulthood, and that of the megacity that is current day Tehran. Following the theme of Neshat's film, Heiran has a lot to offer to those curious to better understand the Iranian people, with all their complexities. Same people that are in the streets simply asking for their votes to be counted today.
If Heiran is the story of lower-class youth trying to break free of their social rank, Granaz Moussavi's dangerously-filmed "My Tehran for Sale" is the story of creative middle/upper-class young people in Iran struggling to express themselves in a country that enjoying pop music is a sin and women are banned from singing in public. It is only appropriate that it scores music by Mohsen Namjoo, the Iranian Bob Dylan as he has been dubbed by New York Times. Namjoo imposed exile upon himself recently when in the aftermath of the election decided to stop self-censorship and directly attacked the Supreme leader in a satirical poem.
Hana Makhmalbaf's film was not part of the original TIFF schedule and was added later. No wonder, since "Green Days" bears a title that did not mean much in Iran just three months ago. Include footage of the post-election movement never seen before, this one has a lot of promise. What raises the expectations is that Hana is the younger daughter of Mohsen Makhmalbaf, the world famous Iranian director who happens to be one of the outside leaders of the Green Movement (to the extent that one can attach leaders to this movement).
Last but certainly not least, Mehran Tamaddon's Bassidji looks into the lives of bassidj members, the paramilitary forces largely responsible for the crack-down of the popular post-election protests. In a way, this is the one movie to have a close eye on, if we are to better understand the ruling party in Iran (and specially so for us Iranians). Not surprisingly this is the one film I couldn't find a ticket for. Fortunately my friend Ben was so nice to offer one of his passes to the press screening tomorrow morning. Not many films can make me want to wake up at 8AM on a Saturday, but this one certainly does (or so I hope!).
Labels: gr88, Iran, iranelection, movies, tiff
Canadians: make your voice heard
To all my Canadian friends:
As you may know the Canadian government is currently seeking public opinion on the various Canadian copyright and DRM proposals on the table.
Here is a guide to writing an effective entry to them (PDF). Takes five minutes only.
Thanks
Labels: copyfight, drm
History Repeats Itself
Side by side
photos of Tehran comparing 1978 (before the 79 revolution) and 2009.
Also a good read from Spiegel on the history of what's actually going on in Iran, from 60s on:
The Fight for Iran's Political Future: Revolution Leaders Struggle for Power in Tehran.
Again, for more Iran news, follow
@lotfan.
Labels: iranelection