After experience with Witty features, I found that witty is really a good toolkit to learn how to develop web application, and to have better understanding about web. Most of the details cover from the witty HTTP client, server and etc. had been written by Sumia’s Witty and HTTP Client.

Reading, reading and Understand it

This is my second week at Aeste, I had been assigned task on a simulator project, to simulate a CPU. However, before reaching on that yet, a strong fundamentals about CPU should be established on mind. I had been reading on the Computer Organization & Design Fundamentals book, recommended by my supervisor to have better grasp on CPU. After reading this book, I truly recommend for others who are interested in having some better depth knowledge on CPU, because it describes the fundamentals of CPU and how each component plays a vital role in CPU. This book also reminds me of my previous learning on digital and microprocessor fundamentals, which I had recall to have better understanding about them. However, one of my biggest concern before you go lost in the CPU architecture, is to differentiate clearly on the Registers, Cache Memory, Main memory and Hard Drive Storage.

The CPU Architectures

To ease understanding, the book uses simple pipeline architecture to explain the Pipeline Architecture concept, which consists of the basic 3 stages of :

  • Fetch     : Get the next instruction to execute from its location in memory
  • Decode  : Determine which circuits to energize in order to execute the fetched instruction
  • Execute : Use the Arithmetic Logic Unit (ALU) and the processor to memory interface to execute the instruction

Based on the readings, the pipelined architecture CPU can process more instructions than the non-pipelined architecture. Although this is not a good way for handling complex code, but the main idea in CPU architectures is Pipelined architecture CPU is able to maximize the instructions that can be executed in each clock cycle. The CPU architectures is not as complicated as I imagine while reading the book, but indeed it has evolved into a complex architecture which is able to perform or process instructions in far more efficient and fast way. This can be referred from Journey Through the CPU Pipeline, explained more about the Hyper-Threading Out-of-Order Core Pipeline, which evolved from the basic pipeline architecture. This also showed on how designers in an attempt to squeeze every last bit of performance from their designs, try to make sure that every circuit of the CPU is doing something productive at all times.

Linux Terminal

Reading about people’s code is always a struggle initially, especially when you have no idea on where to find the main files in a bunch of folders. Beside, it is also a pain when you could not locate the specific code that you are finding in the file and you decide to look for it in other 20 files. 🙁

Previously, I have never been so fascinated about Linux Operating System, till I found the terminal command on the internet

grep -r "code_to_be_found" directory

This enable me to find the specific code over the whole folder to locate the files that I should be opening, instead of trying one by one from the 20 files. And I have to admit that I really love Linux at the moment, that learning programming should always start from Linux.

The x86 Simulator

I had to admit that the coders who wrote for this program is very amazing. The effort and understanding that had been embed to this x86 simulator is amazing as it combined all the knowledge about Linux, HTML, JavaScript and x86 architecture. Although it uses pure JavaScript for the implementation, and able to simulate x86 architectures, running on OSes to prove the simulator is working. The codes are pretty complicated, and it will definitely require sometime for full understand about the libraries and how to modify it.

Since I have never worked on real JavaScript project before, I had done some research in the web to analyze the code. I found out that the tutorial that I learned about JavaScript is simply too brief, that the simulator actually uses self invoke JavaScript code that will automatically run when it has no name (function () { code here }) (); You can find more details about the usage of self-invoke function here. The x86 also uses many different tools such as JQuery and DOM, and organized the code systematically so that everything is on the right file.