This blog is subject the DISCLAIMER below.

Monday, December 24, 2007

WaZkker Al-mo'mnen (source code)

WaZkker Al-mo'mnen Program is an application changes the Personal Message of the current user only during praying times as a way to inform him and friends in the MSN list about praying times ,the application also supported (as an extra option ) with number of categories each of them have number of Azkar or Ahadeth to be displayed randomly ( 10 sec ) in non praying times (option) . This program support a huge number of cities and countries time zones all around the world .
Any questions or suggestions are welcome in the application's official blog . The application in Beta version ,
download it , please click to any of this two links .

To download the source code (C# 2.0) :

.. more.

Friday, December 21, 2007

Java Byte Code Instrumentation

Welcome people :)

If you have used reflection before, you probably have tasted the power and flexibility it can give you. Especially the setAccessible function that lets you access private methods and fields, and the newInstance function that lets you load classes at run-time.

Anyway, sometimes you need to change something in the code. Or at least want to get notified on some function call (related: Aspect Oriented Programming, terms: aspectj, aspectwerkz).

If you have the source, then it is not a problem to go and modify, and recompile. Some cases it will take a lot of modifications for example if you want to log all function calls (aspectj can help in that regard). But in other cases where you don't have the code or where you can't redeploy the modified package in other machines, for license restrictions or for deployment overhead you can't do that(aspectwerkz will help in this time).

Both aspectj and aspectwerkz provides facilities to modify the classes based on aspect oriented programming rules, which may may not be enough for your desired task. However, have you ever considered how these are implemented ?

They are implemented using byte code engineering techniques. aspectj uses BCEL, and aspectwerkz uses ASM. Those libraries are simple, they just provide abstraction above the byte level to the java methods and fields level.

The main problem is in the JVM. The JVM provides strong checks on the byte code, so for example, a constructor must call the direct super class constructor (I tried to bypass that myself and I got a Wrong Constructor Called exception !). The JVM's ugliest part, is that it doesn't support class reloading. (to be fair it is supported in the debug mode given that the class have the same schema; methods and fields). JDK 1.5 provides a way to reload classes dynamically (as often as you want) using JVMTI (JVM Tool Interface) java.lang.instrument (it can be used natively too) . However it doesn't support schema changes. So statically, or at load time (JVMTI supports that too, you don't have to write your own class loader for that), add, remove, and modify all the methods or fields you anticipate that you would need, even if you just add an empty method. Then at anytime later, you can define the exact body of the method. In case you only want to change the implementation, then no need for load time modifications. You can do it anytime. JVMTI is the successor for JVMPI and JVMDI (JVM profiling and debugging interface). Maybe I will write about JVMTI and native Java programming sometime later.

aspectj modifies the class file itself (build-time offline weaving), while aspectwerkz can do that, beside deployment-time online weaving (it also support run-time online weaving using JVMTI).

Example of using BCEL:
That example replaces the default constructor with a stub constructor that check on a boolean variable, if equal true, it won't call the default constructor, otherwise it will.

.. more.

Friday, December 14, 2007

Adobe Scripting

This ability supported by Adobe to it's products or applications to automate and facilitate your work throw it's application .Assume the routine used to convert 100 pictures from *.jpg to *.bmp extension !!!! Why you should done it manually by hands which may take about 3 hours while you can do it automaticly by writing a simple script that do it in less than minute !!

As Marco in Microsoft Office Similar to Scripting in Adobe ( for automation purpose ) .

Scripting is a series of statements or codes that tells an application (of Adobe ) to execute task depends on it.
Adobe supports scripting or coding throw one of three languages that it supports .

In Mac system there are two scripts :
# JavaScript
# MacScript

In Windows system there are also two scripts :
# JavaScript
# MacScript

The "Adobe ExtendScript toolkit 2" is like IDE for scripting which offers all standard JavaScript features, plus a development and debugging environment, the ExtendScript Toolkit (ESTK) is installed with all scriptable Adobe applications like (Adobe illustrator and photoshop).

For more information and documentations visit this officially link :

.. more.

Wednesday, December 12, 2007

Microsoft Parallel Extensions to .NET Framework 3.5


Parallel Extensions to the .NET Framework is a managed programming model for data parallelism, task parallelism, and coordination on parallel hardware unified by a common work scheduler. Parallel Extensions makes it easier for developers to write programs that scale to take advantage of parallel hardware by providing improved performance as the numbers of cores and processors increase without having to deal with many of the complexities of today’s concurrent programming models.

Parallel Extensions provides library based support for introducing concurrency into applications written with any .NET language, including but not limited to C# and Visual Basic.
Note: This CTP is for testing purposes only. Features and functionality may change before final release, and Microsoft may choose not to provide a final release.

Press Here to Download

.. more.

Saturday, December 08, 2007

Dotnetwork user group Launch @ Microsoft

Get Ready for the BIG event!

We are Launching the DotNetwork User Group at Microsoft Smart Village.
Enjoy the nice sessions & the great company!

Please visit or our facebook group for more info.

Also please check the Event Link and the attachments.


There will be buses available to take you to and from the smart village. They will be available from 5:00 PM to 5:30 PM at :
1- Abdel Mone'm Ryad sq. (Super Jet Parking)
2- Naddy El sekka (in front of the club's main gate)

Check the places of the buses:

.. more.