helw.net

the plot reinvented.

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

ramadan kareem!

ramadan kareem!  just for fun, here’s a list of some of the things i’ll be using this ramadan insha’Allah:

  • quran android - free, open source quran android application.

  • haramainrecordings - latest mp3s for salah at the haramain (including taraweeh!)  these guys are awesome masha’Allah!

  • guidance for mac - know what time salah is with this useful tool on osx.

i want to remind myself and you guys to keep the ummah in our prayers, especially since many people are undergoing difficulties, war, tyranny, and so on…

core boids

so it’s been nearly 6 years since i posted here about pyboids…  and since i love the idea of the boids algorithm so much (and was trying to play with core animation), i decided to try to write boids using core animation.  it’s imperfect, but it works (and, technically speaking, it is 3d, although i don’t really have the functionality to rotate and such to prove it… well, not yet anyway).

the cool thing is that (theoretically speaking), this same code can easily run (without many changes) on an iOS device.  core animation itself is really powerful - it helps make snazzy apps possible by making animations really simple (in many cases, core animation takes care of the animation for you, automagically and behind the scenes).

for those who don’t know, boids is an algorithm developed by craig reynolds to simulate the flight of birds.  a good explanation (and pseudocode) of the algorithm can be found here.

death star for android released!

dstar (well, death star as @wnafee chose to name it instead) is a simple puzzle game from the ti days. i posted a link to an html5 version a few days ago, and today, we’re releasing an ad-supported android version (just for fun).  it was done by @wnafee and i.

it’s simple, but challenging - if you like puzzle games, try it out and see if you can beat all the 32 levels! you can find it on the android market.

here’s a screenshot of the level selector and another of the game play.  graphics by @somaiagabr.  levels come partially from the ti83 version and partially from gstar.  as far as i know, the game was originally made on the ti by joe w, although i think there’s also an hp48 version somewhere as well.

dstar html5

wanted to play around with html5, so came up with this html5 version of dstar.  it’s less than 100 lines of code (not including the levels and simple html).  it’s based on the ti and hp48 versions of the same game.  this version only has 2 levels.  graphics by @somaiagabr.

source code could be better, but you can find the non-minified game logic here and the levels here. if i were to try to optimize this, i would start at the levels, since each level could be represented as 27 bytes (+2 bytes metadata) instead of 108 bytes.

click here to play!

search quran with alfredapp on osx

if you don’t already use alfred on osx, you really should!  it’s a great application launcher for osx.  i switched to alfred shortly after quicksilver development stopped (although it is now back again).  anyhow, alfred is awesome!  the application itself is free (and there’s an option to buy some additional features via the powerpack).  according to alfred, on my laptop, ”@alfredapp has been shown 2,319 times. Average 13.4 times per day.”

to install the quran search plugin, just click here.  also, make sure to check out the alfred tips page for many more cool custom searches.

quran android 1.3

al7amdulillah, quran android 1.3 has been released!  new features include improved ui and graphics, better page scrolling, multiple translations, basic search, and more!

download it from the android market or check out the code on github!

updating osx for egypt’s dst changes

as people in egypt know, dst was cancelled in egypt:

“…Egypt’s interim cabinet decided on Wednesday to cancel daylight saving time after a poll posted on its website showed the majority of Egyptians would approve the cancellation.” (via almasryalyoum).

so, what do us apple users do until apple releases a fix?  @vodafoneegypt suggested that people switch to the Harare time zone.  not my cup of tea.  thinking about manually changing your time?  bad idea if you have a twitter client.

so how do you properly fix it?  here’s a set of instructions that i adopted (based off of this post from argentina and this post from new zealand) to properly solve the problem in egypt.

updating osx

as people who have dealt with timezones before know, the timezones are updated via the zoneinfo database.  you can see more information on the database on wikipedia.

1.  download the latest tzdata file from here (currently, this links to 2011 version g, updated as of 4/25/2011, however, check here to see if there is a newer one).

2.  run the following commands:

1
2
3
4
mkdir a
cd a
tar xzf ../tzdata2011g.tar.gz
sudo zic africa

by the way, just for fun, open the africa file and search for egypt - you’ll notice all the different times egypt’s timezone rules changed :)  anyhow, at this point, your command line (terminal) time should be correct - verify it by typing date.  you’ll notice, however, that your system clock is still wrong.  let’s fix it…

3.  so the time in osx is not just affected by updating the zoneinfo database - you also need to update the icu database so that it also uses the latest zoneinfo database.  if you have xcode and want to build manually, download icu from apple (i am using 400.40, but you can check here if there’s a later one).  otherwise, jump to step 4b.

4a.  if you have xcode, run the following commands:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
tar xzf ICU-400.40.tar.gz
cd ICU-400.40
cd icuSources/tools/tzcode
# ./icuSources/tools/tzcode/readme.txt tells us that placing a tzdata
# file in the tzcode directory will compile with that zoneinfo database

# copy the tzdata file from step 1 here
cp ~/Downloads/tzdata2011g.tar.gz .
cd ../..

# compile
./runConfigureICU MacOSX --with-data-packaging=archive
gnumake
# if you want, backup your current icu file first
cp /usr/share/icu/icudt40l.dat ~

# replace the data file only
sudo install -o root -g wheel -m 0644 -Sp data/out/icudt40l.dat /usr/share/icu/icudt40l.dat

4b.  if you don’t have xcode, you can download my icudt40l.dat file from here and install it by doing:

1
2
3
bunzip2 icudt40l.2001g.bz2
mv icudt40l.2001g icudt40l.dat
sudo install -o root -g wheel -m 0644 -Sp icudt40l.dat /usr/share/icu/icudt40l.dat

reboot your system and you should be good to go!

ios? although technically speaking, the same steps for osx apply, the icu file is a different version (icu46l.dat) - i built icu4c-4.6.1 and pushed the dat file to my iphone, but unfortunately, it didn’t fix the problem.  unfortunately, i don’t have solution for this one yet :(

java developer?

if you are a java developer, you’ll notice that java’s time is also wrong…  this is because java also has its own timezone database that needs updating.  although, sun oracle provides a tool for fixing this, it is only up to 2011e (rather than 2011g) as of the time of this post.

you can verify that the time is wrong by running a program like this:

1
2
3
4
5
6
7
8
9
10
11
12
import java.util.Date;
import java.util.Calendar;
import java.util.TimeZone;
import java.util.GregorianCalendar;

public class Test {
 public static void main(String[] args){
 Calendar cal = new GregorianCalendar(TimeZone.getTimeZone("Africa/Cairo"));
 cal.setTimeInMillis(new Date().getTime());
 System.out.format("%1$tT (%1$tB %1$td %1$tY)", cal);
 }
}

sure enough, one hour off.   when the package is updated for the 2011g changes, you’ll download the latest version, extract it, and then run:

1
sudo java -Djava.vendor="Sun Microsystems Inc." -jar tzupdater.jar -v -u

if you were to do this now, you’d update to 2011e, which still doesn’t include the fix.