Moodle 2.0 released!

Alḥamdulillāh, Moodle 2.0 has been released! This is important for a lot of reasons, amongst them being that I work with Moodle on a day-to-day basis in my daytime job, and I use it on some of my own sites.  However, most important is the fact that Moodle provides a platform for education that is free-as-in-freedom and the community supports this philosophy through-and-through.

Moodle 2.0 brings an incredibly wide range of new features and capabilities that further extend what is possible.  I personally have worked on some of the new features in a minor capacity – both in submitting bug reports as well as helping to implement some milestones in line with what we needed at work.

Moodle is used on countless sites to provide education and share knowledge in every corner of the world.  So, congratulations to the Moodle team and to the world for this great step forward!

Unfinished Projects

Bismillaahir Rahmaanir Raheem

I have the bad habit of starting things and not completing them.  This is bad for numerous reasons, just a few of which I’ll list shortly.  I will warn you now that as this post is meant to help me organize my thoughts, it will list-heavy, as I do find lists and other types of grouping structures to be beneficial and help in making relationships (e.g., database schemes).

I already know that as I type this I will revisit this post in the future as I will be unable, in one sitting, to be think of all of unfinished projects.  Therefore, I will come back and add to the list as I recall more things (and find the time and desire, a rare combination these days, to update the blog).


  • Unfinished projects tend to clutter your mind
    • I tend to turn to unfinished projects whenever I work (i.e., get paid to do something) and hit a stumbling block.  This severely hinders my progress on work, which ultimately leads to less getting done.
    • Time when I could be brainstorming solutions is usually spent wondering about these myriad unfinished projects, which, lacking much focus, tend to yield few to no tangible solutions.  This includes walking/riding to the masjid, showering, and other activities that tend to leave the brain free and, ideally, well-suited for addressing beneficial thoughts.
    • If I try to focus on something, I can have a hard time preventing my mind from wandering to these unfinished projects.  This is related to the point about work above.
    • It’s just not healthy to have so many things on the mind at once.  There is a point at which the benefit of multitasking is overshadowed by the overhead of just trying to keep track of everything.  It’s not efficient.
  • Having so many unfinished projects means that it can be hard to pick just one to work on.
  • Playing catch-up may give a false sense of achievement, because the value of these unfinished projects are not equal, and therefore, I may complete one that is really not that important while one that is more valuable was never completed.  Therefore, just trying to clear out the backlog of projects may yield a net result of close to zero.
  • There are many more, and I may amend this list in the future as I recall them.

So, here is the list of my unfinished projects (at least those that I can recall at one point or another).  I am including some thoughts on the different ideas as well.

  • Redesign the Audio Islam website
  • Write a script to automatically tag all the audio files, especially the ones containing Qurʾān recitation, with reciter & sūrah information
  • The Fedora Documentation manpage coverage project
    • This is basically an idea I had related to the Fedora Documentation project to ensure that all executables had an associated man page (manual page, a low-level documentation system for Unix-like operating systems such as GNU/Linux).
    • The first step in this is to canvass the existing packages & executables and see what already has a man page.  I have already started on this, but there is much work left to be done.
    • There are plenty of sources for documentation that can be used as baseline manpages, including the Debian project.  So, this project doesn’t require as much work as it does just coordinating and facilitating.
  • A Paltalk replacement
    • Paltalk is a voice conference & chat application (video is also supported, but I don’t care about that right now) that is widely used, but terribly proprietary.
    • My goal is to create or synthesize a replacement for Paltalk using only free software and open technologies
      • The best candidates for this are SIP (for multimedia) and Jabber/XMPP (for text chat).
      • The landscape for software that can do this in a simple fashion is rather bleak, but there are some solutions.
      • I’m currently focused on FreeSWITCH as the SIP server and ejabberd as the chat backend.
      • Linking them such that it will be one service will be quite challenging, and still requires a free software client that has solid support for both SIP & XMPP
        • I’ve been looking mostly at Qutecom, SIP Communicator, and Psi
        • On GNU/Linux, the Empathy client for the Telepathy framework is outstanding, but, is limited to free-software operating systems.  I think Windows support is a long way out still.
  • AlMaghrib in Malaysia
    • I am trying to catalyze the establishment of AlMaghrib Institute seminars in Malaysia (almost surely in Kuala Lumpur, at least at the beginning).
    • I’ve already purchased the domains, and I just need to get the site setup.
      • To start off, I think just a blog with some information about AlMaghrib is fine.  It can be fleshed-out later.
    • Alḥamdulillāh, there is already a lot of interest both within and without Malaysia.  I have several contacts here that are also excited and may be able to facilitate the first few steps.
      • I see the first step being getting a group of excited & enthusiastic locals to get behind the effort.
      • After that group is identified (and it is really an ongoing process), see about getting the support of existing organizations.
        • From an initial perspective, it seems like this is going to be easy, in shāʾ Allāh.
      • With this support, we will want to schedule some kind of event to gain a wider audience interest.  Something like a conference or teaser seminar, perhaps a week-long program with some of the AlMaghrib instructors.
        • Many of the AlMaghrib instructors are already known or well-known here
        • Having Suhaib Webb might be particularly nice, as his wife is Malaysian.
        • Waleed Basyouni has expressed an interest in coming to Malaysia, and some work is already in progress regarding that, but it may have stalled (temporarily only, in shāʾ Allāh)
        • Yasir Qadhi is another instructor that has some reknown here, apparently (from what I’ve been told).
  • HidayahTech
    • My own technology consulting business
    • Although HidayahTech is currently the name of my blog, I have also resolved to use this as the name for my own consulting business.
    • Services will include
      • Audio recording, editing, mastering, and production (I did this, for example, for the Texas Dawah Convention in 2007)
        • I am consider splitting this and other audio-related services into it’s own business, namely, Hidayah Audio
      • Web technologies
        • Hosting (this is generally quite easy)
        • Moodle (an open-source learning mangement system, for putting schools online, for example)
        • Audio services, including hosting my “replacement for Paltalk” solution above
      • Consulting
        • This will include a wide variety of services ranging from system administration, general IT, infrastructure, to web development
        • I may take some partners or hire some friends for this aspect of this business, as I will need help for some points of it
  • Global Homeschooling
    • This is my premiere project, if I had to pick one.  I consider this to be something great if I can achieve it, by the Permission of Allāh.
    • To sum it up, I want to develop a system whereby Muslims (and truly, anyone) can homeschool their own children easily.  Homeschooling may be too specific of a term, though, because I want the scale to include a plan that can be implemented by governments.  I would like children, and really anyone, to be able to be educated within their own homes, utilizing the bevy of technology that exists.
    • Technology creates options & opportunities, and this is a belief I take strongly.  Therefore, I think we should utilize it.  I see education as one of the most important investments that can be made, whether it is Islamic or related to the worldly sciences, both of which are important.  I actually believe the distinction to be artificial, but it will take time to get there.
    • So, to put it in a few words, I would like to develop a system of education leveraging technology that is globally accessible allowing education to be released from the confines of school buildings.
  • Learn the Python programming language
    • I think learning Python has a high return value on the types of applications I would like to write, including graphical ones.  Also, it is quite the preferred language for many platforms, not the least of which is Red Hat & Fedora.
  • Memorize the Qurʾān
    • Please keep in mind that this list isn’t in order of importance…;)
    • I think this is a goal every Muslim should have.  I started this goal, seriously, while I was staying in Egypt with my parents, even semi-regularly visiting the imān of the nearby masjid to review my memorization.  Sadly, since arriving in Malaysia I’ve not really resumed, and I am afraid I may start regressing.  This is the kind of project that can be achieved through a little, regular & constant work every day.  I really should commit to something, even if it is as simple as one āyāh per day.  That would be better than none.

Concatenating compressed files

Bismillaahir Rahmaanir Raheem

I have my new server ( – the one hosting Audio Islam) setup to log web accesses each day to its own file which is then bzip2-compressed.  This is convenient for a variety of reasons.

  • Firstly, I can easily access statistics for each day by processing the appropriate file.
  • B, I can see the relative activity on each day at a glance by seeing the size of the file, keeping in mind it’s only a rough estimate since compression can skew the results (e.g., many requests for the same, exact URL may compress much more than fewer, disparate URL requests, resulting in a smaller file and a seemingly less active day)
  • 3, by being compressed text files, they take up very, very little space.

Continue reading “Concatenating compressed files”

Naïve integer primality calculator in PHP

Bismillaahir Rahmaanir Raheem

Alhamdulillaah, while reading about integers and, subsequently, prime numbers last night, I decided the time had come for me to write a primality calculator in PHP.  The test I use in my implementation is about as a naïve as one can possible get, but it was fun, nonetheless.

Interestingly enough, I discovered that there already exists a primality calculator for *nix-based systems – primes.  It comes with the bsd-games package for Fedora.  I assume the same is true for other distributions.  Mine isn’t quite as fast yet…but it does accept, optionally, one or two arguments. If there are two arguments, then it will calculate all primes starting from the first going until the second. If there is only one argument, it will calculate from PRIME_START (defined to be 2) through to the largest integer PHP can handle on your platform (usually the maximum value of a signed int on your machine).

There are loads of potential optimizations that can be performed, and this was just something written on a whim as a proof of concept. It seems to be accurate, however. The code, released under the GNU GPL v. 3.0, can be found below.
Continue reading “Naïve integer primality calculator in PHP”

My projects running on free software (and how to better integrate them)

Bismillaahir Rahmaanir Raheem

Software that is free from proprietary restrictions (a.k.a, free-and-open-source software, which I will refer to as simply “free software” for the rest of this post) has become exceedingly important in my life for both philosophical as well as practical reasons. Not only do I truly believe free software to be inherently better in every way for humanity than proprietary/closed-source software, but I have become increasingly incapable of working with non-free software. Now that free software solutions run the gamut of nearly everything I have a need for, I have all but eliminated non-free software from my essential stack. Having said that, I have a special interest in web-based free software as this particular realm of software has become crucial not only to myself, but to nearly all projects in which I am involved.

Continue reading “My projects running on free software (and how to better integrate them)”

phpBB 3.0 Beta5 released

Alhamdulillaah, phpBB 3.0 Beta5 has been released! They mention in the announcement that they are anticipating the next release to be a Release Candidate, which means we may possibly have phpBB 3.0 final by this Summer, in shaa Allaah.

I have been anxiously awaiting phpBB 3.0 for a loooong time (predating this blog, that’s for sure). Features like sub-forums, UTF-8, and others that make sense for administering a larger forum have been a long time coming, and I have to hand it to the phpBB team – it is not for slacking, they are just so darn thorough. And they are probably dead-set on making phpBB 3.0 rock-solid in terms of performance, security, and stability, so I’m not pushing them to hurry to the final release…I just wish they would hurry to the final release.

My immediate need is for an upgrade for the Columbus Dawah forums, but I am reasonably sure that it won’t be the last forum I am working on, and I always prefer using a free-and-open-source alternative to proprietary and closed-source code.

phpBB 3.0 Beta3 released!!!

Alhamdulillaah, the final release of phpBB3 approaches ever nearer with the release of Beta3. I’ve always been an avid phpBB fan, and although I was the friendly admin of a vBulletin 3-powered forum for well over a year, phpBB has always been my choice when it came to deploying my own bulletin board sites for its free-and-open-source philosophy and generally high-quality nature (despite a surge of security breaches a short while back). Continue reading “phpBB 3.0 Beta3 released!!!”

MySQL Server, Apache HTTPD, PHP, & Subversion source configuration & installation

I have my webserver (at the time of this writing, the one on which this blog is posted) configured rather nicely, however, as with everything that accumulates over time, it’s current state is a combination of quite a lot of trial-&-error sessions that would be really hard to duplicate the first time I tried to do so on another environment. Therefore, I’m going to try to log the configuration I use to get a system working as I like. This may or may not turn into a tutorial-type series, but for now, it’s just notes for myself. Continue reading “MySQL Server, Apache HTTPD, PHP, & Subversion source configuration & installation”

PHP, PEAR, & Zend Framework coding standards

I’m all for standardization and standardizing procedures for long-term efficiency. However, up until now, where there were no “official” standards for something, I would make up my own or imitate what I thought was the nicest. One place where I’ve done just this was with regards to my coding styles for PHP – I had my own styles. Well, no more! I’ve finally decided to take the plunge and following the PEAR coding standards. Continue reading “PHP, PEAR, & Zend Framework coding standards”

Implementing PHP Iterators – The Beginning

One of the new features that came with PHP 5 is the ability to implement Iterators. Implementing one of your objects as an iterator essentially allows you to treat it as a standard array. By default, without adding any additional code, you can enable iteration over a regular objects variable members. So, for example, if I had the following code:

(I’ve removed the plugin that I used to format PHP code here, so until I find out that works, I apologize for not showing my code examples…)
If I were to run a foreach() loop over this, I would get behavior that would correspond to an array with the elements of $bar1, $bar2, & $bar3. This is wonderful default functionality. However, you can go a step further if you want to implement more complex & complete behavior. I’m going to be experimenting on this kind of behavior with my DBObject class – namely, converting it to a DBArray object, and see how well that goes over. I will report on my successes & travails in followup posts.

(Boy I’m having a hard time to get WordPress to format code on this thing…probably need to get an extension to do it. Any suggestions?)

Zend Framework

My supervisor brought to my attention the Zend Framework – an interesting PHP-powered answer to Ruby-on-Rails.  The Zend Framework seems to espouse the MVC design pattern.  It looks really interesting & is worth another look here shortly.  I’ll follow-up & let you know what I find out.