Onur Avsar

Onur Avsar's Personal Homepage

Safari could not get internet

I am a quite stock app lover. Because I am using OSX, I try to use Safari for a long time. Moreover, I try to use it after every update. What I think about it is that Safari is a great application but not a great web browser. It has very cool features, but lack of some important features show that team behind Safari could not get internet as a platform.

Show url of web pages I go
I could not find a way to see the href of an anchor when hover it. This is really frustrating. Web pages are not applications, I need to know where I will go when I click or tap a link.

Make tabs more accessible
Safari seems to be want that using windows instead of tabs from me. When comparing with Firefox and Chrome, its button for new tab is less accessible (It is at right top corner of browser which is not a place mouse pointer stay close generally). Moreover, if app is in full screen mode and only one tab is open, new tab button is not seen in the screen.

Context menu always shows ‘open link in new window’ option before ‘open link in new tab’ option. It tells a lot.

Their marketplace for extensions and control options they give user about extensions stay primitive when comparing with Firefox and Chrome.

They provide a way to browse internet inside of their platform. But they do not see and respect internet as a independent platform I believe. Internet is not a little part of Apple’s platform we can only look with their Safari app. They need to understand that to make Safari a great browser, so I can use one more stock app from Apple.

Codes are machines, not poems!

There is a common idea which sees programming as a branch of art. I am absolutely disagree with it. Programming is engineering and we should treat it in this way.

There is some similarities between engineering and art which, I believe, create this confusion. You might heard that there are lots of way to reach same purpose in programming just like art. Of course, that is true. However, it is also true for engineering. Moreover, engineers try to choose one the most effective way between lots of them to accomplish their purpose not the beautiful one which is more similar to what we programmers try to do. Another similarity between engineering and art is trying take others admire with output of work. We programmers want to see output of our work takes admire of people. I also believe that output of our works should be admirable. Nevertheless, that is not mean our works are some pieces of art. All these make art and engineering closer and programming stay with engineering still.

I always see programmers dare to say programming is art but I just never see yet one of them dare to present themselves as software artist. That would be very amusing probably. It just not fit. We are software engineers or developers, most of it we are computer scientists.

What is all rage about that?

You can ask that while programming is not exactly a branch of art, what is wrong with seeing it so. Seeing codes as a piece of art is extremely time-consuming. A poet can consume hours or days for finding one right word. But we cannot do that for a variable’s name. We should just find a short and descriptive name as soon as possible. If it is not descriptive enough, we should put a comment on it.

Codes just have to work. Qualified codes have to be maintainable and extendable also. They do not have to be ‘beautiful’.

Real Problem about Android

Android and iOSNo, it is not fragmentation. Developing same application for different kind of devices which have different screen sizes and all other hardware based differences is not easy. But it is easier than developing for different operating systems with different programming languages.

Of course developing for a fragmented operating system is not preferred, fortunately Android SDK came with really good tools and techniques which makes application development not only possible also easier than expected. Moreover, this fragmentation came with some bonuses such as chance of reaching to more people. Undoubtedly, if Android ecosystem would be more strict like iOS, Android could not reach to such large penetrations. Therefore, smartphone sector would have more major operating systems instead of two. And that would make mobile application development strictly harder.

Fragmentation of Android ecosystem is not something we should complain about it, it is something we should be thankful. Real problem about Android is its cheapness. Android is cheap. When comparing with iOS platform Android has no premium style. Moreover this problem starts from application development. Android absolutely is a nice operating system and some Android devices have really high-level hardware but when topic comes to third most important part of this ecosystem which is native applications, Android absolutely is not shine against iOS. Android apps have slightly lower quality than iOS. And I believe biggest responsibility on this problem is belong to Android’s development environment provided by Google. While Apple provides XCode and Interface Builder, Google provides Eclipse with ADT Plugin. Of course, Eclipse is a great IDE however when comparing it with XCode, it looks a little cheap. I believe that iOS’s nicely designed development environment makes app developers more sensitive about their own applications’ design. Therefore, this situation makes Android apps look poorly designed against iOS apps.


Understanding Lower Levels of Computers

Gloomy ForestI actually hate low-level stuffs. Because, courses I take at university are highly about electronics circuits and computer hardware. Highest level thing we are learning at university is C++. I always interested in application development. Therefore, while I need to learn PHP, Python, Java etc., I was learning diodes, transistors etc. And believe me they are boring. But my thoughts start to change after I met with computer engineers outside of my university.

Knowing high-level languages is not mean understanding them. You have to know low-level languages to understanding high-level ones. I do not advice to take electronics courses, of course. However you have to know at least one low-level language and writing code with it frequently. Otherwise, you feel very disturbed with every advancement at the world of high level languages. Moreover, you cannot call yourself as a computer engineer or computer scientist. You would be only ‘PHP Developer’ or put any other language’s name instead of PHP.

Where to start?

Okay, let us say that. You are studying computer engineering or sciences and your university do not teach low-level stuffs; go and learn C, never mind stupid courses. Learn C, pointers and how to manage memory. Discover computers’ real world without Garbage Collectors. Do not imprison yourself into virtual machines.

Go Further

Okay, you know C. You use C so much. Go further and learn some Assembly. It won’t damage you. You will see benefits in long-term.

So, these are my advises. However I am still a student, you do not have to trust me. Before starting your journey in low-level, go and listen a real guru; Back to Basics by Joel Spolsky

Read Later

I write code for 2 years, most of these time is spent for learning. I also developed different programs, generally for fun. When starting my education as a computer engineer, I have one purpose which is earning knowledge of application development for all cool platforms and maybe knowledge of developing platforms. At these times I feel that I reach this aim. But I also feel this is not enough satisfaction for me, I want to learn more things about programming, have deeper knowledge over what I do. So, I start to my search to finding beneficial resources to reach my new aim as I did 2 years ago. Finding right resources is the most important part of self-educative processes undoubtedly. It can reduce time which will be spent dramatically. So, I start to my search eagerly moreover I define 7 different books. Of course, sharing results is a good idea :)

Introduction to Algorithms

Introduction to Algorithms

Introduction to Algorithms

Algorithms is one of the most important topics in computer sciences. Erik Demaine said that;

If you want to be a world-class programmer, you can program every day for ten years, or you can program every day for two years and take an algorithms class.

This book probably is the best choice for learning algorithms. And it also is the most widely used course book for algorithms courses at universities.

Design Patterns

Design Patterns

Design Patterns

Knowledge on Design Patterns has fatal importance for object oriented programming. Gamma’s book will be my preference on this topic. The book use C++ language for its examples, however it will be beneficial whatever language reader use because of its topic.

Code Complete

Code Complete

Code Complete

Code Complete is a book focused to code writing techniques. It is highly recommended and famous book. At this point, Code Complete is seen to me only book which has not fatal importance in my list. However reviews about this book make me curious about it. I’m sure that I found interesting things which I don’t wait.

The Mythical Man-Month

The Mythical Man-Month

The Mythical Man-Month

This book differentiates from other books in this list with its topic. The Mythical Man-Month contains 19 essays on software engineering and project management. I’m sure reading this book will be funny between all other technical ones.

The C Programming Language

The C Programming Language

The C Programming Language

C is not programming language which I use everyday. Nevertheless, I am proud of knowing C. I believe that nobody can call themselves as computer engineer without C knowledge. Reasons of it might be another blog post. However I ashamed to say that I didn’t read holy book of C; The C Programming Language or sometimes referred to as K&R which is initials of its authors Brian Kernighan and Dennis Ritchie. This book also has been very influential on technical writing.

The C++ Programming Language

The C++ Programming Language

The C++ Programming Language

Actually, my thoughts on this book are very similar to my thoughts on The C Programming Language. Very important language and a book written by author of the language put this book to my list.

Effective Java

Effective Java

Effective Java

As you can see, last three books are dedicated to certain programming languages. However, this book is not in the list primarily because of its language Java. I believe that Effective Java will be very educative on high-level, pure object-oriented languages.

PS: I don’t read any of these books yet, so I cannot give you any guarantee about them but I am planning to make a feuilleton about these books as soon as I read them.

Still Alive & Want You Gone

These might be considered as spoiler, but if you still have not played Portal games, you deserved to be punished.

Teknik Üniversite

Teknik Üniversite means technical university in Turkish. Actually, these two words quite universal. Both of them came from French to Turkish and probably they are understood same anywhere in the world. However, Teknik Üniversite has one more meaning in Turkey; it is unofficial name of Istanbul Technical University.
While Istanbul Technical University (ITU) is called as the technical university in Turkey, it is not only engineering school of Turkey, even it is not the most popular school which gives technical education. This might seems weird if you do not been in an ITU campus. However, If you had a chance to be in one of the campuses of Teknik Üniversite, you probably saw intensive and depth engineering culture in the campus. There is a respect to innovating and creating instead of governing. Teknik Üniversite looks at social sciences as a hobby and always overlooks politics, what it should be exactly.
Calling as the technical university is a great honor undoubtedly, but ITU and engineers of it deserve this honor with their great stand against sciences.

My Browser

I never claim Mozilla Firefox is the most innovative, most secure or fastest browser, I just say it is my browser.

Thank You Guys

When I decided to make a blog six months ago, I had a serious problem. I had to achieve building a server for publishing my blog. Beside hardware, I needed an operating system, http server and database. In normal conditions, I should have two choices; writing them myself or buying them. Anybody which know something about computer softwares can see that first choice is not exist actually. Therefore, only choice is buying them if you have enough money (approximately $2000 [based on Microsoft's products]). Thus, situation was not so shiny for me. I cannot afford this investment. Neither can many blogger we read with keenness. At this point an incredible choice appears; free and open source softwares.

I want to share my opinions about these softwares shortly and thank to all people create these softwares.


Linux is a free and open source operating system kernel as you probably know. It was a perfect choice for me. It is secure, fast and free. A Linux based operating system is perfect for a server. But what surprising is they are perfect for a PC too. Give one of them a try if you did not use them so far, it might convince you for uninstalling your Windows (I personally recommend Ubuntu or Pardus).


I believe that Apache is the most important software in free and open source softwares’ world. Some of you may argue it is Linux. But without Apache, Linux could not find an usage area at first point and could not come these days. For people do not know, Apache is the best http server you can find even with your money.

When talking about Apache and FOSS, I should open parentheses for Apache Software Foundation. ASF is organization behind Apache server and many other successful projects. In my opinion, it is one of the best places for a FOSS programmer (I can say same thing for Mozilla too).


MySQL is our database management system. MySQL undoubtedly changes history of internet. It was first easy to use open source relational database management system. If I say it is used by almost every website we use daily (including Wikipedia, Yahoo, Facebook, Twitter etc.), you can see its impact on internet. However I believe that it lost its spirit because of acquisition by Sun Microsystems 2008 (actually because of acquisition of Sun by Oracle 2010). In my opinion, it just is a price-free product anymore.


PHP is programming language of internet. Every programmer may give an alternative language and computer scientists may hate it. But PHP absolutely is a language which contains essence of internet.

There is more!

With these four tools I could build my own blog. But after all open source experience I believed that I could find code I need. And as you guess I met WordPress perfect tool for blogging. WordPress is very talented and easy to use. Because of WordPress, anybody can blog without any specific knowledge.

Beside all these tools which change internet and naturally world, there is one more thing I want to talk about. It is my website/blog’s theme Manifest developed by Jim Barraud. It is a gorgeous and free theme and make my blog more special.

For developers by developers

As you can see I do not use many individuals’ name. Of course there is very important founders and leaders behind these projects such as Richard Stallman, Linus Torvalds, Rasmus Lerdorf, Matt Mullenweg but mainly these projects take their power from worldwide volunteer developers and hackers.

These projects change developers’ life and implicitly all humanity. So, Thank all of you for making a better world in your own ways.

The Meaning of Life

You can see people which claim that they cannot find the meaning of life on Google. Actually this is not lack of Google. I believe they don’t search carefully. I found it and now I share it with all you earthians for free. If you too want to learn the meaning of life, just click here.

No, it is not a joke. It might not be right answer, but absolutely logical one because of we live in a Newtonian universe.

Subscribe via Glass