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](alfredapp://customsearch/Search Quran/quran/utf8/url=http://quran.com/search?q={query}).  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:

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:

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
# 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:

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:

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:

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.

quran android 1.2

in case you haven’t seen it, check out version 1.2 of quran android (released on december 23rd).  you can see screenshots and a more detailed change log on hussein’s blog.

more features and improvements are in the pipeline.  feel free to check out the code on github and let us know if you have any suggestions, thoughts, or contributions!

so i left the country...

uh… yeah.

so egypt (like many other countries apparently) requires military service from it’s citizens.  as a dual citizen, you are exempt from egyptian military service.  i won’t get into details of how to prove this and get your military pardon, but let’s just say that it’s a fairly long winded and arduous process (which until now, i am still unable to complete).

there was some uncertainty as to what would happen if i stayed longer than 6 months - some people said, “you need to get your passport restamped (or leave the country) if you are planning on staying longer than 6 months.”  others said, “you don’t need to do anything.”  i almost followed the latter, until someone advised me to go check just in case, otherwise you could have problems later on.  so i went to the passport office in alexandria.

the lady said, “as long as you’re here less than 6 months, there is no problem.  once you are here for 6 months, you need to give us your id card and your military status.”  i said, “but i am having trouble getting my military status sorted out, what happens if i can’t bring these papers?”  she said, “then we won’t let you leave.”

i was like, “seriously?”  but i guess it matches up with something a friend had mentioned to me, so i could believe it.  i imagined that, given that situation, i could call the embassy and say, “they won’t let me leave,” but i also have to remember that theoretically, i entered the country as an egyptian, so they could say, “we can’t help you.”

to save myself the unnecessary hassle, i booked a flight and left…  i guess i’ll have to do this every 6 months until i get these papers sorted out…

searching the quran on ios

just for fun, here’s an ios universal version of the quran search application.


  • ipad:  1 (shown above) and 2.

  • iphone: 1 and 2.

you can find the source code here (update: added a link to a tar download and removed the code from github since i am not really maintaining this - june 26th, 2011).

searching the quran on android

just for fun, i hacked together a simple prototype of quran search on android. in reality, it’s more close to the autocomplete transliteration demo that i did some time back. for now, it’s only transliteration search, but later on, it can be expanded to search other languages. ultimately, it should probably be integrated into quran android.

you can find the source here.  (update: added a link to a tar download and removed the code from github since i am not really maintaining this - june 26th, 2011).