Back to blogging :)

Hello All,

Sorry i have not been bloggin so much these days and that’s because i have been quite busy with a couple of things that took most of my time.

I have graduated from the University of Jordan holding a BCs Degree in Computer Science and i have applied to several Software Development companies and i am now on my way to start working for King Abdullah Design and Development Bereu (KADDB for short).

I am also having some software ideas which i am planning to make open source. My Ideas include:

Developing a Semi IDE – TextEditor application that most importantly supports arabic in addition to enabling Syntax highlighting and Intellisense. Almost all text-editors out there, be it open source or not do support syntax highlighting but do not support intellisense, but rather support “Code Completion” in which you write a keyword you build into the editor to make this keyword be replaced by a whole block of code. This can be quite a nice feature but i would rather have Intellisense because i would definitely increase my productivity as a software developer. It’s aim is to provide developer with productivity tools in addition to being small , standalone, lightweight, and feature full. This will be developed in C++ and the wxWidgets cross-platform library. I will be open for suggestions and everybody is welcome to participate.

Another idea that i am having in mind is a PHP project that will be more of a framework. There are alot of frameworks out there that do have MVC support such as PHPCake, CodeIgniter and Zend Framework. But i am thinking of making a framework for PHP that would kinda make PHP development like ASP.NET web page development but do it in a simple manner and not as quite big as .NET framework. I am sure the open source community is going to participate in making plugin classes for such a framework to make it as big as the .NET framework but i have to establish a very good core to start with before making this useful.

If you would like to participate in any of my open source projects you can email me at rakan.alhneiti@gmail.com or add me on MSN Messenger on the same email. We can talk about more details.

Happy programming

Rakan

Got 1st Place on University of Jordan in CS major

Hello all,

I am almost close to graduation and i am really happy because of what i got in my University Efficiency Test. I scored 420 points which qualified me to be on top of all CS students at the university of Jordan and 2nd place at the Hashimite Kingdom of Jordan.

This is really nice because this is the best ranking i have ever got in all what i previously did of exams and grades.

My appologies to blog fans because the last post was written a long time ago and that’s because i have been busy working on soo many projects for my courses that had to be delivered at the end of the course including my graduation project which was a Robot Car controlled via PC with multiple other features.

Stay Tuned.

Rakan

We like IT because we just like IT

Hello there,

Today i performed two exams for Operations Research and Compilers course. Actually i did quite bad to be honest and that is because of a very bad way of giving the course by designated staff. Imagine studying compilers construction theory with no practical implementation at all! What’s the purpose of giving such course?

Anyway, we kinda got used to it as we have also been given programming languages courses like Java, C#, Prolog, C++ and principles like Data Structures and OOP with no practical hands on experience.

I think this is the problem with universities of such kind, or is it maybe the staff’s fault? or is it really the student fault? we will never know. But as far as i am concerned it’s everyones problem.

I do read IT related books from time to time. I used to have passion to subjects like compilers and operating systems before i get to studying computer science Bsc but to be honest those subjects are now a group of my worst subjects in IT field. I mean i do like programming, i do like exploring operating systems and compiler construction but it is just reading about a certain something when you feel it isnt the time for it makes you hate the subject it’s self. That’s exactly what is happening to me right now…

Quite a good number of people got into studying Computer Science related Bcs degree because they do like IT and because they want to expand their knowledge to more advanced levels but what happens is you tend to lose benefit of subject you take because you feel forced into studying the material and the whole subject just because you want to pass the course, and once you do… you will forget everything related to that particular subject.

So, as a message to all Computer Science related degrees students. DO NOT wait for you instructor to provide you with details you really need to know about anything. Do not think you will ever get any better studying the subject while taking a course because that will diverge you from your main objective which is the get more knowledge into smaller and simpler and a pathetic objective which is to pass the course.

Self reading and research is the way to go, Computer Science is more of practice than a just a group of theories. That’s the way to go for all of us …

I will be glad to hear what you think about such matter.

Rakan

Using KDE’s Adept Manager to install applications on your new linux installation

As you might be installing any linux distribution on your computer you might tend to think. If linux has all projects and applications are open source, do i have to compile and install them manually? the answer is no ofcourse.

That is because depending on the distribution you are going to use there should be something that is called a package. A software package is a pre-compiled version of an open source software that you can install on your computer without having to re-compile the source code of that application.

As far as i am concerned, Debian-based systems and majority of other systems provide a couple of methods for downloading and installating packages. One of those is called apt-get. Apt-get is a console application that enables you to search, download and install packages from your distribution repository available on the internet. Let’s imagine a Repository like a software warehouse where you can go pick whatever package you want and run it on your computer. Once your distribution is installed some of those repositories are up to date and some are not.

If you want to to update your repositories using apt-get you can open up the console to write:

sudo apt-get update

Note: sudo is a command that precedes other commands to let the console know you are going to execute the command as a Super User (root access).

which will download the updated version of the repository database. Now to install an application you can type:

sudo apt-get install PackageName

But, why do i have to use console to install my application? would’nt double clicking the file and pressing “Next” be enough for installing application? do i have to remember this command? What if i do not have any idea about the package name?

This is why Adept or Synaptic package managers are there for. Kubuntu ships with Adept installed by default while Ubuntu ships with Synaptic installed by default.

Those package managers provide user-interface for apt-get application to enable you to search for packages. Search will be done on different fields of package like name, description..etc.

Here is how adept looks like:

Adept package manager

As you might notice all options are available from searching to browsing packages.

If you click on the Adept -> Manager repositories menu this window will be displayed:

Managing repositories

Notice that on your computer, all the checked options might not be checked. So make sure you check them and then close the window. You will be promoted to update the packages, do update them. Because when you check these options you are adding new databases to your local repositories and it should be up to date in order to install up to date software.

Once you get the packages updated, you can start searching for packages and install them on your computer. You can do this by inserting description or title of application you want to install. Adept will automatically filter results to fit the criteria you are using. Once packages appear you then can click on package title and press “Request install” to then press “Apply changes” in the application’s toolbar to download and install the application.

Adept package manager

And we’re done! :)
But we have a problem!

Assuming that i format my computer for some reason. Do i have to Download and install the packages all again?

Of course not!!!

That is because we also have two options for this matter. You have to take the step of ALWAYS copying the packages in folder /var/cache/apt/archives/ folder because that’s where apt, adept, synaptic will download them to.

Now the 2 options are available to you are i mentioned before after you keep copies of packages. After re-installing Linux on your computer you can do this:

1) open up console

2) cd to the directory in which you copied your archives

ex: cd /media/sda2/my_archives/

note: /media/sda2 is a drive in hard disk.

3) run this command:

sudo dpkg -i *.deb

which will install all packages in that directory along with their prequisites.

So if you really think about it, re-installing all your applications will only take 10 minutes rather than 10 hours because you won’t have to install applications manually any more :)

Happy Linux’ing

Rakan

Ruby vs X Videos

Ruby is a new interpreted Programming language that gained alot of popularity during the last few years. It supports OOP, multithreading (aka multi-tasking) and it is known as Programmer’s Best Friend.

A group of videos for comparing Ruby on Rails (RoR) with Java, PHP and .NET were made by a couple of funny guys IMO who really tend to talk about advantages of ruby and disadvantages of other programming languages.

In this page you will find those videos, i recommend you to have a look to see what Ruby on Rails has to offer. But dont really concentrate on the disadvantages of the other programming languages because you can always do whatever task the language is created for using different implementation methods regardless of what the programming language it’s self provides you with.

I will leave you with the videos

http://www.rubytips.org/2007/09/12/rails-envy-videos-on-ruby-on-rails/

Happy Coding

Rakan

MSDN Magazine

Check out the greate MSDN Magazine which talks about differant topics in the developer network like .NET, Windows Vista, Sharepoint, Silverlight and other topics in the field of Microsoft’s products.
http://msdn.microsoft.com/msdnmag/issues/07/08/?loc=en

Asynchronous Socket Programming

As i have previously stated. I get alot of ideas to implement while i am studying for my University exams. So this time i came up with the idea of creating a class that would enable us to use event-driven programming for sockets just like in VB6.0 Socket control but on .NET.

So i created a class in C# that you can all use that would enable you to develop asynchronous network applications.

I posted the code at ArabTeam C# forum, here is a link if you would like to have a look:
http://www.arabteam2000-forum.com/index.php?showtopic=135341

Turbo Explorer

Hello there.

Turbo Explorer is a set of new products created by CodeGear the developer tools organization owned by Borland.
This set includes Delphi win32, Delphi.NET, C++ Builder, Delphi for PHP and also a new IDE for C# development.
All of these languages use VCL which stands for Visual Component Library that we know back in the days of Borland Delphi 7. I kinda liked the new IDE’s because they are very well designed and contain alot of new features.

I encourage you to have a look at http://www.turboexplorer.com/ to download the free Turbo editions of CodeGear products.

The BEST programming language

Hello again,
I am currently a member in alot of arabic programming forums. I have noticed that the frequently asked questions (FAQs) by members are more concerned with choosing the best programming language to learn. Questions like is C++ the best programming language? or should i use Delphi or the .NET framework or even Java for thier VCL, frameworks … etc?

Well, this is not what matters!

What matters is a group of features in the language that enable you to accomplish the goal that you are going after.
I will Briefly talk about what comes up to my mind and try to be as clear as possible.

Choosing the best programming language as far as i am concered depends on the type of project you are going to be developing.
Is the application open source?
Will the application Evolve in time?
Will it be cross-platform or will it run only on windows?
What is the timeline or schedule that you have for this project?

All of these questions may affect your choice of programming language as well as some other things.
These factors are mostly solved by the programming language because when we talk about development it is not about writing code alone but several other things.

Let’s get to the point!
One of the things that affect your choice of the programming language is readability. It is a feature in the language syntax that enable the code that you write to be fully readable by human. Some languages do not have this feature, as in the code written in that language is not readable. But what if you had to work in teams or make your application open source? this answers the first question opposed. Publishing the source code for an unreadable program will not be a benefit because most developers will not be interest.

Portability, Which the language ability to run your applications on differant platforms. Here platforms is meant for Operating Systems like Widows, Linux and Mac. Languages like .NET languages, Delphi cannot run on Linux and Mac because as Microsoft and Borland(Recently moved to CodeGear) are targeting MS Windows operating system to run the applications created using these languages on. Yes there are projects like the Mono project that runs .NET applications on Linux and Kylix(Borland Delphi for Linux) but Kylix is not supported by Borland anymore. Languages like (C,C++),PHP, Ruby, Java are cross-platform meanining that applications created using these languages can run on almost any platform.

Productivity, is the most important in my opinion. Because a programming language has to make the programmer productive by providing a set of tools or IDEs or features in the language that requires less time to code using any other language. C++ for example when developing a Windows application requires about 2 pages of code to create an empty window, that is, using Win32 API while Visual Basic 6.0 provides the ability for the software developer to drag and drop components on the form. I am not saying the VB6 is better than C++ but it is a more productive language. A simple Hello world application requires 1 minute of development in VB6 while it takes about 5 Minutes in C++. A couple of more minutes wont heart but what if you were working on a large-scale project?

In addition to other things that affect you choice but i think i summerized the most important factors.
For me as a software developer i like C++,Java but i dont really use them because when developing a software targeted for Microsoft Windows i dont think Java would give me the best solution althought it’s framework is great but the execution of java applications is slow compared to C#.NET. As for C++ is quite fast that’s why operating systems are developed using C and C++ but as i mentioned before it is not productive. Thanks to Microsoft VS2005 provided a new version of C++.NET which uses the .NET framework and simple drag and drop components.

I gained the desire to learn more about .NET development because i think that a language has been built for Windows will run alot better on Windows than any other language like Java. I do use PHP for developing website but i also like ASP.NET as it’s new method in programming will affect how developers look at Web Development.

I hope this article has been of benefit to all who read it and stay tuned for more about Development and Developers ;)

Best Regards,
Rakan

Kubuntu Linux introduction

ehh, What can i say about this linux distro or any other linux distro in general?

I will tell you only one thing, which is that you won’t regret giving a try at all.

One simple reason, It has everything you might ever think of!!!

Linux is an Operating System created by a guy called linus torvalds as a simple OS project which then developed to be a competitive for the Microsoft Operating System.

Linux is not the operating system it’s self, it is the kernel that all Distributions are based on. A distribution is an operating system based on this kernel and improved to be useable by the distribution’s target platform and user group. There are hundreds if not thousands of distributions for linux created by differant companies. Some of top distributions to mention a few are: Ubuntu, Mandriva, Red Hat and SUSE.

Personally, i have tried all of these distributions and each one tends to have a certain set of advantages and disadvantages. Kubuntu was my choice for different reasons ofcourse which i will mention later in this post.

Kubuntu is an Ubuntu Linux distribution which uses the KDE desktop environment. Yes, there are other desktop environments like Gnome which Ubuntu uses. Both are quite good environments but KDE is almost closer to the Windows desktop environment and keeps you closer to windows. This is a good thing for a person who has to use both operating systems (Linux and Windows) because if using Gnome, you will tend to get confuse things while using windows and vice versa.

I recommend you to download and try this distro LIVE from the CD without having to install it on your computer. Live CD is safe and will not do anything harmless to your hard disk content as it loads the operating system from the CD and executes in your computers memory without having to install anything to your hard disk. Download mirrors can be found at www.kubuntu.org.

Screenshots? you can check em out at http://www.thecodingstudio.com/opensource/linux/screenshots/index.php?linux_distribution_sm=Kubuntu%207.10

And here is a video tour on how to install kubuntu on your computer:

http://www.linux.com/feature/117051

I will tell you what i think about them. I liked Linux because i found every single thing that i wanted in my OS here. One of the main thing was theming which is not available on Windows unless you buy the Themes application. It is freely available on Linux and built into it, hell, you can even add a picture for boot screen and splash screens.

Alot of open source applications are available for download and install including:

  • Programming IDEs
  • Chatting applications (Pidgin or Kopete for MSN, Yahoo, AIM, Jabber, ICQ)
  • Multimedia apps including MP3 players, DVD and video players
  •  Office suite
  • Utilities
  • Browsers
  • Graphics applications

All that can ofcourse be installed using apt-get command in console or by using Adept Package Manager that is available in Kubuntu.

As a conclusion, the only problem with linux is configuration. Once you are done with that you will be happy with what you got. Damn my Windows must be missing me at this moment :p

Happy Linux’ing

Rakan