December 4th, 2011 | Categories: Arabesque, Localization

أخيراً أنجب عالم المصادر المفتوحة على يد الدكتور خالد حسني الخط العربي الذي طالما افتقده المستخدم العربي في واحة لينكس. فعلى الرغم من توفر نموذجين في بيئة لينكس حتى الآن للخط النسخي الطباعي الذي لا غنى عنه لكل (طابعة عربية)، وهما خط KacstBook من تطوير مدينة الملك عبد العزيز للعلوم والتقنية، وشهرزاد من معهد SIL، إلا أنهما ظلا دون طموحات رواد الطباعة والخط العربي، نظراً لافتقارهما للتراكبات الغنية التي طالما تغنت بها يد الخطاط العربي.

فيما يلي مقارنة بين الخطوط الثلاثة إلى جانب خط Traditional Arabic المعروف من مايكروسوفت فيما يتعلق بالتراكبات.

تراكبات الخط الأميري

تراكبات الخط الأميري

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

November 24th, 2011 | Categories: Arabesque, Localization

لوحة فنية هادئة، متناسقة العناصر والألوان، صادفتني في مكتب أحد العاملين في حقل التصميم الفني والإعلاني، ردت إلي – على تواضعها – شيئاً من الإحساس برونق الخط العربي البديع وسحره، والذي تبدد أو كاد مع زخم التيار التقني الجارف الذي حصد فيما حصد روح الفن البشري في كثير من مناحي الحياة.

الخط العربي…

فن خلدته أوابد الحضارة الإسلامية، وازينت به جنبات المتاحف الغربية، لينتهي به المطاف أسير قوالب تقنية صماء لا روح فيها ولا حياة، تصلبت فيها شرايينه وتيبست فيها أوصاله، فغدا هو الآخر عليلاً بدائها… صورة ميتة لا نبض فيها ولا حياة! Read more…

November 14th, 2011 | Categories: Web Applications

These ideas are outcome of my experience in developing my project RichStyle.

A Unified Label Attribute

Think of using label="" as a unified naming attribute; as an alternative to all naming tags and attribute:

<caption> , <label>, <legend>, alt="", for="", title="", summary="".

Tile text (the mouseover-text) could be displayed using a CSS rule like this:

{ title: attr(label) | attr(accesskey) | attr(label) attr(accesskey) | none }

The standard way for label presentation is to use :before and :after pseudo elements.

Command Representation

<command> should have an href="" attribute (link attribute) as an optional attribute, since a command could be simply a link.

icon="" attribute should be deprecated in favor of CSS icon attribute, which , in turn, should have an additional value called glyph(), e.g.:

command.go_up {icon: glyph(↑)}

And just like <input>, command should accept text as a type beside “command”, “checkbox”, and “radio”:

<command type="text">

Think of “search” and “zoom” fields in a toolbar.

Time Representation

Time, as a tag, should be used as a part of a context in an article or so on, the purpose here is to give the developer enough flexibility in time presentation (time-zone, time format) using CSS.

For articles’ time-stamp, and any other embedded content like
audio, video, or image, there should be two attributes: published, and
modified (last-modification date).

time,
article:time {
	time-format: dd-mm-yyyy;
	time-zone: +5;
}

A “Window” Tag

Unlike Window object used in JavaScript, such a tag might be easily maintained and customized using CSS like this:

window {
	position: fixed;
	left: 50%;
	top: 50%;
	buttons: close || maximize || minimize;
}

Standardizing jQuery

jQuery is the most popular alternative to JavaScript, it’s a powerful “meta-language” tries to circumvent the raw-javascript limitations. I think this language should be standardized.

Isolating events from the the HTML code the way CSS does regarding presentation attributes should be enough reason for W3C to adopt it.

October 3rd, 2011 | Categories: Business, RichStyle, Web Applications

This is a revision of a paper submitted on 27-06-2010 to the Arab Academy for Banking and Financial Sciences.

Abstract

According to ISO, in order to produce a high quality product, organization needs a high quality producing process, which means a well defined and organized process. Generally speaking, this is true in variant industries, but not in software industry, since production process in software industry is a creative process, not an industrial process, so that one can’t imagine that there are a list of input items from one side, that could produce a software product out of the other one, automatically, without any human factor involvement.

Software Engineering tries to convert software process from a creative process to an industrial process.

As a solution, an ISO-alternative standard emerged for software industry, called CMM, developed by Carnegie Mellon Software Engineering Institute (SEI). Later on it has developed and expanded its scope and cover other industries, it is called now CMMI.

Since 1987, when CMM emerged, CMM/CMMI has been always focusing on documentation. The reason is that organization doesn’t have an automated process, so, all it can do is to organize process using documents.

In fact, as one can see, CMM emerged before web era; the era in which database systems weren’t mature enough and used widely like nowadays, client/server architecture wasn’t common in business world. That’s why CMM/CMMI was always focusing on documents.

The objective of this paper is to build a software process using database, rather than document a software process using documents. Read more…

September 2nd, 2011 | Categories: Business

It’s been a while since I post a paper titled “Linux vs. Windows, Software Engineering Perspective“. Nowadays, when I call it back, I always say that the must important idea out of it was what I can call it an age-old conflict between user’s requirements and developer’s requirements.

I believe that the weight of this conflict in Windows world, comparing to it in Linux world, is the critical factor that lays out the bright Linux future.

Imagine that user’s requirements are represented by just a hot-air-balloon, and developer’s requirements are represented by the basket’s content. Take a look!

Linux vs. Windows

Linux vs. Windows

Believe me, penguin, sometimes, can fly better than a flag! :)

August 23rd, 2011 | Categories: Desktop Applications, RichStyle

GWrite, from my point of view, represents the best choice to implement my vision for the perfect word processor; an HTML5/CSS3-powered word processor, as a front-end for RichStyle library.

I’ve developed a custom version of TinyMCE, called rsTinyMCE, as a prototype to illustrate this vision as much as possible.

Things that I couldn’t represent in this prototype, had drawn in the following fake screenshot.

rsTinyMCE: A GWrite prototype

rsTinyMCE: A GWrite prototype

The differences, as you see, are:

  • “Active Languages” combo box: To add lang=”" attribute to any tag or string. RichStyle library will take care of the appropriate font and directionality of the selected language.
  • Views: Screen, Print, Source, Split.

“Find and Replace” fields should appear as a tool bar, not as a pop-up window, just like Firefox.

There’s a discussion on Launchpad about GWrite as an alternative word processor for elementaryOS:
https://blueprints.launchpad.net/elementaryos/+spec/abiword-alternative

August 18th, 2011 | Categories: Desktop Applications, RichStyle, Web Applications

It’s been more than ten years since I attended the first IT-related course in my life, which was an MS Windows and Office course. Since that time, I’ve been asking myself, could HTML/CSS standards offer an alternative to office-applications’ capabilities?

No doubt that HTML standards and tools at that time weren’t mature enough, they were very poor comparing to the exist office tools and applications that were, in turn, growing without disciplines or clear standards.

However, HTML5 and CSS3 nowadays offer very powerful standards, and implemented by very powerful user agents; standards and agents that merge office capabilities with multimedia capabilities arriving to an ultimate rich content experience.

Using CSS3, you are supposed to be able to display the same document in different “views” for different media, with no need to reproduce it for each media. A view for web pages, another for printing media (papers), a third one for projector, and so on.

My loyal to CSS led me to develop what I can call it a “Standard Implementation of the Standard Specifications”; a CSS library that represents, in my opinion at least, the best practice in its field.

I don’t claim that it’s a ready-to-use library. Instead, I try to keep it grow along with specifications, without tricks or twisted solutions, but with recommendations; recommendations that help specifications grow in turn. It aims to put HTML5/CSS3 standards in action, and send back feedback and recommendations. See: http://richstyle.org/todo.php.

On the other hand, I have a theory says that; for simplicity’s sake; user can outsource the document’s format-instructions to the entire-system’s theme, so that all documents around can comply the system’s theme, and have the same spirit of the whole system. However, there could be an option in the user-agent’s interface that gives user a chance to display the document the way the original author has wrote it. Technically, it’s a chance to activate the CSS instructions included in that document. This means that CSS instructions included in a document should be disabled by default. It seems to me that the CSS-powered GNOME 3 advances this theory.

Imagine that everything in your desktop complies with this central CSS file:

  • Web pages
  • Yelp pages
  • Documents
  • Emails
  • DocBooks
  • Spreadsheets
  • UML diagrams
  • GTK widgets
  • SVG icons

Everything is powered by one theme.

August 17th, 2011 | Categories: RichStyle, Web Applications

Thanks to Nicolas Gallagher for his great work, Pure CSS GUI Icons, you can draw icons on your web pages using only CSS rules stored in a single CSS file, with no external images at all!

Pure CSS GUI icons

Pure CSS GUI icons

This means two main advantages:

  1. Significant reduction in HTTP requests. Your web page will be faster.
  2. High-flexibility for modification. The icon colors – and the other attributes – can be simply modified using a one single CSS file.

I just have several notes:

  • I think this set of icons misses a very important one: A print icon.
  • Bug: Letters used in those icons are not zoom-able along with icons themselves.
  • I wish if the class names used for these icons comply with the “Icon Naming Specifications” according to freedosktop.org.
  • I believe that such a unique solution should be extended and cover the whole operating-system icons. Such icons could be used for the GNOME panel. Not to mention that GNOME3 adopts CSS3 for the desktop themes.
Light-on-dark colors

Light-on-dark colors

Finally, this work really deserves to be published as a Debian/RPM package.

July 31st, 2011 | Categories: Arabesque, Localization, RichStyle

أضع بين يدي القارئ العربي الكريم طائفة من تراخيص البرمجيات الحرة الأكثر أهمية وانتشاراً، مترجمة إلى العربية.

تشمل هذه التراخيص كلاً من:

July 25th, 2011 | Categories: Desktop Applications, RichStyle

When I was working on the last version of RichStyle project, a sub-project emerged. It was the HTML5/CSS3 Quick References. The main challenge at that time was choosing the right spreadsheet application that helps me generate the best PDF file out of it. At the same time, my loyal to CSS has led me to another challenge; I had to use Prince XML along with RichStyle library to generate the desired PDF file.

Back to the spreadsheet application issue, I decided to use Gnumeric rather than OpenOffice Calc. It’s my absolute commitment to GNOME.

So, the whole process had to pass through three conversion processes, and four file formats!

Gnumeric to PDF

Gnumeric to PDF

In order to simplify this process, Gnumeric should testify more commitment to HTML standards as much as possible.

  • TH cells: There should be a kind of cells called “title cell”, represented by TH tag.
  • Improved links: Internal links should use ID attribute as the target’s address, exactly the way XHTML 1.1 does.
  • Support CLASS attribute for cells, rows, and columns.
  • Cell padding: Using CSS, user should be able to adjust a cell’s padding from the “Format cells” dialog.
  • TBody for grouping.

Once user wants to export to HTML, Gnumeric should consider the following:

  • Metadata: Metadata of the Gnumeric file should be resented by and exported to HTML metadata.
  • Export printing area only.
  • Except hidden sheets.

With the following options:

  • Represent each sheet as: caption/h1/h2/h3/h4.
  • Formulas: Dynamic/Static.
  • Print a formula report: i.e. A5 = A1 * 2.

Finally, regardless HTML, I wish I could see the following:

  • Rotate: A command under “Tool” menu to convert rows to columns and vice versa.
  • Using “unit” instead of “currency”: i.e. I can use meter, pound, or any other unit; not just currency.
  • An ability to distinguish formula cells (kind of conditional format).

Favicon Plugin made by Alesis