Writings Photos Code Contact Resume

You are here

Written in English.

Why aspell and Not Baghdad ?

Submitted by msameer on Fri, 24/03/2006 - 2:34pm

It all started with a question from Amr Gharbeia
"Why are we working on an Arabic spell checker ?, Why not a wordlist for aspell ?"
Oh, That's a simple question but it changed a lot of things.
The answer could be: Because aspell won't work with Arabic.
This triggered another question: Who said so ? Did you test ?
Mo. Elzubeir started The Duali project, I assumed he did the testing and discovered that it won't work.
But did I do the testing ? No.

Too bad I wasted months doing something because someone didn't do testing, I should've done my testing part too.

So it's been four years without a spell checker just because some people are lame ? Too bad ;-)

Also Given the fact that Dwayne of translate.org.za suggested that we use the word list approach and he said that it'll work, We see that our approach was wrong.
Now Baghdad can continue but not as a spell checker, It can be a grammar checker or an engine that will understand the sentence or anything else but not as a spell checker.

For baghdad to be like that we need a dataset in a specific format that I'm sure no one will help generate it, All those voices out there crying due to the absence of an Arabic spell checker didn't "won't" move or help generate the word list. I can code but the thing I can't do is the word list.

Now that I have an Arabic wordlist generated from the words of the holy Quran and given the fact that it worked like a charm, I can say that all we need is the word list.
Too bad I assumed that aspell won't work for Arabic.

Now for the wordlist we want, I'd say that:
* It must be from the modern Arabic used, Arabic is full of words that are ancient, If you know them, Then you don't need a spell checker :-)
* It must be correct.

That's why I still object to the use of the Buckwalter dataset as we don't know whether it's 100% correct or not and we still don't know how many ancient words are there.

For the same reasons, I didn't really release the list generated from the Quran, I'm sure it's correct but the quran is special, They write some words in a different way and I don't know which ones or have the time or knowledge to proof read it.

Now for the dataset for baghdad to be a grammar checker:
We need a table that lists all the Arabic words, Which derivation rules apply to them "This is a problem with my previous approach, A word can be derived correctly but it's not available in the Arabic dictionary thus it's wrong" and their position in the sentence

At the moment what we need is a wordlist, Or some text of modern Arabic and I'd be glad to maintain the list after that.

Back to apache.

Submitted by msameer on Tue, 21/03/2006 - 12:58pm

lighttpd was doing fine but sometimes it doesn't start after the logrotation, I'm lazy to write a script to fix this plus, I miss the apache mod_security to filter out some SPAM comments. I'm using an old package from backports.org, Maybe it was fixed in a later package but it's not there for debian yet.

I also enabled a php accelerator when I moved to lighty, Now I'd like to test how apache'll perform with the acceleretor.

2 to the power what = 2 gigs ?

Submitted by msameer on Fri, 17/03/2006 - 4:44pm

I've been asked this question a few months ago when I was interviewed by Google, She wanted a smart way so I told her that I can use the calculator but probably that's not the answer that you want. I decided not to answer.

My idea was to multiply 2 by 2 by 2 by 2 ....... until I reach 2 gigs.

Yesterday I was going home and I don't know why did I remember this again.
I tried to solve it using binary shift and so but it didn't work.

Guess what ? An idea popped into my head, What if we take the logarithm of 2 gigs to the base 2 ?

Now that's a damn smart answer, It takes a bit of concentration to get it and when you realize that it's a simple answer you might get mad at yourself.

That's why I'm sure that I'll fail in IQ tests although I'm sure that I'm smart :-)

Looks like I failed and they didn't contact me again!

Another late night work...

Submitted by msameer on Wed, 15/03/2006 - 10:42pm

Working on a new deployment, Every bone in my body is hurting me :-)

But I'm working on a new beauty!

Stepping back from the EGLUG.org admin team.

Submitted by msameer on Wed, 08/03/2006 - 4:57pm

It has been a pleasure being an EGLUG administrator for the past time. However,
I feel that I'm not qualified as an admin - at least for some people here - and
that I don't really have much time.

I was the one who posted that the previous team wasn't really doing their job.
I thought that having a new team will ease things a bit, I ran for the elections
for mainly 2 reasons:
1) I believe that I was among the active half of the team and that I can still give.
2) I thought about giving a hand to the new admins.

It looks like I'm being personally attacked - or that's what I think - and people
are judging me for all the problems for the last 9 days.

When people start to saying that they did X and Y instead of the current team and
then I'm sorry, That's not a place for me.

A lot of people don't think that I can say that I'm mistaken when I'm really, This
is not true and I do have the ability to do it as long as the other parts admit
their mistake, But getting accused for the bad performance of the new team is something
I can't accept.

I also can't accept when I'm volunteering for something and people start to judge me
about stupid things.

I might also be mistaken this time but I don't care anymore.

I declare my stepping back from the current admin team. Please admins, Take the required
steps for the hand over. I'm also welling to stay until you find a replacement for me
per the charter rules.

Sorry, I don't have enough time for EGLUG yet people expect more from me and...

Best Regards,

Help! What's wrong with this C++ code ?

Submitted by msameer on Mon, 06/03/2006 - 2:18pm

Why won't this shit compile ? What's wrong ? I don't get it!

#include <vector>
#include <iostream>

using namespace std;

class foo {
   virtual void write();

class fubar : public foo {
  void write() { cout << __PRETTY_FUNCTION__ << endl; }

class fubar2 : public foo {
  void write() { cout << __PRETTY_FUNCTION__ << endl; }

int main()
  vector<foo> v;
  fubar one;

g++ -o foo foo.cc
/tmp/cchSMAqr.o:(.gnu.linkonce.r._ZTI5fubar[typeinfo for fubar]+0x8): undefined reference to `typeinfo for foo'
/tmp/cchSMAqr.o: In function `foo::foo()':foo.cc:(.gnu.linkonce.t._ZN3fooC2Ev[foo::foo()]+0x4): undefined reference to `vtable for foo'
/tmp/cchSMAqr.o: In function `foo::foo(foo const&)':foo.cc:(.gnu.linkonce.t._ZN3fooC1ERKS_[foo::foo(foo const&)]+0x4): undefined reference to `vtable for foo'
/tmp/cchSMAqr.o: In function `foo::~foo()':foo.cc:(.gnu.linkonce.t._ZN3fooD1Ev[foo::~foo()]+0x4): undefined reference to `vtable for foo'
collect2: ld returned 1 exit status

Damn the spammer.

Submitted by msameer on Fri, 03/03/2006 - 7:29pm

I'm not sure how he's bypassing the captcha module and I don't have time now to dig. I disabled the captcha and I'll have to approve the comments manully as I used to.

Drupal patch monkey, Remember me patch to drupal HEAD

Submitted by msameer on Fri, 03/03/2006 - 1:10am

Well, I ported the patch to drupal CVS HEAD which 4.7 ATM per moshe's request. Looks like I did hit another thing. Might be my stupidity, Might be something wrong. We'll see!

PS. Patch is also in my CVS ;-)