The truth about my life

Thu, 28 Jun 2007

Both Eclipse Europa and GPLv3 are being released on the same day, June 29. I should have waited until tomorrow for the haircut, with luck it would look better.

Tue, 20 Mar 2007

I used to do a lot of PHP and web development (CSS, HTML, Javascript) using Vim in the past. Things change, I'm now mostly on Eclipse doing Java. Although this blog entry is not about comparing development platforms, I feel an urge to say that Eclipse+Java is much less error prone than anything I've used in the past. If you have written some code and Eclipse doesn't bug you with errors and warnings, it will most probably do what you want it to do.

But to get it what you want to do, you'll probably have to spend some time looking at some text you yourself have typed in. We developers have developed a habit of organizing our product using blocks of text and to achieve further granularity we (ab)use indented text. So we end up with text blocks indented, and to be able to easily see what's going on in some particular code; most of us prefer monospaced (fixed-with) fonts.

On GNU/Linux we have very few monospaced fonts: Bitstream Vera Sans Mono, Lucida Sans Typewriter, FreeMono, Terminus and misc-fixed to name a few. All these fonts are designed for use on a CRT screen, and they look just as good when printed. But hey, it's 2007, portable computers with LCD screens are affordable everywhere. They're more friendly to the environment, they consume much less power and space, they're lighter so we can carry them easier. I'm not sure about whether if they are more fragile or not. What I'm sure is, they need extra love in typesetting software.

The font renderer in Freetype2 can use hinting, antialiasing and subpixel rendering techniques to make a font look better, so Pango takes advantage of these. Subpixel rendering is a brilliant idea, really. While searching for information about font rendering, I stumbled upon SubLCD, an unpatented and free subpixel rendering algorith by Kim G. S. Øyhus. I think this can benefit Freetype and the rest of the desktop freedom people a bit, I wonder if I can help with a patch.

And our dear old friend, Microsoft has something slightly better, called ClearType which is based on subpixel rendering. Unfortunately our old friend has a patent of this so-called technology, we are either forced to use Windows XP/Vista or we don't get the polish. There are close choices though, see my older (Turkish but helpful) blog entry about font settings in GNOME.

The news is that, our old friend takes another step forward to increase text readability on LCD screens by spending a small fortune on designing fonts to further support ClearType™. The new Windows Vista comes with a very good set of fonts. I didn't look at Vista yet, for the record.

If you're looking for some good fonts for programming, I would recommend taking a look at Keith Devens' page and Trevor Lowing's collection. If you have a valid Vista or Microsoft Visual Studio license, I recommend Consolas, when used with ClearType it's the best monospaced fonts I've ever used.

Really, it's a pleasure to read text using Consolas because even in the smallest size you can easily distinguish between some characters that otherwise would look very similar (a-e, g-y, O-o-0, 1-l-| and so on).

I remember GNOME Foundation's agreement with Bitstream to provide a good set of default fonts (the Vera family) for the GNOME Desktop. It was a good step, and I believe we should be doing more. Currently we consider fonts as data, or even worse, consumer goods. Apparently users perception is different: modern Linux distributions don't have enough decent fonts included, compared to Vista. There are Microsoft's Core fonts for the web available, but NIH syndrome doesn't let most us see them as a friendly tool for productivity.

Thu, 11 Jan 2007

I've been seeing a lot of people whining about websites that don't work with a particular web browser (be it MSIE, Firefox, Opera, Safari, Konqueror and even elinks! -- people who only complain and make no practical suggestions). If you only keep the whining part, I was one of them. I actually learned a lot in a year and I'll share what I have learned.

Being the lead developer of several considerably large web applications (next generation and so called Web 2.0 or Ajax applications included) I keep grinning. People will complain. And that makes me sick, so I'm going to devote this entry to zealots. I hope they will like it.

First of all, I was actually wrong with Internet Explorer and Microsoft, there are excellent tools like Microsoft Script Editor that's included with Microsoft Office and Microsoft Visual Studio if you can afford the license fee. Fortunately my employer can, so we are able to use the best tools money can buy. The only problem is to get to know about them. I'd love to apologize, I'd also do it personally, for every single software developer who worked on these products. I really respect what they're doing, it's the company they're working for I'm having trouble with.

Free software zealots often try to stand behind Firefox (or rarely Konqueror) and blame Microsoft for not supporting or behaving different from W3C. You can recognize them on the spot. A screenshot that shows some site that behaves a lot more different than the developer initially intended to, and that screenshot also shows a funky browser theme and a lot of not-so-useful-for-the-casual-web-user extensions installed. They're blindly ignorant yet passionate people. They don't want to know about the rationale behind anything and only demand immediate solutions. We all know some.

Like it or not, Microsoft's more than %90 market share of web browsers is a fact that exists today. Every single Windows deployed has got one installed, and any installation of MSIE adds an icon called "Internet" on the most visible area of the computer screen: the desktop. Zealots can strive to convince another 1% next month, but that's going to take time and web developers (including me) design and implement for today, not for the future.

I have several like-it-or-not sort of facts about Microsoft that I'd love to talk about sometime, about the shiny new Vista and the .NET platform, that I think technically are wonderful achievements in the software industry to some extent but are going to have terrible impacts from several aspects. Those are going to wait. No, I'm not going to spit them out in a single blog entry, don't worry. I also would like to remind you that I'm a developer working 90% of the time on free (as in freedom) software tools and I'm in no way in any connection with Microsoft currently.

Put yourself in the developer's position. A highly talented web developer is not born with the talent, he represents a huge stack of books read and millions of keystrokes, long hours of frustration. Web is a horrible place to target: there are many server platforms, many types of clients and many types of browsers; all with different capabilities. Of course there is a common denominator that applies to everything that could be possibly made to work. But in the IT industry of 21st century, competitive products and development are key to success. In the end, what you have at hand will be forced to work, brutally.

Enough to stand behind the developer, lets get back to zealots. So they are ignorant, and they believe HTML is enough for the web and there's an agreed standard on it and everybody should use it and those who don't stick to the standard are to be doomed to death and god should bless Firefox because it's by far the best. Because the very best website they have developed is their personal website that has a couple animated GIFs (a waving flag, spongebob squarepants shaking his butt, that sort of stuff) and their perception of an interactive website is limited to that, they tend to hate words like Javascript (client side scripting actually), Java applets and ActiveX. Less zealots know about CGI and PHP yet still tend to hate client side scripts.

So the highest ranking challenges zealots face with are probably little visual issues caused by subtle differences in CSS behavior in those two browsers.

They don't know or they just ignore the fact that Microsoft has a permanent chair in W3C. They don't know how web has evolved since 1980. They don't know about browser wars. They don't know about backwards compatibility in software products. Hell, they don't know about software.

I'm most angry for free software zealots. They are spiritual users, yet they completely ignore the philosophy behind free software. It's the free and honest collaboration that makes free software a real success. A bunch of users complaining about something broken is not going to convince a hacker to fix the problem. A detailed bug report, some time spent fixing the issue or a patch -- even a simplest one, at least an attempt, a sign of working brain cells would work perfectly. No screenshots please, we'd love to see people spend some time investigating the problem and report the bug as detailed as possible. We'd love to see that done honestly: a demanding user will more likely be just ignored. Please see Simon Tatham's article on reporting bugs effectively, it's a very good start.

Personally I develop for Firefox and then port to Microsoft Internet Explorer, but it's a matter of taste. Now this would surprise zealots I guess because most of them believe that if you make it work for Firefox it's guaranteed to work on IE too -- which is wrong most of the time. Achieving browser compatibility can be costly and involves extensive testing. It's not surprising for me to see people rely on a single platform, because that costs less. Anyone would go for the cheapest that could possibly work.

In the past years developing cross-browser rich web applications (including Ajax sites) was very frustrating because it was hard to find the experience and exact list of differences between browsers. The browser almost dominating the web client market being proprietary software, it gets even more complex. What you have is a very large, hard to read and comprehend but extensive documentation source called Microsoft Developer Network; and a very large source code of Mozilla's Gecko Rendering Engine (GRE) with much less documentation that you have to compare to each other.

Fortunately someone else has done it. Mozilla Developer Site hosts a document that help developers understand those differences that cause incompatibilities on the web.

Some more people have developed toolkits like Prototype, Dojo and Mochikit that provide a stable ground where rich web applications can be built on. These toys handle web compatibility issues for you. But this stuff is very new to the industry, and it takes time for web developers to get used to these. Until then, lets hope that articles like this would make zealots complain less.

Cheers,

Sat, 22 Jul 2006

Fri, 30 Jun 2006

Small talk stinks lyrics are here.

Fri, 10 Mar 2006

Heh, sanırım bazı arkadaşlar sıklıkla "Selam!" yerine kullandığım "Boo!" sözcüğünü Pixar'ın Monsters Inc. (We scare because we care) ile ilişkilendiriyor olmalılar. Tabii tamamen ilgisiz değil ama, aslında bu girizgâh gerçek Boo'ya tatlı bir gönderme. Yakından tanıdığım ve sevdiğim insanlara her "Boo!" dediğimde aklıma yapacak bir işim daha olduğu geliyor.

İşte gerçek Boo: A wrist friendly programming language for the CLI. Murat Eren'in Ruby/Python karşılaştırmasını görünce yazmadan edemedim.

Açıkçası bendeniz kulunuz girintileme ile kod bloğu oluşturan dillerden hazzetmem. Ömrümün geri kalanında Java'dan mümkün olduğunca uzak durmamı sağlayacak miktarda Java kodu yazdıktan sonra artık eminim: PHP5, C ve C# ile yola devam edeceğim. Nasıl oldu bilmiyorum, belki zaten bir ölçüde tanıdığım bir framework ile mecburen düzgün girintilemeli dilleri bir araya getirdiğinden, Boo'ya kanım ısındı. Yakın zamanda biraz oynayacağım sanırım.

Python, Ruby ve Boo üçlüsünün hiçbirini birbiriyle kıyaslayacak kadar bilmiyorum ama Boo Primer ve Boo Manifesto oldukça çekici görünüyor:

Önce biraz Boo Primer:

Part 01 - Starting Out

Boo is an amazing language that combines the syntactic sugar of Python, the features of Ruby, and the speed and safety of C#. Like C#, Boo is a statically-typed language, which means that types are important. This adds a degree of safety that Python and other dynamically-typed languages do not currently provide. It fakes being a dynamically-typed language by inference. This makes it seem much like Python's simple and programmer-friendly syntax.

C#:

int i = 0;
MyClass m = new MyClass();

Boo:

i = 0
m = MyClass()

... ve sonra biraz Manifesto:

boo was born almost a year ago out of my frustation with existing programming language systems and my growing love for the Common Language Infrastructure and the architectural beauty of the entire .net framework.

I was frustrated mainly because I could not use the language I wanted to use (python at the time) to build the kind of systems I needed to within the technological framework my company has settled on. I had two options: I could either use a different framework (such as the python standard libraries and runtime environment) or a different programming language (C# was the logical choice for such a long time C++ programmer like myself). I tried both and was completely satisfied by none.

When I was programming in full python mode I missed some of the things I'd normally get from a more statically typed environment such as compile time error checking (good when you're refactoring a large user interface code base such as my company's) but what I missed the most was the well thought out .net architecture and its great support for unicode, globalization and web style applications.

After a not-so-successful python attempt that had put us way behind the schedule I started C# coding like hell. I programmed a lot and by that I mean no xmas or carnival or 6 hour sleep nights. Some pretty good tools came to light during those intense times, Bamboo.Prevalence being just one of them. To make a long story short we finally delivered what we had to using C# and the .net framework. That's the holywood ending. In the alternate ending I was stressed and couldn't avoid those mixed feelings about C# in the light of my previous python experience:

Nice syntax but do I really have to type in all those casts? What a clean callback and event system design but can't YOU just create that delegate for me, Mr. Compiler? Great, true multidimensional arrays! I need a list with the tasks marked done, couldn't it be a little easier? Thanks for the warning but couldn't I just type in some code and see the results, please? Write a class? What do you mean "Write a class!"?

Imagine those sentences spinning really fast inside your caffeinated ADD brain at 3 AM and you'll start getting a picture.

Now I missed the wrist-friendly python syntax and the ability to easily test my ideas with running code. And I wanted more! I wanted a language I could extend with my own constructs. I wanted a compiler system that could be taught new things, taught how to automagically generate common code for me. I should be able to do that, right? We all should. We are programmers! We're entitled to that, it's all there in the big old book of programmers, right at the end if I recall it correctly... Well, more than anything else, I needed some old-fashioned quality sleep and time to put my head straight. Being such a hard case of not-invented-here syndrome it all became clear to me: I had to build a new programming language system for the CLI, one that allowed programmers to take advantage of the wonderful .net framework features without getting in their way. One that could be used, extended and modified by developers according to their specific needs.

I had to build boo.

Bir de unutmadan, Boo denen oyuncak Mono üzerinde de çalışıyor, tıpkı Microsoft .NET Framework üzerinde çalıştığı gibi.

İyi eğlenceler,

Sun, 22 Jan 2006

Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius—and a lot of courage—to move in the opposite direction.
-- E. F. Schumacker

Sat, 21 Jan 2006

using System;
using System.Net;
using System.IO;

public class EgitimeYardim {
    public static void Main() {
        HttpWebRequest rq = (HttpWebRequest)
            WebRequest.Create("http://www.ntvmsnbc.com/modules/egitimedestek/");
        rq.Method = "GET";
        StreamReader data = new StreamReader(rq.GetResponse().GetResponseStream());
        System.Console.WriteLine(data.ReadToEnd());
        data.Close();
    }
}

Sun, 17 Jul 2005

Totally nuts because of reading way too many Chomsky and Dan Brown books in the last few weeks, I just begun reading Peter Schuh's wonderful work, Integrating Agile Development in the Real World.

Let me quote a few lines from the Agile Manifesto:

We're uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:

  • Individuals and interactions over processes and tools
  • Working software over comprehensive documentation
  • Customer collaboration over contract negotiation
  • Responding to change over following a plan

That is, while there is value in the items on the right, we value the items on the left more.

Instead of going nuts, I decided to go agile.

Her yerde söylüyorum, KDE sevmediğimi, bilmeyenler de buradan görmüş olsun. İnsanların programlama becerilerini değerlendirecek düzeyde bir otorite değilim ama fikir edinmek için çok birşey de gerekmiyor.

Barış biraz saçmalamış LGPL hakkında, üstelik bazı enterprise abilerin (!) öntanımlı masaüstü ortamı olarak GNOME tercih etmelerini bir gün kodu kapatabilme hakları olduğundan kıllanmasına bağlamış. Bir özgürlük aşığı olan Stallman buna kahkahalarla gülerdi. Barış'ın söyledikleri KDE için bile geçerli olamaz.

Barış demiş ki:

> Doruk’ un yorumu bir şeyi anlamamı sağladı
> Sanırım enterprise abiler GTK’ yı ve belki
> de GNOME’u gerektiğinde kaynak kodunu
> kapatabilecekleri için tercih ediyorlar.

Bu bilgi doğru değil, üstelik had safhada yanlış yönlendiriyor. Gtk+ kütüphanesinin ve GNOME masaüstünü oluşturan kütüphanelerin büyük kısmının lisansı LGPL. LGPL olmayanların da LGPL olmamasının bir nedeni var.

Genellikle kütüphaneler için kullanılan LGPL lisansını iki farklı açıdan değerlendirmekte yarar var:

  • Kütüphanenin kendi kaynak kodu açısından LGPL, GPL'den farksız. Bu kütüphanenin kaynak kodu kapatılamaz, kütüphanenin kodunun tamamı veya bir kısmı alınırsa LGPL lisansı koşullarında alınabilir gibi bazı kriterler var.
  • Ancak bu kütüphane içerisindeki "public" fonksiyonlar, bir başka program tarafından `link` edilerek çağrılıyorsa (statik veya dinamik link farketmiyor), LGPL lisansı, bu kütüphaneyi çağıran uygulamanın lisansına karışmıyor.

Gtk+ kullanarak kapalı kaynak kodlu ticari bir uygulama geliştirebilirsiniz. Kimseden lisans almak gerekmiyor.

Trolltech'e giydirmeden de edemeyeceğim, Qt'nin bu konudaki davranışı GPL açısından ve kanunen mükemmel bir manevra. Yazılımın özgürlüğü konusunda sorunu kesinlikle çözüyor. Ancak ticari nedenlerle uygulamasının kaynak kodunu müşterileri ile paylaşmak istemeyen ve geçiş döneminde olan şirketleri çadırın dışında bırakıyor.

Borland örneğinden gidelim. Kylix içerisinde Qt'nin 2.2 sürümü geliyor. Ama Kylix ile derlediğiniz uygulamaları 2.3 sürümü ile çalıştırmak isterseniz Trolltech'den gidip ayrıca lisans almak durumundasınız. Trolltech'den aldığınız Qt lisansı yalnızca kesin ve belirli bir Qt sürümü için geçerli, bir üst sürüm için güncelleme ücreti ödemelisiniz.

Tabii ticari modelde bu durum beni rahatsız etmiyor ama, Qt'ye kıyasla çok daha açık ve katılımcı bir gelişim sürecine sahip (Barış Metin'in QString içerisindeki Türkçe sorununu çözen yamasını hatırlayın, Qt 4.0'a bile giremedi) üstelik lisansı da LGPL gibi daha esnek olan bir kütüphane varken, kim neden Qt'yi kullansın ki? 100 metrelik koşularda kullananlar var ama Nokia gibi el üstünde dünya turu yapılacaksa doğru yol bulunuyor. Nokia demişken, Python da kullanıyorlar.

OpenOffice.org, Mozilla, RealNetworks ve Adobe doğru yolu çoktan buldu bile.

Benden habersiz Gtk+/GNOME hakkında trolling yapmayın, alırım aklınızı Sizin yüzünüzden Gezegen'e tekrar eklendim.

Hazır KDE demişken biraz daha kusacağım. Görüyorum ki KDE4'ün bile yılda bir kez dokunulan, çoğu kullanıcının ilk açtığı gibi bıraktığı ayarları arayüzde kullanıcıdan gizlemek gibi bir niyeti yok, çöpler kirli kokular yaratmaya devam edecek. Uludağ projesi sayesinde KDE masaüstünün işi bilgisayar olmayan, bilgisayarı asıl işini yapmak için araç olarak kullanan insanlar arasında nasıl başarısız olacağını kendi gözlerimizle hep birlikte göreceğimizi düşünüyorum (burada Görkem ile ilgili bir yazı burada hiç olmadı, değil mi?). Tabii bu durum bana kalırsa Uludağ projesine alternatif ve GNOME tabanlı, muhtemelen Ubuntu'dan bozma ve öntanımlı olarak Türkçe başlayan bir dağıtımın türemesine zemin hazırlayacak, güç bölünecek. Kim bilir, belki Novell Türkiye bile eğlenceye katılır. Ne de olsa pasta yeterince büyük. Ayrıca bu var.

Ek olarak, bence artık Uludağ projesinin yol değiştirmek gibi bir olanağı yok. Yatırımın önemli bölümü KDE üzerine, buraya kadar KDE ile gelip yola GNOME ile devam etmeleri akıl kârı olmaz, dolayısıyla hem tutarlılık açısından, hem de istikrar açısından kararlarını destekliyorum. Doğru olanı yapıyorlar ama bence araç yanlış. Görebildiğim kadarıyla zor yoldan, aracı düzeltmek yolundan gitmek durumundalar. Eh, Allah kolaylık versin.

Tüm bunlara karşın, her fırsatta söylediğim gibi, Uludağ projesi kapsamında sürdürülen katma değerli projeleri takdir ediyorum. Dış katkıcılar için Debian'a benzer bir yapı kurmaya çabalamalarının yanı sıra, dağıtımın iskeletini oluşturacak COMAR, PISI, YALI gibi projeler muhtemelen "biz yaptık" demek için şart.

İyi eğlenceler,

--
Enver, your favorite GNOME advocate who believes that any other desktop just stinks

Wed, 08 Jun 2005

Before:

skyblue@xyzt:~$ time java TestCase
[08.06.05 10:00:31 default5(1)] @APP SERVER::STATUS:: [LOOKING UP URI: {//10.***.**.***:12015/TheT2}]
[08.06.05 10:00:31 default5(2)] @APP SERVER::STATUS:: [CONNECTED]
[08.06.05 10:00:31 default5(3)] @APP SERVER::EVENT:: [CORE OBTAINED: 
{com.ng.***********************************[RemoteStub 
[ref: [endpoint:[***********:12016](remote),objID:[f47bf5:***********:-8000, 69***8]]]]}]
Hey
class java.lang.String
Balance: 1000
Strange core for release

real    0m2.358s
user    0m0.680s
sys     0m0.060s

After:

skyblue@xyzt:~/javaproxy$ time php4 test.php
Array
(
    [StatusCode] => 100
    [Data] => 1000,,Nick
)

real    0m0.252s
user    0m0.000s
sys     0m0.010s

I'm fairly happy with the result. No code guys, I don't think I'm allowed to publish that. My work of last night also fixed the 100% CPU usage issue which was damn obvious. Doh. Youngsters.

Tue, 26 Apr 2005

Sevgili bu metni okuyan tecrübeli PHP programcısı: lütfen bir gün yazdığın kodu okumak zorunda kalacak kardeşini düşün ve düzgün yaz.

  • Kısa PHP başlangıcı etiketleri kullanma (<? ?> değil, <?php ?> olacak).
  • PHP ve HTML kodlarını aynı dosyalarda birbirine karıştırma, düzgün bir template sistemi kullan.
  • Veri erişimi, veri işleme, arayüz oluşturma ve arayüz katmanlarını birbirinden gözle görülür biçimde ayır.

Kendini Tao'nun lanetinden koru. Daha az kafein tüket, daha fazla kalsiyum al.

About me

I'm Enver ALTIN. I'm from the other side of the river.

Calendar

June 2007
SuMoTuWeThFrSa
      1 2
3 4 5 6 7 8 9
10111213141516
17181920212223
24252627282930

Categories

/ (398)
  articles/ (1)
  books/ (8)
  coffee/ (1)
  construia/ (2)
  debian/ (1)
  events/ (13)
  factsoflife/ (15)
  general/ (9)
  gnome/ (16)
  humor/ (21)
  lkd/ (9)
  management/ (1)
  mobile/ (6)
  mono/ (4)
  music/ (8)
  personal/ (47)
  politics/ (31)
  postgresql/ (4)
  programming/ (12)
  projects/ (2)
  quotes/ (3)
  technology/ (10)
  tips/ (7)
  travel/ (2)
  work/ (13)

Archives

Links

Popular

Talk slides

Other stuff

License

Creative Commons License
This work is licensed under a Creative Commons Attribution 2.5 License.

Miscellaneous

This site is built on the wonders of Pyblosxom, supposed to be W3C XHTML 1.0 and CSS 1.0 compliant, always handcoded using Vim. The server that hosts this site is powered by Debian GNU/Linux.
.O.
..O
OOO