First 250 days of software dev - Part 8

13 min read

Day 71

When I think about today, I don't understand how I couldn't do the given question in so much time. I mean, it was sad to think that I couldn't do it in an extremely long time. But even though there was a logic error in the code I wrote (which I corrected later), I think it was very simple and appropriate. But I don't know if it is enough to create the desired structure (such as putting an apostrophe in string expressions). I will have to make an edit for it. Or I will change it from scratch. I will try tomorrow if it can be applied to the current code. Today was good. I haven't looked at Javascript for a long time and today I realized that I missed a language (Js). I remembered the first time we saw forEach. I was memorizing it. I said to myself "map is easier, I'll never be able to do this forEach". Time passed. Of course, I'm still not good at it, but when I think about how I was then, I said "where did I go" in this (relative) short period of time. I felt like I would get into subjective issues if I went on too long. So let's end the day with a quote allegedly belonging to Aristotle, but in fact only for Aristotelian philosophy, which an author mentioned in his own book:
"We are what we do over and over again. So perfection is not an act, but a habit."

Day 72

I really realized that even if you can't reach the desired result after hours of effort, when you take a break and look at it again, at least the stuck points can be corrected. I still don't understand why this happens. Maybe it's something like a placebo effect because I believe in it.

Back to today. I couldn't finish the task on the first day, but the next day I created the desired result in both Javascript and PHP. Of course, it wasn't the best performing code, it wasn't the most logic error-free code, but at least the main ideas (recursive, algorithm implementation, "elegant" use of switch-case and readability) were the things I tried to do myself after getting them from you. So I am personally satisfied. Today afternoon was all about thinking "how can I turn the string query into meaningful nodes in an array" and then putting it into practice. I made a mistake at the beginning. I manipulated the incoming data as you said, of course it was wrong. Then I thought how I could do it without manipulating it. If I couldn't manipulate it manually, the code I wrote should have done it. I thought that if I split the string expression again and make it more meaningful, it would be easier to edit the characters. But it was not easy to get out of it that way. So I took each character individually and processed it accordingly. At first I didn't even try because I thought it would take too long. But it wasn't that laborious.

Now I've come to a certain point (God, I hope it's the right point), even if I didn't achieve the desired result. Tomorrow I will pick up where I left off.

Even though I sometimes get stressed when I face such questions and problems, I generally enjoy it. Even if I can't do it, I want to do it even more.

I realized something recently: For years I had tried to fight stress individually. Because stress also causes health problems and I really wanted him to be away from me. Then I realized that for years, while I was struggling with stress, he would never leave me. I said if it won't go away, it won't go away, then let it stay with me and let's live in peace. It still spoils me, but I think this perspective is better than fighting with it. Just accepting the stress. Yes, it was like the ordinary motivational speeches, the rehabilitation group speech in American movies (you know, the one with the lines "Yes, friends, Martin Eden hasn't drunk alcohol for 3 months, let's all applaud him together"). Let's not make it too long.

I want to share my final point. It's okay if you don't even open it and look at it because it's not complete. I just wanted to share it.

Day 73

I felt that I was very close to the result of the task I was looking at this morning, but I almost couldn't move a pen after the structure I had built started to get confused and I was doing a lot of things. Then I did the task you gave me, and for the next one I thought about what I could do and built a logic. I will work on it tomorrow morning.

We have a sentence. Just as we make sense of it when we read it, we need to do the same for the machine. Our goal was to make the incoming data meaningful. In the last example ("mer(h)aba" ("a" asd) my "sss" asdasd'), how could I express that the parenthesis inside the quotation mark is part of the quotation mark and has no separate meaning? And of course the same applies to similar situations in other parts. Then the following can be done: Go through each element of the data one by one. If there is a nestedness (in the keywords used to construct the meaning), the problem is solved if I save the position (index) of the key element in the inner part somewhere and do not use it later to construct the meaningful structure. In the case of this nesting, all I need to see is not to see the inner element as the key element for that example. But if I am going to create a sub-node in a nested structure, I will of course need to take that into account as well. In short, we can produce different results depending on the problem we are facing. I think we need to make the most basic logical deductions to be able to use the language of the machine. And creating or trying to create a structure in this way pushes you into philosophy and mathematics. 4 months ago, I probably wouldn't have believed it. But I thought it was about subjects like artificial intelligence, which has "words that seem too clever." However, even making a string entity meaningful is a very "clever" subject.

Day 74

Today I could have actually worked faster and looked at query building again, or at least after work, but I didn't because I tried to see what I could do differently on top of today's task. I thought about how to write more "clean code" and tried some things, but it still wasn't very clean. When I'm writing, I just go with the way I'm most comfortable writing, but then I can make changes to it. I'll try to think about that when I write and try to write as much as I can. In some cases I think I can get to the root of the problem, but not everywhere. Some overlooked points can cause different problems that I have to fix later. But the more I write and the more I work on it, the more it will fit. I did something this week. I really got a little bit closer to the desired results or a little bit closer to the roots of the problems. If not, I felt a little bit, but there were always gaps. I understand your saying "study algorithms". I wanted to look at resources like "competitive programming" that are widely available on the internet in my free time, but I spent time on other things instead. Now I realize that I should look as much as I can. If the book comes, I have set myself a goal. I will try every algorithm in that book in PHP and Javascript. I will put useful and "clean" applications in the middle. Of course, I will try this in my free time outside of work. I think it will take me a little bit of time to understand it step by step, but I guess there is no harm in trying. That's all for today.

Day 75

Yesterday the main gaps from the previous mission were completed. There were still some gaps, but I haven't solved them yet, but I think I'm making progress. I hadn't thought about something very different after a while. So I did a little bit of research on different topics, and then I went back and looked at it again, but it's back to where it was. I will continue to look again tomorrow, unless I am given a different task.

Day 76

I had a bit of a mixed bag today. In the morning I revisited task 2, made some minor corrections, and then completed the task you gave me. At first it was hardcoded as you said, and after I corrected it, it was close to the logic you told us, but there was a difference. Afterwards, while I was doing some research on what Selenium is, I came across a stack overflow page about what a gargabe collector is from the links I used to look at. I did a little bit of research on it and took notes. I can say that I understood what it does in the most superficial way. Then I went back to the PDF you told us to look at in our free time and read it. After 8pm I went back to task 2 and tried to fix my problems with opening parentheses. Unfortunately, unfortunately, I still have problems with it. I think I've done it, then I test it in a few different ways and I get unwanted results again. I always feel that I'm very close to the solution but I can't reach it. Maybe I need to establish cause and effect relationships better and examine the functioning of the program better rather than trusting my feelings.

I think today was the most chaotic day of my progress. Interestingly, I didn't feel very confused. And I know one thing for sure: I really enjoy programming something (or trying to program something). I hope it will always be like this.

I want to close the day with one of the words I always try to preach to myself:
"Any fool can write code that a computer can understand. Good programmers write code that humans can understand."

Day 77

Today I worked on task 2 again, fixing the basic bugs I found earlier, which resulted in fewer errors, but may have lowered the quality of the code a bit. After a while I focused more on the solution rather than dealing with it. I can make improvements again afterwards. As far as I tested, there is no problem in opening and closing parentheses except the parenthesis of the mysql function. Afterwards, when I felt that I was having a hard time developing new things and my productivity was decreasing, I redirected my attention to the PDF you told us to read in our free time. There was an example of how to find the greatest common divisor. A solution was presented centuries ago with the algorithm developed by Euclid. I searched for similar mathematical examples on the internet and became even more fascinated. I finished the introductory parts where the most basic information about programming and programming languages were given. Now the book switched to C language and I stayed there. I will continue to study and learn the topics in that PDF in my spare time.

Day 78

Today I read most of that PDF, I tried to understand it. It was explaining how to program in C, the basics of programming in general. I looked at many of the examples, but I chose not to look at the ones that seemed like a waste of time. I was actually a bit surprised when I was looking at C because we have already learned PHP and Javascript in the parts we have seen so far. The reason was this: for example, memory management is delegated to the user using pointers. We had never seen anything like this in PHP and Javascript, or I was surprised to see the enumeration part. Although there are ways to do this in PHP and Javascript, in C it was more detailed and emphasized. And object-class relationships were the most emphasized topics until now. However, even though polymorphism and inheritance can be applied in C (according to what I read in stack overflow), since it is a block structured language (I don't fully understand the meaning of this yet), the implementation of OOP seemed a bit difficult. I still have some question marks in my mind (maybe because I'm ignorant of the subject): for example, I read that languages like Python and Java work by taking the positive aspects of both compilation and interpretation. If such a thing is possible, I'm a bit surprised why there are languages that only work with compilation or interpretation. But instead of simply asking google for the answer, I wanted to keep it as a question mark and think about it.

When I heard the word "axios" in your speeches today, I immediately thought of the little server-side work we did using Node.js. While I was looking again what "axios" is, I came across react.js somewhere and had a look at it. It really made my eyes sparkle because I don't always know and there is always so much to learn. In the demos I saw on their site, I saw that something could be developed client-side using the class structure (with lots of divs and other elements in it), and that I encountered different ways of using javascript, and I was happy for some reason.

I guess you wanted to see what we've been up to this week, or you've been busy, so you let us loose a bit. There's always an assignment, though. The last assignment I was working on, it seemed to take a really long time to try to write something thinking about every possibility. And I left it there because I thought I could figure out the logic of it a little bit, I thought I could do something with it. But the query builder stayed where we left it last week. Not finishing it is still in the back of my mind. But it seemed like it would take a little bit more time to finish it completely. But thanks to those tasks, I was able to gain different perspectives every time I faced a problem. Trying to bring solutions to the problems I could find and bringing them to some of them was also very satisfying. I believe that I will further improve my coding skills by reading more code, writing more code, and of course understanding the purpose and logic of their existence.

Sometimes I face a lot of problems and try to find a solution. When I can't find it or when I have wrong approaches, I can correct my mistakes thanks to you and google, but sometimes I feel like I understand everything I read, but it seems wrong to me. "No, Buğra, you must have missed something. You must not have understood it." Today, when I was looking at that PDF, I said to myself a lot, "OK, I solved it" a lot. I felt like I was just reinforcing my knowledge in many places. When I saw the differences in syntax, the differences in the way entities are used, and the differences in interpreted languages in C related topics, I did some research on them. I think I may have said that because I haven't tried to write a code in C, but if I talk about the parts I saw, I think I can handle it even if it takes a little time. That's all for today.

Day 79

Before doing the task given today, I tried to examine similar examples on many different sites. I can't say I examined it because I couldn't find a beautiful site that I could take as an example. The problem given was this: To prepare a page dedicated to people who will apply for a reseller and a printer system. There should be one page for both cases. I thought that having two different tabs on one page would reduce the complexity and length of the page. By default one tab should be open at the beginning. Since the publisher is already quite computer literate, I thought the dealer system should be the default. So what should be in the content? The individual who will apply to become a dealer should somehow send us their information. For this, we can give a contact address or we can get the data we want from the user via a form. Well, if the user wants to become a dealer, if he/she has come to this link, wouldn't it be good to convince him/her with a little fancy language about why he/she should choose it? I think so. That's why I thought it would be good to present some of the basic features of the site (company) numerically (how many years in the sector, how many companies are authorized dealers, the general volume of the products of the authorized dealers in the sector, etc.). In summary, I could think of two things: To convince the user and to make them contact us with peace of mind and willingness.

In the evening after work, I started by reading the preface, acknowledgements, and sometimes even smelling the book perversely (the first smell of the book (the inside of the pages)). I got as far as the Big O notation. Even though I thought "I'm wasting time by reading the introduction", it was nice to read the history of the computer, the history of computing by machine. From Charles Babbage to Alan Turing, from John Mauchly's efforts and the many times his ideas were stolen or appropriated, to Apple, to Ada Lovelace breaking my sexist perception that the first programmer in history was always a man. I think if I keep writing, the report might stop being a report, because then I will go on to say that Ada Lovelace was Lord Byron's daughter, that Lord Byron swam across the Dardanelles with a crippled leg, that she wrote Don Juan, and that Albert Camus's inferences about Don Juan in The Myth of Sisyphus. It's time for bed.

Tomorrow I will try to finish the mission. It takes a while because I want to try new things. Of course it will take less time if I just repeat what I have already learned, but I want to push myself to use new things. I will try.

Day 80

Today was all about CSS and a bit of Javascript. I did something, but it didn't feel right. I couldn't say to myself, "okay, this is it", whereas I was able to say that in the design of products with shipping. Still, if you think about it, you can do even better things.

Today the form part of the dealer system and the design of the publisher system were realized. No extra library was used. Only Google Charts was used, but it can be simply converted into an image file. In the publisher part, the colors and layout did not fit well. Although we tried to pay attention to responsiveness, distortions were quite high when the page was minimized. Hand-held results were achieved, but not to the desired level.