Thursday, June 25, 2015

A solemn promise to make the blog Awesome !!

Yeah, as you can see the basic themes offered by Google and my knowledge of customising a blog is not awesome, to say the least but I do feel that this deserves a complete revamp. It should look awesome, amazing and inviting, no.

But I don't want to involve any "professionals", I would rather do it myself and the way I see it, it's a win-win situation 'cos I am only going to learn something which would be insanely helpful to me if I am to present my work to the Whole Wide World. And so it will be.

It's gonna take a while though 'cos I am juggling many things at the moment and needless to say that my juggling skills are not only improving but I get to do the things I find to be so deeply satisfying. I just love finding things out, the sheer pleasure of discovering new things for oneself is the reason Why I do What I do.

So, if you think that the theme and all are not quite right, then I completely understand and I solemnly swear I am up to no Good;P

Monday, June 22, 2015

The Magnificent Tool-Kit

Over the past week or so, I have explored the budding branch of Data Science and I am insanely happy to see that we are finally becoming really creative with such dry a subject, to the extent that I envision Data Artists, rather than Data Scientists. You know, numbers don't really have an intrinsic sense of their own, they only exist at an abstract level after all but images and music; we feel these in our bones and it's an immense difference between studying symmetry and experiencing symmetry. I recommend that you explore the following resources which I have listed below. To really improve, we need to see the world in a whole different way and it's The Great Metamorphosis that we aim for, this is what being a Sagematician means!!

An Awesome TED Talk on Visualisation

D3.js Gallery

Plot.ly Gallery

showmeshiny - Powered by R

Useful bunch of links for budding Data Artists

Of course, learning these skills requires a certain amount of time and effort, not to mention patience but what worthwhile Art doesn't. You don't become a Legend in a day, perhaps the recognition comes in a day, ah there is a beautiful quote which captures this entirely, " It takes 10 years of hard work to become an overnight success" !! So, we might as well learn to enjoy the process.

Another thing being that I have explored a lot in the past weeks or so and I think it's best to start of with a particular priority list which doesn't really mean a neglect to the things which are to be mastered later. Everything is important but I care only about things which are relevant to my work.

Visualisation is of course a must-do if we are to make any reasonable sense in the mysteries of Statistics  and JavaScript/HTML5/CSS are quite important too if we are to become fluent in presenting our work to people; which makes a lot of sense as it is not a lonely pursuit. So, is LATEX, which essentially is the Art of Digital Texts; in fact it is to PDF's what HTML is to the internet, only perhaps more important. All the equations and the various arrangement can only be accomplished if we are  to get comfortable with LATEX as well. I am gonna upload a LATEX document of an article on Einstein's equation which I found to be inspiring enough so as to follow it through.

I know that it's all quite a lot and we haven't really started to even go through various Sage versions of important proofs yet!! But, I know for a fact that this is a great set of skills to acquire. I am planting a Garden of Amazing seeds, oh better still, let's call it the Garden of Eden and every seed would be a great reward in future.

At the moment, I am learning how to use the Emacs Org-mode so as to better structure the program and to keep track of various things like, how many variable I declare and what are the main things which I need to keep in mind while forming a solution or coming up with an outline. The best part about the Org-mode is that it is all extensible, just like the rest of Emacs so, when I am more acquainted with my Magnificent ToolKit, I can tinker around quite a bit and customise my environment the way it works best for me.

Btw, I found this insanely channel for Python skills, Study this one 24x7 - Fun and Interesting

Work hard, Be awesome=)

Friday, June 19, 2015

Fundamentals - Fooling Around with Polynomials and Equations

Hey, this post is one of the series of posts which essentially list out the commands that I have combed through the manuals and the various sage wiki and chatrooms, about the basic commands that you can use to follow things through as per the instructions on a classic textbook)

A list of commands which I found to be extremely helpful in manipulating the various equations and polynomials which are like the bread and butter of any Mathematical Analysis.

I did come across the extensive usage of Rings and Fields within the various examples in the manuals but apart from that, I think the following commands would suffice for anyone who wishes to begin with formula manipulation within Sage.

I have used MathJax to render the basic LATEX code into the traditional form). Seriously, this is amazing, I mean the lingo coming out from my mouth, I am improving and I truly hope that you get something out of this as well;P

As for our working example let us take these two equations and try out various Sage commands on them.

NOTE: This is a very rough draft post, as at the moment I am only collecting the most important commands which are essential to make progress, but I'll convert it into a proper blog post overtime.


These equations are, of course, to be typed in Sage notebooks as following

var('a b x y')
eq1 = 3*x*x + 5*y ;
eq2 = 3*x*x + 5*y*z + (x-y)^2

Whereas the first command declares the list of variables that we would be using in our calculations without assigning any value to them. The fact the a/b/x/y are independent variables with no values of their own makes it necessary for us to specify their nature to Sage beforehand, whereas variables like eq1 and eq2 would be accommodated by Sage on it's own.

︠latex(eq1)

eq3 = eq1 == eq2

show(eq3)

eq2.expand()

eq1.coefficients(x)

(eq2.expand()).collect(y)

eq2.simplify()

eq2.is_polynomial(x)

(eq2.expand()).combine()

eq3.add_to_both_sides(a)

eq3.denominator()

eq4 =eq3.lhs()

eq4  = eq3.lhs() + b

show(eq4)

(eq3.lhs()).substitute(x=4)

eq3.simplify_full()

eq5 = eq3.subtract_from_both_sides( eq3.rhs())

show(eq5.expand())

eq2.add(x, y, z, hold = True)

eq5.collect_common_factors()

eq5.factor_list()

eq5.factor()

function()
assume()
forget()

gradient()
truncate() # yields the trancated form of power series in Big-Oh
leading_coefficient()
low_degree()
number_of_arguments()
number_of_operands()
partial_fraction()
polynomial()
list()
dict()
power()
power_series()
series()
rect_form()
test_relation()
trailing_coefficient()
is_SymbolicEquation()



I'll add more commands and examples on this post as I myself learn more. So, keep an eye for these updates. 

Tuesday, June 16, 2015

Giving a personality to numbers

As I mentioned in the last post, we are gonna make numbers more humane, more personal then they have been for us so far. And there are a few categories which I think, are the first things we focus upon, intentionally or unintentionally in Human Interactions.

There seem to be two levels of personification that we can use for our purpose -

1. Sensual aspects
2. Perceptual aspects

For Synesthetics and furthermore to create a more personal relationship with numbers we should use both the aspects, in fact, as many aspects which we can to be good with Numbers. You know, it's more like leaving no stone unturned)

For the Sensual aspects there are five subcategories - Shape, Smell, Sound, Touch and Taste=)

And as far as the Perceptual aspects are concerned, we can model Color, Name, Gut-Feeling, an associated Alphabet, Place, Gender, Action.


The way we are going to tie it all around in our minds is by using the same Mnemonic techniques that Memory artists have been using for thousands of years; so don't worry too much if it sounds odd. It's meant to be odd and it's battle tested so let's go right ahead.

You need to imagine being on a journey, start anywhere but make sure that it is all very vivid, to the extent that you can literally feel it happening. It doesn't matter whether it is grotesque, sexual, funny, logically impossible; literally anything would be better than making it ordinary.

You can do it, be creative and use all your interests and your memories. For example, if you love playing a guitar or a piano by all means try to nail these pegs around and about a song or if you have been on memorable trips then start from the beginning of those trips and recall how it really was, what impressed you and how much you can recall. Might feel a bit unusual at the beginning but trust me after 5 minutes at most, it would all be vividly clear.

Now start with your journey, imagine meeting the number 0, at a certain place doing something which seems really really odd and then imagine moving towards the number and notice how it looks, what does it remind you off, is it a he or she; a smiling face or a high-browed one.. Focus upon the Sensual as well as the Perceptual aspects of the Number as you approach it; giving it a perfectly memorable personality might not be achieved at the very first try so once you have met all the numbers during the course of your journey, Then start again and add some more features to the number, give it all the more personality the second time around.

Now, once you have given each number a personality, go through the code that I have posted below. No, need to panic, if you don't understand it at the moment. It is quite elementary and I have commented it well, though there is only one iteration at the moment but in coming posts it will grow organically.

The following is another version of the code which "grew-up" from the last one, there is still a lot to be done but for the moment this is our base that we are gonna build further upon.

Try to go through the code, it just looks longer but basically it's the same code repeated for different categories and in essence it is the same as the one in the last post. So, Remember to Break Things Down into Manageable Chunks, always keep this strategy in mind.



  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
# -*- coding: utf-8 -*-
"""
Created on Sat Jun 13 12:37:31 2015

@author: abhinav

@version 2


Sensual aspects - Shape, Smell, Sound, Touch and Taste=)

Perceptual aspects - Color, Name, Gut-Feeling, an associated Alphabet, Place, Gender, Action.


"""
class numperson:
    
    def __init__(self):
        
        self.action = None
        self.alphabet = None
        self.color = None
        self.gender = None
        self.name = None
        self.place = None
        self.shape = None
        self.smell = None
        self.sound = None
        self.taste = None
        self.texture = None
        
        
    def has_shape(self):
        self.shape = input(" This number does look an awful lot like : ")
        
    def has_smell(self):
        self.smell = input(" Hey, you smell like  : ")
        
    def has_sound(self):
        self.sound = input(" Wow, your voice is really : ")
        
    def has_texture(self):
        self.texture = input(" I can recall that when I touched the number, the skin felt like : ")
        
    def has_taste(self):
        self.taste = input(" Oh, you are so edible, almost like : ")
        
    def has_color(self):
        self.color = input(" Apart from the various shades of grey, which is your favourite colour : ")
    
    def has_name(self):
        self.name = input(" Listen, I namest thou : ")
    
    def has_feel(self):
        self.feel = input(" You just feel so : ")
 
    def has_alphabet(self):
        self.alphabet = input(" Hey, I know of an alphabet which looks a lot like your name : ")
 
    def has_place(self):
        self.place = input(" Fancy, I see you here : ")
 
    def has_gender(self):
        self.gender = input(" Hey, do you cross-dress or something, because you seem to be : ")
 
    def has_action(self):
        self.action = input(" And why are you? : ")
 
 
    def show_info(self):
        
        self.shape = input(" This number does look an awful lot like : ")
        self.smell = input(" Hey, you smell like  : ")
        self.sound = input(" Wow, your voice is really : ")
        self.texture = input(" I can recall that when I touched the number, the skin felt like : ")
        self.taste = input(" Oh, you are so edible, almost like : ")     
        self.color = input(" Apart from the various shades of grey, which is your favourite colour : ")
        self.name = input(" Listen, I namest thou : ")
        self.feel = input(" You just feel so : ")
        self.alphabet = input(" Hey, I know of an alphabet which looks a lot like your name : ")
        self.place = input(" Fancy, I see you here : ")
        self.gender = input(" Hey, do you cross-dress or something, because you seem to be : ")
        self.action = input(" And why are you? : ")
 
    
 
 
    
numlist = [1, 2, 3,]
 
""" 
Once you have made sure that you are quite comfortable with the personality then
go right ahead and give enter the value within range() and add the elements to 
the numlist. Bada bing, bada boom, all the satements would get executed for those many numbers
"""
 
for i in range(3):
    numlist[i] = numperson
    
    numperson.has_shape(numlist[i])    
    numperson.has_smell(numlist[i])
    numperson.has_sound(numlist[i])
    numperson.has_texture(numlist[i])
    numperson.has_taste(numlist[i])
    numperson.has_color(numlist[i])
    numperson.has_feel(numlist[i])
    numperson.has_alphabet(numlist[i])
    numperson.has_place(numlist[i])
    numperson.has_gender(numlist[i])
    numperson.has_action(numlist[i])
    
    print("the personality elements of the number are : ")
 
    numperson.show_info(numlist[i])
 
    
""" 
To access the particular attribute we simply type in the 
array like numlist[1] and ask for a particular attribute with the
following command numlist[1].color or numlist[1].name and we have it

"""
 
print("\n the information about the element is as follows ")
 
print(" \nthe color of the number is ", numlist[1].color)
print(" \nthe name of the number is ", numlist[1].name)

Saturday, June 13, 2015

The Python Ecosystem - Insanely Awesome !!

What's bigger and more dangerous than Python ?

Anaconda, of course !


This is a ready made, especially grafted solution for the needs of scientific community which relies solely upon the the Python language and the packages which have been built exclusively for the language like Scipy, Sympy, Numpy. In fact it surpasses Sage in it's effort to combine the numerous open-source softwares, here's the list which shows the 270+ packages in Anaconda.

The basic version is free for individual usage so, go right ahead and download it for your platform.

The main difference between Sagemaths and Anaconda is that the former is more heterogeneous in it's usage of softwares which might be built in another language entirely for example a major component of Sagemaths, Magma is built using a LISP derivative and we are free to access and program Magma from within Sage, if we  so choose.

Whereas the Anaconda system relies solely upon the systems which have been built upon the Python language, however they too are optimized using various low-level languages and technology namely C language or perhaps a domain oriented language for multi-processing etc.

Why do I insist that you get used to Anaconda when our aim is to use Sagemaths for Mathematics ?

The simple reason being, it's like trying to understand Calculus when we are not even familiar with Trigonometry! Python is the strong foundation and the base upon which the entire Sagemaths structure is erected and it's absolutely wonderful. The thing is there are many Sage-specific functions and functionality which is essentially the building block for taking the Python language to be more Mathematics friendly, in short it adds an immensely huge library of functions to the Python language by default. Now, we can't really understand the workings of the entire Sagemaths system, if we only have a superficial knowledge of the Python language.

We are lucky that Sage is based upon such a wildly popular language for otherwise we would have to learn an entirely commercial, closed source language with it's own peculiarities like Mathematica or MATLAB etc. The fact that Python's inbuilt Standard Library contains, literally, almost all the tools that you would need to get started in any aspect of computing. Be it GUI designing, Database designing or Networking oriented programming, it's all in there already.

This is why Python is said to be shipped with "Batteries Included";P

So, unless we are really comfortable with the Python language, we wouldn't really be free to create our own functions, classes to inspect various aspects of Mathematics. The reason Anaconda is indispensable to us is that, it gets us moving in an IDE as well as the wonderful IPython environment, which stresses the use of Python packages for Scientific Exploration. Plus, if you have explored Ipython a bit, which you really really should, then you would be pleasantly surprised to find that it too has evolved from being an awesome front-end to the Python language to something which is essential language independent, so the new project is called Jupyter which already offers us the ability to use  Julia, R and of course Python ( 2 and 3) within itself. Plus, there are many other shells which are in the pipeline-of-coming-wonders like Lua, Haskell, C++ etc.

So, this is something that's only gonna surpass the success of Ubuntu  because the Open Source Community learns fast and is ever more enthusiastic. It has mastered the art of adapting to the needs of the times and make the transition as smooth as possible.

Regarding the blog posts, I am trying to tinker with the HTML/CSS/ JavaScript code to make it really awesome. I assure you, give me a couple of months and this thing would be insanely cool;P

I have been exploring the various technologies and resources which seem promising. At the same time, I am becoming ever more fluent using the resources and tools that I already have. The progress is pretty fast, two months folks, two months at best and you will see how amazing it gets.

I am trying out various languages, like Haskell, Lua and Emacs-Lisp trying to ascertain their niche, like it makes a lot of sense to try out new algorithms with a very light weight and utterly simple and beautiful language like Lua, plus Emacs is definitely in, I would like to be able to customise the entire environment to suit my needs, so Elisp is to something that is quite important and would always be here; folks, Emacs isn't going anywhere !

I feel in my bones that I am getting better, though I am quite chaotic in my workflow, I feel it that Programming is becoming more and more of a second nature to me. I might not be an expert at anything but I am getting better for sure, getting better with each passing moment and each question that I solve, each keystroke I put in. It's amazing;P

This blogging thing is growing on me and I think that scientific computing, or more specifically Computer Aided Mathematics is really my thing so I am definitely gonna pursue this as a career.

In Linux I try to stick to bare bone tools which means, me being able to use the control the entire computer and the softwares through the shell itself. This is as real as it gets;P

Whereas in Windows, I focus on Juno, Anaconda, IDLE and of course the online version of Sagemaths, SageMathscloud.

As I promised in the last post, the code for giving a bit of Personality to Numbers is as following. The code is pretty elementary at the moment, but with time and within this context we are gonna leanrn the basics of Python Language. This is only the basic version of the code, made colourful using hilite.me

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# -*- coding: utf-8 -*-
"""
Created on Sat Jun 13 12:37:31 2015

@author: abhinav
"""
class numperson:
    def __init__(self):
        self.color = None
        self.name = None
        
    def has_color(self):
        self.color = input("enter the color of the number : ")
        
    def has_name(self):
        self.name = input(" and I namest thou : ")
        
    def show_info(self):
        print("The name of the person is : " , self.name)
        print("and the Color is : ", self.color)
        
numlist = [1, 2, 3,]
 
for i in range(3):
    numlist[i] = numperson
    numperson.has_color(numlist[i])
    numperson.has_name(numlist[i])
    print("the personality elements of the number are : ")
    numperson.show_info(numlist[i])
    
""" To access the particular attribute we simply type in the 
array like numlist[1] and ask for a particular attribute with the
following command numlist[1].color or numlist[1].name and we have it"""
 
print("\n the information about the element is as follows ")
 
print(" \nthe color of the number is ", numlist[1].color)
print(" \nthe name of the number is ", numlist[1].name)

Sunday, June 7, 2015

Numbers, Numbers everywhere; not a single one to Think !!

EDIT :- Hey, I tried to make the title rhyme with "Water water everywhere, not a drop to drink" but obviously, it's not quite as elegant. So, this kept itching me somewhere at the back of my mind and eventually a new one came up. It's slightly longer so I don't want to use it as the title but here it goes.

Numbers, numbers everywhere,
yet, I see you nowhere;
Wonder if you had a name,
would you still scare me all the same !

Of course, it's still Amateurish but that's a definite improvement. Kinda sums up the entire post=)

------------------------------------------------------------

You know that feeling when someone is expecting from you a number and you just come up blank. Well, welcome to the club;P

For many of us Numbers are so impersonal and such an abstract concept that it is quite hard to grab them around one's mind after all we can't really see numbers, can we ? We see their examples like 1 banana, 2 bananas, 3 bananas...oh okay okay... 1 apple, 2  apples, 3 apples. Btw what do you have against bananas and why is it named so funny !

But Numbers are absolutely everywhere and this initial feeling of numbers being these impersonal things which always end up getting us in trouble, really hold us back from enjoying Mathematics. For, the fear of Numbers grows up into the belief that "I am no good at numbers so Maths is just too hard for me". Well, this is what the uninformed believe and for sure "Numbers are not Mathematics ", just a part of it. The subject extends far and wide so much so that it’s a common joke that if two Mathematicians are in a room, it’s not really the case that they would have much in common to discuss ! Or to put it more simply it’s like saying that all painting are oil paintings, not really true, is it ?

Well anyways, the point is that there are people who are really good at them and I am sure that you wouldn't need to think hard to recall someone who just feels right at home with numbers. That's because they have consciously or unconsciously made numbers personal and given them a personification. That's what the "superhuman savants" do !! People like, Daniel Tammet, Rainman to name the most famous examples of Exceptional Memory do that automatically or at least at a near-subconscious level.

Do they have different brains, they use a higher percentage of their brain ?

Not, necessarily ! Studies show that figuring out differences between the Neural Structure of the brain of a "savant" or a "normal" person is nigh impossible. But their brains however have a slightly more developed visual memories and this slight change produces a remarkably highly developed well developed overall memories. Think about it for a minute, we really are quite visual beings, we might not remember names, numbers, where we put our keys etc but we have a remarkable memory for faces, for places thought not for events, which get morphed over time.

But our focus for the moment is only upon the importance of visual memories and by extension how can we make things more "memorable". Well, there is this childishly simple thing called SYNESTHESIA, which emphasizes that fact the that more aware we are of our sensory inputs and the better we associate them to the object we want to remember, the easier it is for us to recall it. It's like each memory is a slippery to begin with but as we add and associate them with more and more factors we give this slippery memory, hooks, which might help us retrieve them further.
Do check out this link.

So, actually being aware of one’s feeling and surroundings would be a great way to remember not only numbers but anything, really !

Wondering, how this is all related to sage, python and programming ? 

Ah, that’s where it all becomes interesting. I think that the traditional way that the concepts like Object Oriented Programming etc are introduced is just as lifeless as they introduce numbers. So, of lately, I have been working upon making a program which helps us to give personalities to the number like what’s it’s color, whom does the number remind you of, what does the shape resemble, what is it’s texture like, it’s smell, does it look happy; and a few more of such personifications.
See, linking the programming concepts with various mnemonic techniques and at the same time taking the fear of numbers makes it all the more interesting, in fact , compelling for me. I like combining various things, giving them life.

Now, when the PersonalityToNumbers.py is functional, I would start experimenting with it’s structure, how to use this Class and make a module out of it or just simply see how many ways I can make it more and more interactive; that’s a good enough and a tough enough context for me to work towards.

And then there is the question of managing various versions of this code, which again provides me with a brilliant context for experimenting with Git version control system and how can I show and explain the code on this blog. So, that’s what is coming in a few days time.

Also, it’s making a lot of sense to begin with combinatorics and just the basic graph theory on the side as they are distinct enough so as to make a rapid progress in that aspect as well.

So, to sum it up these are the two basic things that I am working at the moment. Will update soon about the progress.



Saturday, June 6, 2015

Dear Frankenstein!

Man, the sage system is really complex. Of course there are manual which range from few to several hundred pages long.

Not to mention, all the arcane functions that have been developed over the years by so many people who specialise in a certain field.

You know, it's like studying a being in it's natural habitat. Remember watching Discovery channel or National Geographic and wondering how the hell did they manage to witness and record that much.

Patience and Perseverance !!

Sage is meant to be deep and once we make enough friendship with this being it's always gonna reciprocate.

I find the experience exhilarating, much like being a Field Biologist on an outing. Frustrating at times but extremely rewarding.

Few things, I have realised so far -

* Bookish solutions are tough to implement i.e. it takes a while to figure out how exactly can we implement it in sage.

* I keep getting confused, when to use an intrinsic function as a method and when to use it as a function. I prefer functions, overall.

* It's better to advance on various subjects at the same time, as in tackling coordinate geometry and combinatorics together. Makes the progress more apparent and definitely gives that feel-good moment.

* I must learn to handle the variable that I declare more neatly and the general formatting of the solution, which is, the way I structure is also something that I need to work upon a lot.

* Must learn more about the component which are stitched together in sagemaths.

So, dear Frankenstein system. I ain't giving up, I ain't going anywhere !!

Sooner or later you are gonna give up all your secrets;P

Thursday, June 4, 2015

Motivation

MEN WANTED for hazardous journey, small wages, bitter cold, long months of complete darkness, constant danger, safe return doubtful, honor and recognition in case of success.
- Ernest Shackleton

So, ran the advertisement for the proposed Arctic expedition by Sir Ernest Shackelton. The ship was aptly named ENDURANCE, and a test of endurance it was.

The motherland at war, the impenetrable ice, months of darkness, frustration, resentment, lack of food, utter boredom, isolation and bitter cold. Not to mention moments when some to be left behind while some embarked on a journey about 1000 miles in a 22 foot long boat, even then sailing towards a destination with few means to check the direction !!


Shakelton's Expedition - Read the Entire Story !

That's what We as a people are capable of, of Unbelievable Endurance. But Endurance by itself is not enough, it's an act not the reason. It's our reason which make us endure, our reasons which keep us going.

We as people are born to explore, be it a life-threatening adventure , for the survival  of our loved ones or just for the sheer fun of it. We, as one people, are meant and even built to explore and to push ourselves further and further, as they say, "To infinity and beyond "  but I believe that it's more like To Infinity Or Beyond; we don't have an option with exploration. This is what we are meant to do. Period.

What we choose to do is only the form of it, only the action we take because of our values and intrinsic drives. At the moment I am not talking about "What" we do as in arts, mathematics, physics, acting, poetry or even enjoying communicating with people, anything at all !

We are not talking about the "What's " but the "Why's". I mean, think about it an artist would hardly be a good one, if she doesn't practices or a musician can be expected to be a master of an instrument if she doesn't practice, if she doesn't put in long hours to understand the trade. And we can only put in honest effort if it pleases us, if it gives us joy !!

We are meant to explore and exploration does not necessarily has to mean walking to such and such place, it's about our insatiable curiosity with the unknown, that's what exploration is. So, be it sculpturing, be it painting, it's all the same and is governed by the same "Why".

We enjoy "exploring" at a primal level, it's a basic instinct of our species. Think about it !! I believe that the only thing that separates people who leave their mark on history is their comfort in being uncomfortable and their relentless drive to explore. We only need comfort to be able to explore and be uncomfortable again, sounds paradoxical doesn't it ?

What about drive and being good, how long does it take and why do we have to wait so much ?

Yes, that's a good question;P

I think that any skill that we master or even those which we try out is a combination of 3 basic things.

Curiosity + Motivation   + Domain Oriented Knowledge

That's it , these are the things that it all boils down to.

Curiosity governs our drive to Explore, Motivation gives us our Endurance and it is only through deliberate practice that we can attain a good Domain Oriented Knowledge.

Just because we have a different name for a thing doesn't mean its different in essence, rather, just that we have a set of different words for to express what it deals with. At the bare most level everything that these fields talk about can be understood in terms of Real World and Every Day analogies, though their are certain exceptions like trying to visualize an N dimensional space or some such but even when we are dealing with these the basic ideas are still from the Real Life.

This Domain Knowledge is what separates the painter from a sculptor or a physicist. The difference between Genius and Mediocrity lies in the fact that the former is most likely to continue with the one's exploration in a domain which she loves, she gets a kick out the very act of doing it whereas one would never go beyond Mediocrity if one fakes it, one is chained by comfort. You can't fake love, can you ?

Domain knowledge is quite different from our basic and intrinsic Creativity Drive, it's all basicually just a lot more specialized words that's all. It all comes down to analogies and everything should be explained in terms of every day events, that's the entire point of dealing with abstractions, as we have discussed in the last post.

The main impact of creativity, it's strength is to find abstract from the apparent and vice versa.

This reminds me of an incident related to me by a friend, it's about S. Chandrasekhar, one of the few truly ingenious minds which were born in the country. When asked about people who seem to have an "Intrinsic Motivation" as opposed to more "Extrinsic Motivation", he mentioned two people. The first one being, Eklavya ( a mythical character from the classical times) and the other one being Sir Roger Penrose.

If you don't know about either one, it doesn't really matter. What matters is the "Intrinsic" vs the "Extrinsic" motivation part that was being discussed.

I don't think that it entirely dependent on Natural Talent, I find it to be too simple an explanation of why the Bernoulli Family produced brilliant Mathematicians ( amongst other things ) one after another ? No, it's not really a question of Natural Talent or even the upbringing, we are far too complex beings for such a simple explanation. What matters is, I believe, the inspiration that sparks our pursuit. For some it's a question to looking good all the time, to others it's a question of being a good communicator, being a mountaineer and for others still it's about trying to understand Nature, how it works and what mysteries it shrouds.

How this is all related to Mathematics ?



                                                                                                                        Courtesy - XKCD

For a Mathematician, there isn't much hope for glory, certainly not in near future. But perhaps only when, an artist, biologist, an architect or some physicist  figures out how to use the equation does the Mathematics really becomes mainstream. But still new discoveries are being made all the time in the field with people who know that the journey is tough, appreciation is low and, well, Gimli the dwarf summarizes it best...




Explorers are fundamentally different from the crowd, they keep in touch with their childish urge to explore. Be it Mathematics, Skydivers, Field Biologists and so and so forth, these are the unsung heroes and they don't really resent it. The journey is the reward in itself. The intrinsic light is the strongest within these odd ones for the pursuit is much more truer to the journey.,

Most of the careers that we think of, offer instant recognition, wide-spread popularity and "celebrity aspirations ", but when we think about it, there have been so so many exceptional people in History. The first man who decided to walk out of Africa, the viking who decided to cross the Atlantic well beyond the extent of the known world, the man who experimented with the trees as medicines and countless such other explorers. We don't remember them !

It's a recent phenomena that we seek to remember people in our folklore, to make them celebrities out of recognition, this didn't exist 99% of our History. But there is no injustice done to our "Good Ancestors ", to all our unsung heroes for the journey is the prize in itself. You know, "The is magic in fighting battles beyond Endurance " !!

The more widespread a field is, the most "fame-oriented" it is and is perceived to be all the more approachable. I am sure that there is a great deal of Hardwork involved in acting, in photography but the results in these fields are almost instant, people either like it or they don't !

And in sciences and in many other fields this is not so. These sciences rarely offer fame in a lifetime.

This post has been somewhat incoherent but I hope that I have somehow managed to get something important across. We are explorers by our very nature, we are not meant to build a fort and be comfortable, we are meant to push the boundaries and tease adversity.

It's important to keep one's creativity alive and to seek constant motivation. For our education system does it's best to stifle and murder both. Well, what do you expect when such a large part of our education is led by dinosaurs for the children of the age of internet, when these Domains are introduced to us by utterly bored people. You know, never before has the generation gap so wide as it is now, never before the butterfly effect been so apparent. But here we are !!

Monday, June 1, 2015

Enter the Language Matrix !!

So, as promised this is the list of resources that we can use to understand various computer languages and how to really write and structure computer programs. To be able to do Mathematics computers is our goal and with time we will learn to structure our equations, generate new equations , permutations and so many more structures which come up in a Mathematical Analysis.

Learning how to code properly and becoming adept at various programming styles and methodology would be only beneficial for us if we wish to Do Good and Do Well.

How to approach a language ?

See, learning to ask the right question is half the job done. Languages, are extremely complex, there is no denying this fact so how can we take our first steps in a language till we are quite able to walk, run and gradually learn to explore the language on our own.

The best way, for me, is to approach a language with a goal in mind and then learn how to break down the complexity and understand these fundamental narrow structure so as to be "Functional First and Fluent Later " in a language. Take Python for an example, Python is the language of Sagemaths so investing in Python does make a lot of sense. But due to it's immense popularity it is used for gazillion things, ranging from making a website to forming a database, from system administration to game designing.

So, instead of focusing on every little aspect of the language and learning it's entire ecosystem I would rather focus on those aspects of the languages which are most relevant to my needs. Which, at the moment, is to learn how to really arrange the basic functions provided by Sagemaths system and to use them coherently to solve the problem at hand. It involves automating certain aspects, making new functions of my own and to be able to Create New Mathematical Structures ( be they childish !) using the capabilities of the Python language, perhaps using the Object Oriented Features of the language.

As learners and being the children of Internet, we have soo many options and alternatives to help us learn something.We can use lots and lots of ebooks, videos, blogs and even podcasts which people have so graciously put up on the Internet.

Though there is a flipside to Internet as well, it makes us too vulnerable to drift off, to some movie, some social networking site or, I don't know, a million things;)

But to be able to use the Internet effectively we must Take Control !!

Take Control of our time, of our attention and of our need. Simply put, it's like learning to meditate in a Traffic Jam, difficult but definitely useful and doable.

I mean, it's not as if we can't imagine a world without Internet or something, just switch off your phone for an hour and stay away from all such devices, you will notice something pleasant. As far as I am concerned, I wish to use the Internet as an extension of myself, something that helps me fulfil my needs and a means to get to an end, though to be honest, the impulse to drift off is just too overwhelming sometimes. But No Drifting is my motto on the Internet.

The list of resources for each language(and Emacs) that I promised in the last post are listed below. I don't follow each and every resource mentioned in the list but a just the ones which I find to be relevant and, to be frank, I generally follow of the practice of Minimalism and being Unbusy. Being entombed in clutter would be Nightmare, don't you agree ?

So, based on my own priority order here are the links for Python.

Problem Solving with Algorithms and Data Structures

Invent wIth Python - Problem Solving with Algorithms and Data Structures

Invent With Python - Hacking Secret Cyphers with Python

How to Think like a Computer Scientist

Think Python

Official Python Documentation

The following are the links which offer a great introduction to the Language and the Possibilities.

Snake Wrangling for Kids

Invent With Python Main website

A Byte of Python

Learn Python the Hard Way

The Standard Python Library Ebook



Don't forget that you look up various ppt's on the Google search; these often turn out to be quite helpful for a quick overview of what we want to learn.

Julia

As I have mentioned Julia language in the previous post, I am gonna skip repeating the introduction to the language. But in the past couple of days I have explored it further and it has made me only more exiting about the language. And there is another benefit in learning this language, you can enter a virtual apprenticeship in this awesome community. The language in itself is quite simple and much like python but only more lovelier. Though young, Julia offers us an opportunity to witness how an ecosystem really grows and most of the library of the language being written in Julia itself makes it all the more fun to explore. It would be a fun language to learn !!

The Official Julia Webpage

Now, why would I learn a language which is similar to the one that I already know ?

Simply because, I find that differences only highlight the similarities in two things. It's all a dialectical process. I find that the best way to learn something, know it to it's bare bones we must learn something similar to it. Differences don't necessarily have to mean "better" or "worse" but just that it is different. So, I tend to use this two-similar-things method a lot. Be it with Haskell and Lisp, Vi or Emacs or even with Python and Julia both are on my to-do list.  To put it simply I try to avoid excluding things ( this Or that !) until it's absolutely necessary and it offers me something better. I like Dialectics;P

Emacs

If you like Vim more, then absolutely no problem. Actually there are two legendary text editors in the programming world and both were incidentally launched in the same year, about 30 years ago !! Can you imagine something else like that in the computer age ?

So, rest assured that they have been tested by time an they are on the top of the evolutionary selection cycle. Pick either one !!

I prefer Emacs more as it comes with a LISP language of it's own and I am just fascinated by LISPs so that's a more intriguing editor for me. Though the language has been outdated in many respects but still brings a feeling of nostalgia in my mind. I like it !!

Here's the list of resources that you would find extremely helpful in mounting this beautiful stallion;P

Mastering Emacs

Emacs wiki

The Magnificent Emacs - Orgmode

Official Emacs Resources

A couple of blogs, you really should check out.

Emacs fu

Introductary Videos


Haskell

Now, we come to the language that is the strongest and the most beloved of the modern LISP or more accurately Functional Languages. Haskell, unlike most other languages is beloved by the industry and by the academia as well.








R

R, as mentioned in the last post has become a de-facto standard for everything related to Statistics and Probability. And I would like to be able to explore and understand these aspects of Mathematical Analysis better. Here are some links, to help you get started as well.

Official Page

R - Tips

R for beginners

Statistics with R

So, get started with a book. Skim it at first and then go through it thoroughly in an organized way. In the meantime, I am preparing the content for the future posts and working on how to really structure programs, as opposed to using just the basic functions in Sagemaths, to explore Mathematics.