Şemyaza

 

sayılamayan saatlerin
düşmüş meleklerle
gecelerde
ıslak ve sıcak
kurbanların nerde?

bilinmeyeni açık ettiğin
açıktakileri lanetlediğin
karanlıkta nurlanan
kadim ayinin
ne zaman?

yükseltecek olsan 
yakar seni
sözlerin
ışık sanıp izlediğin
şeytanlarına 
verdiğin.


How I became a computer engineer

 

Ege University Computer Engineering Department, July 2021

I enrolled in Ege University in 1995 and graduated from Computer Engineering Department in 2000 with bachelor's degree. During that period, my dear professors worked really hard to create a computer engineer from me :) 

I must salute Prof. Erden Başar, Prof. Mehmet Özel Ergen, Prof. Sinan Yılmaz (R.I.P.), Prof. Ahmet Kaşlı, Prof. Fikret İkiz, Prof. Halil Şengonca, Prof. Levent Toker, Prof. Oğuz Dikenelli, Prof. Yasemin Topaloğlu, Prof. Aylin Kantarcı, Prof. Mustafa Türksever, Prof. Ata Önal, Prof Şaban Eren, Prof. Serdar Korukoğlu; and of course the teaching assistants of that time: Osman Ünalır, Güzin Şeker, Cenk Erdur, Selçuk Kaptan, Muhammet Cinsdikici, Nur Zincir, Aziz Can Yücetürk, Aybars Uğur, Ahmet Koltuksuz, Özgür Gümüş and Tuğkan Tuğlular.

What a crew!

Thank you, thank all of you a thousand times!

Today's story is about Tuğkan Tuğlular. The course was Microcomputers. Fifth semestre. We were following the great textbook "Structured Computer Organization" by Andrew Tanenbaum. Thanks to Tuğkan's enthusiasm, every assignment of the course was forcing us to use x8086 Assembly programming language. To be honest, Tuğkan was always giving us the freedom of using any applicable programming language but somehow all of us were using Assembly :) Here is the famous assignment:


The task was clear. Connect 2 computers through serial port (nowadays there are no serial ports on computers) and let those computers simultanously send files, chat messages, mouse pointer locations to each other. During all those operations, current system state must be reflected on the screen online. Of course, it was said that "The program can be written in any programming language..." as the last sentence of the assignment :))

During my undergraduate education, I have submitted many computer programs that were designed to solve many different problems. Those were developed by using Pascal, Quick Basic, C, Parallel C, Visual Basic, Delphi, PL/1, Java, even GPSS and of course, Assembly. However, I was sensing that the assignment above was a bit harder than others. First of all, you must be programming the Intel 8251 chip in a perfect way to meet the criteria of simultaneous communication. Keeping the integrity of the transferred data was another challenge: Which bit is beloging to mouse position data, which one is carrying the information of the file transfer or chat data? Data packages must be encapsulated well. Data loss must be avoided so you need a robust communication protocol... 

Actually, in the Microcomputers course, it was an obligation for students to understand what is going on under the many layers of the abstractions of microcomputer systems. What bare metal is capable of. How it is possible to come up with unversal solutions given a very limited hardware capacity. By assigning such difficult term projects, Tuğkan was knowing that the classroom was developing a sort of computational mastery. His project management philosophy was also astonishing :) He was saying "Guys, if I give you 1 month, you'll deliver after 30 days; if I give you 1 week, you will deliver on 7th day; if I say 3 days, you will deliver on the 3rd day. So why should I wait?". It was valid :)) And it still is valid.

Anyways, challenge was accepted in 1998 and we built the project team of three: I, Yılmaz and Volkan. In the old days, only available microcomputers to us were in the department building. In the dormitories or homes there were no computers. Therefore, we had to design the software on paper firstly. Then, we should have reserved a computer in the microcomputers lab of the department, and complete coding/compiling etc. there, in that given time slot. 

We shared the tasks in a way that I and Yılmaz were to develop the communication module and Volkan was going to develop the graphical user interface. In the dormitory, we designed the Assembly program on paper. A sample piece of note is below:


After the designs had been completed, we got to the lab and coded the program by following our notes on papers. Then, the miracle happened. 
We compiled the code. 
No errors. 
Okay. 
We linked the program. 
No anomalies. 
We started the executable file. It just worked well! 

For a third year computer engineering student, in such a challenging project, and the given complexities of Assembly programming language, it was just a miracle. I am still remembering my feelings of satisfaction and how we celebrated the moment. A couple of pages of the program listing is as follows:



At the end, it was just another assignment. But the meaning of this assignment to me is tremendous. The time we ran this program in our first attempt with no errors was the time I evolved into a computer engineer.

After that moment, I have developed millions of lines of code in many years. Even today, I know that some of my programs are running on some servers, in a confident way. It just gives me a warm feeling. I loved computer engineering. I am still in love with my profession and all the underlying science. In the last years of my active software development, I was setting such challenges to myself: "Tester will never find a single bug after I deliver my program" or "The developer who will be examining my program after me will adore me and my level of engineering" :) Fun times...

I am a very lucky guy because even today, I am so privileged to be a colleague of Yılmaz and Volkan in Yapı Kredi. And again, thank you Tuğkan for transforming me from a student into a professional.

Respect!

Forget about Failing!


Agile mindset and culture have been promoted for years. Organizations are getting slimmer, hierachies are vanishing, the world is trying to do everything through scrum teams. People are thinking on post-its, working with post-its. Humanity is doing digital transformation with post-its. Perfect!

Coaches, facilitators, mentors, consultants and all the other members of the familia are cursing the "old school" doctrines, burrying the wicked waterfall software development method, so on and on...

And of course the notion of failing! 

"Fail fast, fail often" motto, told by literally every one to every one. Written everywhere. People like the shocking effect of the slogan which is a linguistic poison in my idea. 

The word "fail" is being repeated so often and pervasively that it starts to disturb the mindsets of the young professionals. I am against the tendency of promoting failure culture. And never praise it.

Of course, it is easily understandable that the people who are advising to fail for success are aiming to emphasize the importance of learning new things about the universe. This is not a new notion. It is called "trial and error", one of the fundemantal methods of learning and problem solving. The issue here is that, it is not the perfect way of problem solving. Actually, it costs more when compared with the alternative ways. It is possible to learn things without failing. 

Moreover, it is not proper to start projects with the "failure in your mind". Nowadays, the narrative came to a point that, as if it is impossible to be successful without failing. It is not correct. It is shallow. It is a reflection of a way of popularism which praises mediocrity. Saying "you can be an average person, don't worry, there is a method to save you: if you fail enough, you'll be victorious at the end". It is not true. No ultimate methods can save you. Extraordinary people and extra ordinary events shaped the history and marked the characteristics of humanity. Repeatable methods merely work well if you want to scale up with average masses. Therefore, if you are to launch creative initiatives proposing real added-value, failure driven iterations are not the ideal paths to follow.

Let's look at problem solving.

When you face a problem in your way, in most of the times, you use heuristics to find a solution. It's a much more faster and efficient method than trial and error is. Or you may apply algorithmic approaches for solving the problem. Or you may follow trial and error. However, if you don't have any hypotheses before starting the trial and error process, you end up with no information gain. So the main goal in problem solving is to gain new information to apply to the problem and it is obvious that there are many ways of information gaining, or learning, methods in the world. You don't have to fail to learn. In most of the times, success is not a function of your knowledge and competence. Environmental factors, let's call them context or ecosystem dynamics, are playing a crucial role. If you analyse the journeys of a set of startups, you can see that successful and unseccessful ones are doing exactly the same things. I wonder how deterministic failure prophets would explain this situation. Methodologically, there is no lock-in to failure driven prodecures, there are better alternatives of reaching success.

Take the motivational factors. 

You need to feel the fire and the desire for success while you are starting things up. Failure is not a catalyst in the process. You must be brave enough to take the risks and move forward after facing blocking factors in your route. The magical factor here is not how you are good at failing but how you are resilient and solid after facing obstacles. It is you, not the method. The better you are at applying the methods, the more chance you have to be successful. Virtuosity matters. And it is about practice and training. No matter what your profession is, you must separate the training session and the performance session. Train like hell. Get down, get up, read, sweat, bleed, meet people, ask questions, expand yourself and get perfectly ready to the performance. During the performance, which is your professional daily life, never ever fail. Get the job done! Get the job done every time! Get the job done perfectly! If you face unexpected situations, just improvise like Tango performers do. No one superimposes any coreography to Tango performers, they are the experts of fundemantal steps and patterns. And they improvise perfectly on the stage. They simply handle things. For being able to improvise during the performence, you had to do your training well enough. Otherwise, you will become a failure machine. And believe me, it will not make you victorious in the end.

As I am getting to the conclusion, I want to remind that implying scientific methods to business is valuable if you know the essence of the science. It is well known that science and rationalism are being used as management tools by the authorities. A government may state that "scientific norm of the human psyche is defined as XXX, if you are not in the area of XXX you must take that pill, or the authority may send you to hospital as an obligatory measure". There are many examplars of that management style. We must never forget that science is humble in nature. Science never asserts that it will solve everything about the universe or it will bring the ultimate salvation. Science always tries to minimise the grey area, finds some variables for explaining some situations under well defined conditions. In most of the times, science gets back to you with greater but new questions, new unknowns. It is a never ending spiral. Therefore, proposing some formulae as an ultimate solution to a problem in business is almost always shallow and it is a sort of fashion. People may refer to scientific research outcomes for fortifying their formulae. It changes nothing. Be a free, intellectually sufficient, brave, hard working and creative person. 

On the stage, never ever fail!    

An Algorithm for Composing Articles on AI

 

A typical AI Image

1. Pick a big real life problem which has not been solved yet
2. Write the title of the article by following the grammar below
    Can AI solve [Problem_Name]?
3. Introduce the concept of AI and its brief history
4. Introduce the nature of the problem you selected in bullet 1
5. Present available data
6. Present possible AI methods to apply for solution
7. Stress on the shortcomings and barriers that prevent you devising the AI methods presented in bullet 6
8. Stress on the future possibilities and hopes
9. Pick an image combining binary numbers, brain, electronic circuits, robot head or hand and human head or hand (e.g. the image above) and embed the image in the article
10. Publish