Thursday, March 27, 2008

old games, great memories...

Enjoy your trip back in time :) ... start here http://www.bestoldgames.net/eng/

so, what was your favorite game :D ?

Friday, March 21, 2008

Probabilistic Chips

watch this interesting video! i liked the speaker way too much...

do you think it's really important that every calculation you make gives a correct result? of course it is !! but maybe not for all applications, let's see...

for example, if you're making a bank transaction, does it really matter the number of pennies or cents? what about computer simulations? it's already based on probabilistic models, so maybe a little bit of randomness in the results won't hurt too.

still not convinced? think about a DVD player generating many frames per second, if it messed up some pixels in a number of frames, it won't degrade the overall viewing experience, so maybe signal processing and sensor applications can find advantages to that new technologies.

but why should we bother developing new technologies given the undertaken risks in tolerating the incorrect results? that's because this can significantly reduce the power consumption without compromising user experience.

researchers are now developing a new type of transistors called PCMOS or Probabilistic-CMOS that will be available in 5 years, by making hardware a little bit unstable, we can realize the required randomness while significantly reducing the consumed power. actually this topic is very new that i can't find many articles about it, maybe you can check these links about a new embedded system architecture based on PCMOS, and a demo of PCMOS based DSP.


i think that's a very revolutionary approach in chip design, let's see what u think about that...

Tuesday, March 18, 2008

Setup your Symbian C++ Development Environment on WindowsXp

this semester, we're studying Symbian OS Development for mobile phone software, the course started with C++ development using Carbide C++ and will move later to J2ME, we are currently interested in the S60 platform.

preparing for my next lab assignment, i invite you to join me in installing Carbide C++ on my WindowsXp PC, we'll proceed as follows:

1. install ActivePerl-5.6.1 (required to build your projects) (this setup adds some env variables).
2. install S60 SDK for Symbian, i don't recommend beta versions.
3. install JRE (required by the Carbide Eclipse-based IDE).
4. install Carbide C++.
5. for console apps to run, you'll need to add "textshell" in a separate line at the beginning of your "{SDK_PATH}\Epoc32\Data\epoc.ini" file.then open the Carbide C++ and create a new Symbian OS C++ project-> Generic Symbian OS-> Basic Console Application(EXE) build and run. Let's call this first project "Test"

Troubleshooting:

1. when i first tried to run, i got this error "BLDMAKE ERROR: Platform ARMV5 not supported by \Symbian\Carbide\workspace\Test\group\BLD.INF" i found that the BLD.INF file contained the project information specially the platform details, as a windows user you expect that to be: "PRJ_PLATFORMS WINSCW GCCE" i found it was "PRJ_PLATFORMS DEFAULT" u can change it manually but to avoid doing that everytime i found it can be customized in the Carbide under Windows-> Preferences-> Carbide.C++-> Platform Filtering Preferences where i unchecked everything except WINSCW and GCCE.

update: i found later that you can choose not to install the ARMV5 and GCCE in the SDK setup and everything will still work fine for you - as far as we are concerned.

2. Windows Vista users may face other problems but i can't cover everything here, however i can say that the Symbian online community is very active and you should be able to find the solution to ur problem after a simple search, just be patient it may seem difficult at the beginning.

next time we'll go through our first console application! have fun!!!

Thursday, March 6, 2008

OpenDisc - Free Software to Download

Are you a fan of free, open-source software?
If yes, then please continue reading. Otherwise...well...also continue reading, you might change your mind!!

A while ago, I was surfing the net, and I came across the OpenDisc project. This is basically an ongoing collection of high quality open-source software for Windows, classified into categories, such as: Design, Internet, Multimedia, Utilities, etc.

The programs in this collection include (click here for the complete list):

  • Blender: an advanced 3D graphics modeling program

  • The GIMP: the open-source alternative for Adobe Photoshop (although a bit hard to learn)

  • Azureus: a powerful BitTorrent protocol client

  • FileZilla: a fast and reliable FTP client and server

  • Firefox: web browser

  • Audacity: an audio editing program

  • VLC: a media player that supports a lot of audio and video file-types

  • OpenOffice.org: a full-featured office suite including a word processor, spreadsheet, web page editor and presentation program.

  • and many more...


Of course all these programs can be downloaded from their corresponding websites, but I think it is a good idea to group them all into one collection that can be downloaded from one location. The whole package can be downloaded as an ISO image that can be easily written to a CD. Go to http://theopendisc.com/ for more information or to download the package.

Also, another related project is the OpenEducationDisc, which is similar to the main OpenDisc collection, except that it claims that it focuses on providing students with quick, easy and powerful tools specially selected to solve their educational needs. However, I personally don't see much difference between the two collections (except for 3 or 4 science and mathematics programs). The whole list of programs can be found here.

Still, I think it's a good idea, and I'm sure more and more programs will be added to the list in the future. The project team is open for suggestions, and users can suggest programs on the forum.

ANT

Are you creating large projects? Do you see the building process it complicated? Do you have to repeat many steps each time you build your project? Have you thought of a way to do this in one step? Apache Ant (or simply called Ant) can do this for you.

So what is Ant? I quoted this definitions for you:
"Apache Ant is a Java-based build tool. In theory, it is kind of like Make, but without Make's wrinkles." [http://ant.apache.org/ accessed on March 6, 2008]
"Apache Ant is a software tool for automating software build processes. It is similar to make but is written in the Java language, requires the Java platform, and is best suited to building Java projects." [http://en.wikipedia.org/wiki/Apache_Ant accessed on March 6, 2008]

If you are using Eclipse, then you already have an Ant plugin installed with your Eclipse. Ant is based on an XML build file. Each Ant build file contains some targets and each target encapsulates one or more tasks. Ant has some built in tasks like javac, jar, exec... etc and you can also extend it using Java classes creating your own custom tasks.

Well, this post won't be a tutorial on how to use Ant or the structure of an Ant build file; But I am going to tell you about my experience with Ant, so you can see how powerful is it.

During my internship at Easy Dialog on summer 2007, I was asked -as a training- to create an Ant custom task that inserts the project build information (project name, build date, time, user name...etc) into a database. So, I defined a custom task and created a Java class that takes the information and store them into the database through JDBC. So, whenever this custom task is called by Ant during build, the project build info is stored in the database.

Another time while working in my graduation project, we needed to create a Signed Applet. To create the signed applet, we've to do many steps: Build the applet classes, Export the applet into a Jar file, and signing the Jar file using jarsigner tool. Fortunately, there is a built in Ant task for signing a Jar file. So, I created an Ant build file that contained three targets:
  1. A target for compiling the source files and getting the class files.
  2. A target for archiving the .class files into a Jar file. This target depends on the compilation target.
  3. A target for signing the Jar file, which depends on the second target.
With the third target set as the default one in the Ant build file, and using Eclipse, I can get the signed Jar file from the source code by just one button click! Do you see how easy is this? :)

If you want to learn more about Ant, just follow these links [accessed on March 6, 2008]:

Tuesday, March 4, 2008

لغة ج للبرمجة باللغة العربية

عنوان قد يكون مضحك لكم يا رفاق العمل .... أليس كذلك ؟

ربما للوهلة الأولى نعم أتفق معكم ..... قد يكون صعبا على من تفتحت عيناه على البرمجة فلم ير إلا لغات إنجليزية وعلى حد علمى كلها كذلك حتى الآن

ولكنها فكرة جيدة بلا شك من وجهة نظرى محاولة تعريب لغة البرمجة

قرأت عن لغة ج منذ فترة ليست بالقصيرة لكنى فشلت فى استخدامها ثلاث مرات على ما أذكر بسبب مشاكل فى اللغة فى ويندوز إكس بى

واليوم هى أول مرة أنفذ على جهازى المتواضع برنامج مكتوب بلغة برمجة عربية !!!! ولم أتصور أنى سأفعل يوما ما

دعنا نرى الأمر من زاوية اخرى غير الضحك والتهكم

دعنا ننظر إليها كمحاولة مبدأية قد يكتب لها النجاح أو الفشل وقد تحتاج إلى سنوات وسنوات من العمل والتعديل والابتكار والإبداع و.... إلخ

ولكن من طلب منا أن نفنى أعمارنا فيها .... دعنا نلقى عليها نظرة ... ومن يكمنه المشاركة فليشارك ... ومن يقتنع بالفكرة فليمض

من قال أن العالم أعجمى أبد الدهر .... ربما يجتاج بناء نظم حاسب مماثلة أو قريبة من تلك فى العالم المتقدم إلى 1000 أو 2000 سنة

فإذا بدأنا الآن وكل وضع القليل سنصل بعد 2000 سنة وإذا لم نيدأ لن نصل أبداً

على أى الاحوال أنا غير مسموح لى التحدث فى شئ ليس له علاقة بالحاسب ومجالاته المختلفة هنا لأنى أنوى نشره على مدونة القسم إن شاء الله

وأرجوا المعذرة فى أخطأ اللغة العربية فأنا للأسف لست من الأقوياء فيها

دى روابط اللغة
الصفحة الرئيسية
http://www.jeemlang.com/index.php
كتاب التعريف
http://www.jeemlang.com/documentation/webframe.html

ده البرنامج اللى أنا شغلته النهاردة

! برنامج لحساب مضروب عدد صحيح

المتحول ن : صحيح

المتحول ص ، ع : صحيح

أجعل ع = 1

أكتب "أدخل عدداً صحيحاً لتعرف قيمة مضروبه :" ، سطر

أقرأ ن

أجعل ص = ن

أكرر طالما ص > 1

{

أجعل ع = ع × ص

أجعل ص = ص - 1

}

أكتب ن ، "! =" ، ع