Showing posts with label master. Show all posts
Showing posts with label master. Show all posts

Wednesday, 15 August 2012

Introduction to Computer Memory

 Got an interesting link set to me from a friend concerning Computer Memory, apparently this text is THE text for understanding computer memory physically and theoretically. Obviously with memory being one of the most integral parts to programming I feel this has to be jumped to the top of my reading list.






 As I am currently following the lecture series at the moment I will start updating what I am picking up from this text, from the first few pages I read already, just 'flicking through' I know it is definitely worth my while and will give me a great advantage in the future when I begin to practice assembly language and any other low-levels tinkering I may have planned.

:)

First On-line Lecture. (9,996.5)

Managed to get on my discipline a bit more today and watched the first lecture in the series I promised I would watch daily. If you don't know what I am talking about (click here).


 Okay so firstly the lecture are a little bit dated but have a very cool old-school feel to them, that makes you feel as if you were there near to the beginning of the birth of the modern-modern computer (I'm talking post windows 95). The first lecture concentrates on introducing you to Lisp, not in a traditional 'declarative' way (picked that word up from the lectures, Gates watch out..) whereby the lecturer basically runs through the various commands and how you link them up, rather, in this lecture the theme is understanding what's inside the each process that each operator calls.

 The lectures are filled with useful quotes that help to put computing into perspective for the programmer. For instance the lecturer makes very clear at the beginning that computing shouldn't be considered a science or even considered computing as it takes away from the processes involved and focuses heavily on the tools you are using. I feel this quote does have some weight to it as he elaborate on it throughout the duration of the lecture and basically leaves you understanding that computing is not really about the fancy programs you get to play with right now for instance, computing for the computer scientist is about engineering an art form. Making something that is already magical and beautiful and making it even more so.

 Anyway enough about the lecturers philosophical input about what he feels computing to be, what is there to learn from the first lecture in this series. Well, enough to realise that if I stick with this and complete this series I will understand computing and programming in a seriously deep way. From all the dabbling I have done before in programming I understood more about what was actually going on from this hour long introductory lecture than I have done in a whole year of faffing around.



 The main concept the Lecture introduced was this idea of  'abstraction' in that the way you can express something in programming has to be understood fully by you for you to be able to do it efficiently. The lecturer went on to explain what he meant by this by creating a squaring function from scratch using Lisp. The details of how to do this are not important as he shows you many methods of producing the same result and even a mini program that was designed to 'guess' the square root of any number.

 The key points that needed to be taken away is the basic structure of code.
 He gives this example and then elaborates on it as I will giving a running commentary.

(+  3  17.4  5).
Lisp uses a system known as prefix notation which means the operator is written to the left of the operands.
 A simple mathematical operation in lisp. The plus sign (+) is the operator the numbers to be added are the operands (3, 17.4 & 5) and the parentheses/brackets including the process inside is known as a combination.

He then explains the method of developing your own code or in this case a squaring function.

(DEFINE SQUARE (LAMBDA x (* x x)))

Now I'm not 100% on the definition of LAMBDA but I have made a note to re-edit this section for clarity, until then I will just explain the point the lecturer was making by showing us this operation.

The intial call 'DEFINE' requires us to create a symbol we want defining, in this case as we are squaring numbers the symbol was 'SQUARE'. The next stage of this definition required us to call a procedure that allowed us to define using an 'argument' what we wanted  our definition to stand for. This is where the term 'LAMBDA' comes in and not knowing this did stump me a little bit on what was going on but it is not impossible to understand the essence of what is going on which was the purpose of this lecture. So, with a procedure called with an argument named 'x' ( what this essentially means is that a value known as x will be entered and when it is entered something must happen to this value due to the call SQUARE being used), a result has to be 'returned' to give purpose to the new definition. The final section of the code '(* x x)' required x to be multiplied by itself (or squared as it is known) to complete the process.


:)


 Again as with all articles I will touch them up for you to make them perfect as possible when my understanding of the concepts matures. Thanks again for your paitence. Also if you can help clarify any of the information I am trying to re-teach people please leave me a comment and I will be more than happy to fix the areas where I have gone wrong, its the reason I'm here. Also I did about 1.5 hours of actual constructive work today hence why I have moved from 9,998 to 9,996.5. It seems this process is going to balance on my fight with my discipline as in my mind its filled all the time with the want to learn computing but there is a huge part of me that hides away from tackling it, who knows for what reason, probably fear of not understanding something and being a failure unto myself and shattering the image I hold of myself being able to tackle anything with enough effort, which truth being told would be a devastating blow, it is however my sincerest intention to reach my goal of hitting a Phd in 10 years. I'm just off to a slow start. Again thank you for your patience.



Tuesday, 14 August 2012

The Spirit of Computing


An amazing quote about what computing should be for programmers;

``I think that it's extraordinarily important that we in computer science keep fun in computing. When it started out, it was an awful lot of fun. Of course, the paying customers got shafted every now and then, and after a while we began to take their complaints seriously. We began to feel as if we really were responsible for the successful, error-free perfect use of these machines. I don't think we are. I think we're responsible for stretching them, setting them off in new directions, and keeping fun in the house. I hope the field of computer science never loses its sense of fun. Above all, I hope we don't become missionaries. Don't feel as if you're Bible salesmen. The world has too many of those already. What you know about computing other people will learn. Don't feel as if the key to successful computing is only in your hands. What's in your hands, I think and hope, is intelligence: the ability to see the machine as more than when you were first led up to it, that you can make it more.''




Alan J. Perlis (April 1, 1922-February 7, 1990)



The Article that started it all.



If you enjoy what is being attempted the link below is the initial page where I got the idea and the logic behind the 10,000 hours.





Incase anyone was wondering what the hell has happened I've hit a major discipline low and have spent the last three days literally fucking around. I'm still on my 9,998 hours and still struggling to understand that floating point definition. 

 I am currently sucking hard. The intention is strong the discipline is not. 

I want this, I really do.




I'm going to start listening to this wolf.

Thursday, 9 August 2012

Gentoomen - Giant book torrent

I did mention I needed to build up some relevant literature to start building up my knowledge base, so I found out about this 36G torrent that holds an impossibly massive libary on just computer science texts that cover every relevant subject imaginable. It truly is epic. I mean I have had it on download all day today, total of about 12 hours and it still has seven left and I have a average download speed of 1.1M, I appreciate that isn't massive but its not bad.






As far as general progress on my quest is going it is still very early days and I am currently finishing the How Computers Work book, so expect a full review shortly plus some extra recap notes and something a little more in-depth and technical. 

Wednesday, 8 August 2012

Someone has 'got the t-shirt'

Well I was looking around for more advice and I found this 'reading list' set up by a guy who had a whole summer before starting univeristy in which to study and really accomplish something. This guy set out and went on a marathon reading session and essentially grounded himself in all areas of computer science (exactly what I am planning to do). The thread below is his recommendations to people in a thread, it eventually branches out into a huge which book for this subject, which book for that. This guy is a true autodidact.

 I do intend to copy exactly what he has done, but I intend to summarise what is to be gained from each book and try to teach you guys what I've learnt.

This thread is huge so click to expand it and have a good read, definitely worth it. Inspirational to.
 I will post links to all these books in another post. For now back to Ron White.
Peace.


-Edit, seems there is a cap on the file size for one image, so I will post the whole picture, page length by page length below. Sorry about that.

Start- Enjoy












END- :)

10,000 Hours left to go


"Since most of you are unemployed or students, you can easily spend 50 hours a week working on your skills in the field of your choice. If you did this, four years from now (e.g. the length of a college degree) you would be an expert in your chosen field. Literally, you would be ready to step up and become the next Steve Jobs, or Bill Gates, or crap out a PhD in mathematics, or be an awesome musician, or whatever.

Instead, you will spend the next 4 years racking up 10,000 hours of practice browsing internet forums. (Some of you will get the hours done in only two years). Think about what the last four years of that got you.

Now, what's your excuse for wasting your human potential?"



 An epic post I found the other day that really encouraged me to do this.



 As of today I will make a 10,000 Hours milestone, tallying each day my accumulated hours and put to the test the authenticity of the 10,000 hours mastery theory.


Tuesday, 7 August 2012

Day 1: Setting up a PoA (Plan of Action)

 Had a few very informative responses to the posts on 420chan about reccomendations for someone wanting to pursue a life mastering computing. Much appreciation for those responses.

 I found a timeless advice piece from a computing blogger who used to be a student of Computing at Yale. He offers a top 7 list of personal recommendations for anyone wanting to study computer science at a top-level.

http://www.joelonsoftware.com/articles/CollegeAdvice.html

His site is also very interesting to have a look around I will probably have another more serious look at his site when I have a bit more time.

 I'm still making my way through the 'How Computers Work' by Ron White book but have begun mapping out my PoA. Based on advice given in the posts (thanks again for that guys, especially big thanks to 'Basil Chuttingneg') I have decided to start my focused learning on assembly language.

 The reasoning behind this is :

  • Gets to grips with the 'real' computer part of computing
  • I will eventually be hindered by not knowing enough about assembly language and how compliers interact with the low level computer processes, so I am going to hit this hard now to make it a smoother ride later
  • Allows me eventually to have a massive advantage when developing my skills in 'C' and the similar languages due to a proper understanding of their functions interaction with the I/O devices of the computer


Obviously nobody learns an assembly language over night so instead of focusing soley on assembly language I've decided to make out of every day a 5hour 'practice' time. Within these 5 hours I intend to spend 3 of those hours learning assembly language from the ground up and 2 of those hour gaining practical experience in something instantly usuable such as xHtml and CSS. 

 I will be starting out by re-doing the Bucky Tutorials on xhtml and CSS, so expect a few posts about that coming soon.



Again guys thankyou very much for the pointers so far, if you have anymore advice or any personal experience you'd like to share i'll post the links to the 420 posts below.
http://boards.420chan.org/prog/res/24050.php   /PROG/
http://boards.420chan.org/tech/res/89403.php    /TECH/
http://boards.420chan.org/howto/res/30980.php /HOWTO/

Monday, 6 August 2012

How to Become a Computing Master

I have recently been developing a personal 'life plan/challenge' in which I am going to devote my life to becoming an absolute master of computing; willing to put in over the recommended 10,000 hours required to become an expert in any field.

 I have decided as a kind of lasting mark for society I will document fully what it takes almost day-in day-out to go from being a normal human being with hardly any discipline to becoming a human being that can be considered a true master of an art. Now I obviously understand how absolutely immense the field of computing is so this is no small feat but I will stick at this for an entire lifetime and if it turns out to be proof that consistent hard work and persistence can truly create greatness regardless of natural talent, then we will have all learnt or re-confirmed something.


The original post on 420chan.

If you are interested in supporting me on this journey post some useful information in the comments. 
Thanks.




Friday, 29 June 2012

Bucky tutorials

I'm to be starting an OU degree soon in computer science until then I am tutoring myself through Bucky Robert's site:

http://thenewboston.org/


 For those of you that do not know who Bucky Roberts is, he is a YouTube educator that runs you through the basics of pretty much every language out there as well as some other tutorials on random stuff like how to make a go-kart from scratch and how to survive in the wild. The guy is extremely engaging and really simplifies the basic of computer programming, a real must for someone whos finding the languages of the coding world a little to alien.

 To help keep the learning of Computer Science interesting I decided to adopt a cool side hobby in 'game design'. Being naively unaware of how much work and complicated computer practice goes into game design I went in search of a little help and stumbled upon another great YouTube educator 'BergZerg'.

BergZerg's YouTube channel 'BurgZergarcade' hosts a unity RPG Game tutorial which runs you step by step through the creation of a full RPG game. Its very basic in terms of visuals so don't be expecting to whip out the next WoW (as you'll soon find out how ridiculous an idea that is) but in terms of being introduce to the demands of game design it is amazing.

His actual site has the original videos and a few more on different topics so worth a quick nosey if you like his work.

^I find the combination of these two tutorials especially the newboston C# tutorials and the bergzerg game design tutorials, really allows you to understand the applications of the simple codes you learn and how they work in a wide variety of scenarios. If you are interested in game design regardless of age or experience I really recommend checking these both out. 

Thursday, 5 January 2012

Creating the foundations

I want to become a certified Computing Master.

I want to become a certified Computing Master because I am currently a very underachieving, undisciplined, average Joe that has a decent enough mind to understand everything I apply that mind to but consistently wastes his potential and has no shortage of people telling him he is doing so. I decided I need to break my pointless cyclical lifestyle and have made the choice to do something that will make me or break me as a human.(Well maybe not break me physically but you get the idea; something that if I don't reach it I will be a serious failure to myself). So I had a look around the world I live in and picked one of the hardest yet useful skills available to me and decided as both a personal/spiritual quest to accomplish something that right now would seem impossible; 'earning a Phd in Computer Science within the next decade'. Whilst in ten years this may not seem like an impossible challenge, for me, being a lazy normal guy that never was considered anything special academically, this is a big mountain to climb.

I feel I have the motivation, in that I have been feeling pumped to do this for at least a year (an example of how bad my discipline is, thinking something and wanting something for a whole year without ever properly acting on it) I have decided now to kick myself into gear and start doing it.

Obviously I am aware of time and realise that to achieve something like this I need to put every spare hour under the sun to productive use if I am to be anywhere near my goal within the time limit set. I need a big plan, like a check-list of everything developed so far in the field so that I don't just 'get a Phd.' but really contribute something incredibly useful for the human race as a whole.

To be a certified Computing Master.




So I am going to develop this blog as a progress blog, documenting where I am at, where I am going and to summarize all the knowledge gained so far on my journey. Also I want it to be another example to people that extraordinary people are just normal people that never gave up.

 I like that last line, think I might get it tattoed on my face.