qamardeen for android

another thing i didn’t get a chance to write about earlier is the public beta of qamardeen for android. qamardeen is an application that lets you “taste your islam.” i think the official qamardeen page gives a pretty good explanation of what it is and how it is useful.

the android version uses a whole slew of custom views to make the views appear the way they do (while making it easy to manipulate the data). it also uses some open source libraries - mainly actionbarsherlock and achartengine. in addition, it uses a listview with pinned headers similar to the contacts app. you can see the code in use by the contacts app here, or you can read this blog post for more details.

give it a try - you’ll find it for free on google play.

quran android 2.x

quran for android has seen many changes before ramadan in bringing up the 2.0 release. i just wanted to highlight some of them here, seeing as though i have blog posts talking about other releases of quran android.

what’s new?

  • complete code re-write to make the code cleaner and easier to maintain.
  • fragment based architecture - pages, translations, bookmarks, etc are all in Fragments, which will make it easier to have a tablet version.
  • new, improved ui
  • gapless audio playback support
  • per-ayah actions (share ayah, show tafseer, etc)
  • supports versions 2.1+. older versions (1.5, 1.6) still run the older version.

what happened to the source?

we get lots of support emails. one thing we noticed was a few strange emails about “great app, but please remove ads,” and so on. we would always ask these users, “what are you talking about? our app doesn’t have ads! what are you talking about? please send us a link to the app you are using?”

finally, after a few months, someone sent us a link to an app on the store. the app was our exact 1.6 version of the application, with one major difference - ads. ads everywhere - even on top of each quran page as you were reading it.

this is a problem for several reasons:

  1. it is not befitting of the book of Allah to have Quran pages with ads on the top of each page. imagine reading a page and seeing an ad about a brand of alcohol, for example.
  2. it is someone making money off our work and effort.
  3. if we wanted to make money off our app, we would have sold a premium version with more features.
  4. whenever you want to make money off something, an issue of copyrights, etc comes into question (are we legally allowed to distribute these translations, audio files, etc?).

this is also the reason why quranworks for ipad has a light version which only gives you the 30th juz’, and you can either pay (in-app purchase) for the full quran or you can just buy their separate paid app. while i don’t think this as a good solution, i think it’s certainly a lot better than ads on each page. by the way, those guys have an awesome intro video masha’Allah.

so as a result of this, and in addition to the fact that we had very few contributors (and most of those contributors are people who are friends in real life), we removed the code from github.


due to a bug in google’s algorithms, we were completely unranked between january and august. after numerous emails during ramadan and much du3a, al7amdulillah, they finally fixed our rankings. by the grace of Allah, we were in the top 25 free books & reference applications during ramadan. today, in the us store, we are in the top 70 free books & reference applications. al7amdulillah.


double standards

tl;dr edition

to any egyptian reading this - vote for whoever you think is best for egypt’s future, but in the process, never forget the importance of respect and character in such difficult times. i find these verses particularly relevant to the situation in egypt today and important for every egyptian to contemplate over (irrespective of who they support in the elections).

i am really saddened by the double standards we are seeing in egypt. we stood in tahrir, had shifts of nightly patrols guarding our homes and suffered a period of instability and turmoil to dispose of a tyrant and bring about better conditions and human rights.

here we are today - you support x and i support y - but guess what, we’re both egyptians, and we both want the best for this country. i completely disagree with you that ‘x’ is best for the country, but you know what, that doesn’t matter - it’s my opinion and i am entitled to it, and that’s what’s awesome - i respect you and you respect me, but we each vote for whoever we think is best.

what’s not awesome, however, is double standards. consider “a person is innocent until proven guilty,” and “a person is entitled to a speedy and public trial with an impartial jury.” should these be part of our new egyptian government or not?

if no, then why did we have a revolution to start with? if yes, then why do we think this should only apply to “those we agree with?”

so regardless of who you or i think is best for egypt’s future, it behooves us as egyptians to ascertain that an unbiased, honorable committee oversees the elections - so that your candidate has a fair shot of winning rather than having fixed elections.

what does this means? it means not believing everything we hear and making these people accountable. take for example dr. 7azem’s case - there are only two possibilities - his mother (ra7imaha Allah) had the us citizenship or she didn’t. it’s a very easy thing for the egyptian government to find out - all they have to do is contact the us department of homeland security and find out.

suppose the department of homeland security says, “yes, she was a citizen, and she gained her citizenship on this particular date.” great - then advertise and make this information publicly available to everyone so there remains no doubt about the matter - fitnah averted and people can move on with their lives. the fact that they refuse to present any evidence to people that is acceptable suggests that this election committee still has ties to the previous government.

speaking of the previous government, they still have their money, their contacts, and they are neither dead nor banished from the country. irrespective of who becomes president, the bigger question is “why aren’t these people being brought to justice?”

stepping away from google contacts

in my previous blog post, i briefly talked about syncing an android phone with icloud instead of google contacts. in this post, i’ll talk a little bit about cleaning up your google contacts.

so if you’re like me, you may not be quite ready to erase everything from google contacts (because the implicit result of this is that you will lose google chat access to these people (unless you request permission to chat with them again), and i believe you may also break google plus connections, but i am not certain about that one).

rather than cleaning up manually (which could take a long time, depending on the number of contacts you have), here is a way to start the clean up process.

  1. download googlecl. this open source project allows you to send commands to certain google services from the command line.
  2. download the gdata-python-client library. this is required to run googlecl.
  3. install both (untar, then sudo python setup.py install on both).

now validate that it works - a good test would be running google contacts list ahmed, to list any ahmeds you have in your contacts. this should open up a browser the first time to ask you to authenticate googlecl to use your account info.

now that we’re validated and authenticated, we can start doing things like this:

for i in `perl -e '$,=" ";print +(A..Z)'`; do
   google contats list --fields=name,email,phone $i\* >> contacts;
   # perhaps put a sleep here just to be safe and not get locked out.

the first part enumerates A-Z (got that bit from stackoverflow) - so for each character between A and Z, get all the names, emails, and phone numbers of my contacts. note that this causes certain records to appear many times, and i am not sure if there’s a better way to do this - perhaps just looping on a, e, i, o, u would suffice, but i am not sure.

now, you can do things like this:

# pull out unique contacts
cat contacts | sort | uniq > unique.contacts

# save contacts with no email address in a file for deletion
cat unique.contacts | grep ,None, | cut -f 1 -d ',' > to.delete

# save non-gmail contacts for deletion
cat unique.contacts | grep -v ',None,' | grep -v gmail | grep -v googlemail |
  cut -f 1 -d ',' >> to.delete

# delete them
while read line
   echo 'y' | google contacts delete "$line"
   # perhaps add a sleep here if you're afraid of rate limit/lock out
done < to.delete

and there you have it. eventually, i’ll remove everyone from google contacts, but for now, this greatly reduces the number of people in google contacts that don’t need to be there.

that’s all for now!

running from google

google is a great company with useful products. however, due to its very business and monetization strategies, it has slowly lost some of the trust it once had with people. i won’t go into details here since many people have written on this topic in great details.

i think gina summarizes my concern fairly well with this quote:

If you spend as much time online as I do, you can pump a significant amount of personal information into the cloud every day. Think about what percentage of that cloud Google owns. For me, it’s three years of work and personal email in Gmail, years of events in Google Calendar, phone calls and voicemail in Google Voice, documents and spreadsheets in Google Docs, web page viewing habits in Google Reader. To top it all off, Google also has a record of everything I search the web for every day in their logs.

i use a lot of google products - i count 37 products on my account settings page. my intention is by no means to completely stop using google products, because i think it would be really difficult (if not impossible), especially when you take into consideration google apps (which many companies use), and the fact that i write apps for android. what i want to do, however, is decrease my reliance on google.

the first and foremost service i want to stop using is gmail.

gmail usage for march

above, you can see my gmail usage for march. so imagine that google were to lock me out of my account tomorrow, as they have to other people in the past… losing gmail would be a devastating blow - not because i don’t have backups of the emails there (i keep a backup via imap), but because people only have my gmail address, which means those people would no longer be able to talk to me.

as a result, i have taken my first steps towards liberating myself (at least partially) from google. the first of these steps was registering this domain and signing up for fastmail for email hosting (many talk about this on their sites). the nice part is that i own my domain, so if i decide to stop using fastmail (or fastmail decides to close down or whatever), i simply update dns and my email still reaches me. the k-9 and kaiten apps for android are great imap clients that work well with fastmail.

moreover, i bought the CardDAV Sync app for android and set it up to sync to icloud. i then disabled google’s contact syncing to my email. my next step is to clean out my google contacts by deleting whatever contacts and information that isn’t necessary to be there (phone numbers and addresses are probably the top concern).

that’s it for now!

new domain and octopress

so looking back at it, i’ve been blogging since 2004. unfortunately, as time went on, i have pretty much ignored this blog. so in an effort to start writing more, i’ve decided to make some changes.

first, i’ve switched the domain - if you notice, you’re now on helw.net. this domain is shorter, ties closer to my name, and, most importantly, gives me a good domain for an email address (ahmed@). more on the reasons for that in a future post insha’Allah.

secondly, i’ve switched blogging platforms… i’ve “baked” the site, which means that this page, for example, is a static page - no more php to generate pages. this means that things should be a little faster insha’Allah.

the tool i’ve chosen to use is octopress - it’s open source, easy to use, versatile, and, in summary, i like it :) posts are written as plain text (markdown). they are then converted into html and pushed to the server via rsync.

it’s fairly cool to be able to run ack and sed on a directory of files to find things, change urls, etc. i also store the blog’s sources in git, which is cool.

exporting wordpress was easy, thanks to exitwp. just to be clear, i love wordpress and think it’s a great product. i am only leaving it to try something new (hopefully something that will encourage me to blog more).

oh, i should mention that, as a result of this move, comments have been moved to disqus. for those migrating, don’t forget to ensure that comments: true appears in the header section, otherwise, you’ll be wondering why comments aren’t working (thanks midnightcheese).

that’s about it for now!

salam, sister siri!

i was inspired by salem’s tweet from yesterday to play around with ios 5 a bit.

i discovered this library, which makes it pretty easy to hook into siri. i found out that a brother (by the name of Bilal Ahmad, may Allah reward him) had beaten me to the idea long ago, however, and made a nice prayertimes extension for siri.

i decided to play around anyway, and not too much later, i had my own version (requiring only one command rather than 2 in brother Bilal’s version). it queries salah.com for its prayer times, and currently only returns isna based times.

i have a few other ideas that i’d like to do with this if time permits insha’Allah as well. no real plans on releasing it, but if anyone is interested, drop me a line and i can send you the source insha’Allah.

quran android 1.6

bismillah alra7man alra7eem. on february 12th, we released quran android 1.6. this version was mostly intended as a bugfix release, but a few new features got in as well. some notable ones include search, repeat mode for ayahs, night mode for pages, and many bugfixes. it also happens to look nicer on the tablet now, and it works on ics (although if hardware acceleration is turned on, it can sometimes crash on orientation change).

we are currently working on the next major version of quran android - perhaps i’ll write about that at a later time insha’Allah. wsalams.

masr merged into whatstheplot

i decided to merge the old masr.whatstheplot.com entries here into this blog since updating two blogs is more difficult than updating one :)

Insane Game for Android

insane game icon

just for fun, i had written this (really simple) game for Android not long ago. i decided that i should release it rather than keep it on my hard drive doing nothing. it is really simple, but still, it is fun enough to try :)

if you have an android phone, download it a shot and let me know what you think - and if you have better graphical skills than i do, please feel free to send me some images :P