Thursday, December 31, 2015

Happy New Year=)

Hi Guys!

It's been a wonderful year for me and when I look back I see so so many things which wouldn't have happened if it was not for this blog!

Blogging about things I love, things I am exploring and keeping everyone posted on my experiments and adventures gives me a lot more motivation than just scribbling thoughts in some journal, though I do keep a journal;P

I have been working day and night on things which I decided to learn this year and as this year passes by, I find myself diving even deeper into the toolkit and yet again, somehow everything seems to fall in the right place.

Right now, I am working almost exclusively on JavaScript with some combination of Jupyter for documenting the entire process but I love CoffeeScript for the sheer cleanliness of it's syntax. I keep experimenting with the UnderscoreJS library and this past month or so. A wonderful resource for JavaScript libraries that anyone dealing with the Web would find useful is JavaScripting.

You know, I used to think that even sharing the slightest bit of the idea with anyone would lead to a "rat-race" like situation but as I read from the ones who have "been-there-done-it" already, I am learning to become much less paranoid about such possibilities.

So, I'd like to tell you guys this much that what I am working on can compete LinkedIn, YCombinatorAngel.co and even some portion of Kickstarter! And trust me, I can pretty confidently tell you that if I work hard then I can pretty much retire by 30.  All this involves a heavy ( "heavy!) use of Visualizations as well. And that's my dream, to retire and live a life like Tim Ferriss - do every freaking thing I can dream of. Of course, as I summarized in my previous post - I am absolutely in love with Physics, Mathematics, Linguistics and Computers but hey, these are all intellectual pursuits, aren't they. And if I were to stay limited to only these then would I have truly lived at all?

I think, that's not a good life, sure a dedicated life but not a good life. My idea of a good life is to achieve my full potential as a human being, something that agrees with my values. So, as you know by now, that I am big on Music, Exercise and Arts, so then why would I limit myself to only the Intellectual Pursuits. I love to write and I have a few interesting ideas which I plan to put down on paper. So, yes - I am happily busy;)

Wish you all a very Happy New Year!

Monday, November 30, 2015

Doodling the Obscurity Out!

This blog started with the intention of redefining the way I understand Mathematics and approach Problem Solving in general. The Magic Wand of Programming has always been a faithful companion by my side;P

I do realize that when you read the recent posts you might think that Okay, this person knows how to code but that's not really the case - believe me, if you want to know the story behind all of this the pull up the very first set of posts I ever posted on the blog.

All, you'll find in these post is someone who is foolish enough to think that with a computer and an internet connection ( and a Lot of HardWork/Fun ) he can take good strides in catching up with the Frontier Men of Sciences. I am quite happy to still believe in this Mission of mine as I have poured out my dreams in this post - What if...? 

After reading so so many manuals and tech. books this year, on my own as opposed to the ones which were just imposed by the Education system, I started to look for different way to Learn Faster and exploring Memory Techniques, Visualizing et cetera - not to mention that this is also due to my other Great Passion which I blog about over at The Talking Apes, which too involves learning Huge number of things pretty quickly. So, I was genuinely trying to explore and understand my own learning style and how can I make the entire Learning Curve all the more fun.

I have found that it all points back to the Arts, to be Creative in the complete sense of the word. Arts and Science are so intimately related that a lop-sided education in either side is nothing short of a betrayal of the entire Purpose of Education. All it does is to convince people that they should be comfortable Walking, or worse still Crawling when they can Run.

As you probably know, if you have been reading my scribbles over here that I am learning Harmonica, Music Theory and Sketching as well. So, it's not all about programming and coding in my life - quite the contrary. Any problem I get stuck at Solves Itself, while I am engaged in another Creative activity like just humming out a tune or doodling a sketch and suddenly the Aha Moment happens. It's one of the most amazing feelings to have, I tell you.

Over the upcoming posts, have planned about 20+ of them, I am gonna explore and talk about my ToolKit which is The most important part of anything and everything which I wish to make, understand and explore. There is Tons of learning to come and I am actually looking forward to it eagerly but how can I make most of what I learn?

Of Course, by doing things, building things and using the knowledge real time. But there's another aspect to it, isn't it? Learning and Remembering things. I have found that there is this wonderful things call SketchNotes which I have become a huge fan of.

After being  mesmerized by this SketchNote techniques, which came my way via Sacha Chua's wonderful ways of doing things. There are many examples over here at SketchNotes Army

I doodled my very first Sketchnote only yesterday and it was initially with a Pencil and today I finalized it with a Pen. Isn't this a wonderful way to revise what you have learnt, I literally could remember every word of the TEDtalk I SketchNoted. And no, I don't think I'll be uploading it soon over here as I need to take care of the look and feel of the Blog first and then get the hang of the technical side of things of uploading content on a regular basis. But, soon enough, you'll start seeing doodles on the site.

Three programs which I felt compelled to add to my ToolKit are Inkspace, Krita and GIMP which will help me digitize my notes, which eventually will be the way I engage with Higher Mathematics, Linguistics and Physics related stuff over here - but that's probably a couple years in the future. First, I concentrate on refining my ToolKit and Learning How to Learn. Not to mention that the StartUp, I am working on is gonna be a huge part of my life all this time as well but I'll learn to manage things properly.

They say "Magic happens outside your comfort zone", I believe it from the bottom of my heart.

Tuesday, November 24, 2015

Take the Leap, Sage

I sincerely wish that SageMath makes the switch to Python3. It's been long postponed now!

This, believe it or not, is one of my wish list for 2016! 

Wednesday, November 11, 2015

Demystifying Bokeh

Bokeh has rocked my brains for well over a month now and finally I have achieved that mythical moment of Epiphany and have deeply realized that it's nothing too difficult once you get your your head around the structure of the entire Library.

Basically it's just Python and once you understand the basic structure even a newbie programmer like me can play around with Bokeh and create awesome visuals for the browsers and IPython ( Jupyter ) notebooks.

Apart from the importance of Reading-the-docs, the real complexity of the entire thing arises from the fact that it's an intertwined pearl which deeply complements the other PyData stack. 

It's nothing too difficult to grasp, nor is it something which requires extensive knowledge of the Web Technologies at the very core - it's just a bunch of interactive lines on the page. The beauty being that we don't have to deal much with the JavaScript technology explicitly 'cos Bokeh does it for us.

Other components like Pandas, NumPy and Matplotlib, even Seaborn tightly integrate with Bokeh and to really improve at Bokeh and Visualizations in general - the rest of the Team-mates can't be overlooked. 

A Great playing ground to develop visualization skills is, of course, Matplotlib. The same being true generating Numbers for these visualets is NumPy and to make this data in an organized way we need to understand Pandas as well.

The Epiphany Moment, I talked about earlier was the fact that we can make all the plots in Bokeh using the [ bokeh.models ] subset of the entire library rather than relying on the High-Level and less customizable [bokeh.charts] module. Seriously, there is so much blood,-sweat-and-tears behind this little realization. Only later was I able to really create some useful plots. Just in time 'cos my exams are right around the corner=)


P.S - I am gonna lay low, the exam cops are on patrol again;P

When I come back I promise that there would be tons of Great Content and more learning stories I have planned. This last month has been one of the best ones in terms of the sheer amount I have explored and understood about various fields, ranging from

JavaScript
Python
Julia
IPython
HTML5/CSS,
CoffeeScript/Less
LilyPond
Haskell, Euterpea ( Computer Music )
Emacs
LISP (Scheme/Racket)
Web Scraping
Atom

I'll soon write up a Bokeh getting-started-guide as soon as my exams get over, probably by the month end.

Monday, November 9, 2015

More of a Reader than a Writer

I took it so lightly when they said " Most of the time you'll find yourself Reading programs rather than  Making them ".

One of the most prolific understatements I have known so far;P

Saturday, October 31, 2015

The Minimalists

I am sure that I have told you many times that I just love this siteThe Minimalists . I am literally learning tons from each and every article. It's a way of life, a way of thinking and, for me, a way to live more - to be more alive and be more aware of what I have in my life.

As a Student of the Arcane art of Programming, I thought why not have my own personal version of the Site for off-line reading. So, as I have lately been doing much study regarding Web Scraping I thought why not experiment with having the Awesome Blogs which I read often.

Fast forward a couple of hours, I had a set of 424 text files which have the text content from the various native blog posts on The Minimalists;P

Actually, it was a great experience and in the process I have learned :-

> To respect the site by slowing down the spiders ( robots/crawlers)

> To look up the robot.txt, to find out the explicit permission for crawlers

> How to avoid walking down the rabbit holes, something I am starting to be aware of in my nature.


Things which still need to be done as far as my Scraping skills are concerned :-

> Actually converting and formatting the text files to a proper, Nook-legible PDF ( or other formats ) perhaps via LaTex using the PyLatex Package.

> My Code still doesn't inform me whether there was an Image or a Video on the page, or whether the page no longer exists. Minimal intelligence might make for a better crawler, in any case it'd be far less unsophisticated than what the professionals use - think Google, Baidu et cetera.

> My Code isn't quite sound, it is still more like code-and-throw-away kind. For example, I am not really using functions which are well designed and which would be a step towards Reusable Code.

> I'd like the content to really look like the way it's should. Right now it's just the bare bones txt files, where as a bit more sophisticated PDF makes for a pleasant reading.


Next up - Text Processing, LEVEL UP!

Fight-o;P

Sunday, October 25, 2015

Carrying it around?

Rewind a couple years back, I was really a sucker for "Buying the Books" and having to carry them with yourself All-The-Time!

Not so much anymore 'cos basically anything that I might possibly run into has already been solved and documented on some forum on the Internet, To quote Sherlock Holmes " There is nothing new under the Sun", then why would I burden myself with so much physical luggage.

Yes, I do understand that the feeling of a book in one's hand might seem more real and if I am doing some non-technical reading - I'd definitely look for a physical book as well. But, from what my experience so far speaks, it's that most technical books are like written Sheet Music, of course you care going to benefit if you read it all thoroughly, personally I am more of a learning-by-doing kind, I need to play out that Music on an actual Instrument.

I need to do experiments to learn something, I need to make silly mistakes to learn and I need to be able to feel what a understanding of the subject would look like!

For the Programming,  Mathematics and Physics related books, I very much prefer to have them in a digital format and, of course, a good internet connection to overcome the speed-breakers that I often run into.


Friday, October 23, 2015

Internet - A Gigantic API

Web Scraping is becoming a passion of mine. When you come to think of it, it involves much in the ToolKit, say, Language Processing, Databases, Regular Expressions and so on and so forth.

Isn't designing a spider much like designing a miniature software with it's proper set of variations, specifications and even Testing/Debugging as well?

Besides it just feels good to know that you can only automate this long and dreary Ctrl+S process once you really understand the website!

Of course, this improves the know-how about the Internet and what are the ethical boundaries of automating things and when we might be harming a website/server.

You know, while we are talking about generalizations - I am definitely a Believer in Python and it's sheer popularity in the programming world. Chances are that if you have a programming problem it has already been taken care of, by some library.

Seriously people, one can learn entire computer science course from Python only ranging from the typical "Intro. to Computer Science " to " Digital Image Processing" and "Cryptography" courses.

For some reason, it seems to be against Basic Human Rights, to make Education Fun!

[Edit 26-Oct-2015 ]

Doesn't feel right to end anything on a negative note, so I am gonna rephrase this one -

" Eucation is one of the Basic Human Rights, why shouldn't we make it fun? "

Monday, October 19, 2015

Fast and Furious learning curve;P

This past month has involved a lot of coding in Anaconda scripts and I genuinely liked the coding part. I had to juggle through all three major platforms - Windows, Ubuntu and MacOS

Trust me, without the wonderful Anaconda ( no, not the Snake silly;D ) I wouldn't have been able to do anything at all. 

I relied on Anaconda for Scraping, Visualization and dealing with various Data formats. In the process I realized over and over again that not being able to deal with Pandas and HDF5 formats was a huge hindrance for making progress, actually I am barely at peace with CSV files leave alone the complex ones.

But, no worries. Anaconda/Jupyter/SageMaths are things which I would love to Master anyway! I obviously see myself using them for a long time in Future. 

For visualization part, I focused on Bokeh but soon realized that the kind of skill level that the task asked for, was still a few miles away so I explored another wonderful option which is Plotly. I kinda experimented a lot with Plotly and somehow had the Visualizations working on a real-time basis. I see a long road ahead though and I find the journey exiting.

Curious person that I am, I tried to use Plotly with Julia as well but as Julia recently hit 0.4 versions, I think it affected the compatibility between the two. No, surprize there though - Julia is moving fast and is constantly evolving;P

However, it would have made things a lot easier for me - as Pandas don't have a counterpart in Julia and any CSV file would have done just fine in this case.... Well, moving on)

Another thing, I look forward to in coming months is JavaScript - not only the Visualization part but the language itself. I see that language everywhere and of course, there was a lot of HTML and CSS code too, so I think by the end of this learning curve I'll start seeing the Rainbow in this Digital World.

Sunday, October 18, 2015

Python, Julia and JavaScript

I have been dabbling so so much in Python recently and, I see the other two coming up pretty quick in my life - I guess, I do love Interpreted Languages a lot;P

You know, it might seem that I am getting good with Python and having a deeper understanding of Computation, in general - for some reason I can't believe that's really the case.

Sure, I am getting used to various libraries in the language and how to solve problems by thinking within the language but I am yet to use classes properly, yet to use the various awesome features of these languages, so on and so forth. In short, as of now I am only getting-it-done-barely and there is still not a shred of Beautiful Code in my coding.

Nor have I really taken strides as far as my comfort level with Emacs or Atom or the Zsh is concerned. I've been using them here and there for sure, but I think Being Good at Coding is more like thinking like Sherlock Holmes, there are many many ways to do things but there's a short, sweet and clever answer as well. I just need to notice!

In any case, I am happy that Python is really becoming my Mother Tongue in the world of Programming.



Friday, October 16, 2015

Sit for Interviews, nah...!

I know it has been a while since I last posted but believe-you-me, this month has been the busiest one so far, and perhaps the most decisive one in this year. 

I have ended up becoming a co-founder for a StartUp;P

Yeah, it's that exiting and it's all the more fun for me 'cos over at the University my batchmates are sitting for their Interviews with all the jargon that comes along with this thing. I might actually be taking interviews by the end of this year!!

Actually, it just came about in quite an unexpected way as they just sort of told me about this idea a year back and it seemed "different" but certainly not outstanding. But this year, the topic came up again and as I was working on using the BigData and visualization on my college project this year - I suggested why not look into visualization.

Then we thought along this line for a while and eventually they really liked the possibilities that this little thing opens up. So, after a couple of weeks I ended up meeting a couple of Mentors and Investors ( from US and Japan respectively ) regarding the Idea. I have to say that the reviews were awesome! Especially, with the fact that the Japanese apparently don't really give way to emotions this easily or so I have been told;)

You know, I feel quite happy about it all . Remember that during the course of this blog I explored Data Scraping as part of my attempt to learn Songs, of course using Python and Anaconda environment. Guess what?

The experience came in handy for the current StartUp project I am working on! This time I had to take it up to a whole different level and, again, things just fall into place for me. I am really starting to believe in my Gut feeling, you know. It has never led me wrong;P

Will keep you guys posted on the latest happenings,
Stay Awesome!
Change the world for the better=)

Sunday, September 27, 2015

SMC's moving fast!

Hey, have you checked out SageMaths' development recently - man, everything is moving so so fast!

Check out this list of courses which are using SageMaths for their courses this Fall. It supports Jupyter and Numba as well now, with a much tighter integration. Well well, aren't we falling behind - makes me happy though.

And then there is all the more reason for being happy Nemo has shown up in the block and it's all in Julia - I am absolutely in Love with her)

Yeah, this is a Good time to be alive;P

Friday, September 25, 2015

What if...?

Hey, I have been flirting with the idea about really writing about things I don't know and I have definitely been inspired by Sacha Chua's brilliant advice

You guys already know that I am big on Stargazing ( a rare breed I know;P ) but, honestly, I don't why is it that looking up always get things in perspective. It's one of the most baffling things to me that People no longer really look up! 

I mean, there is an infinite space, beautiful beautiful artwork out there and we are kept too busy staring at our tiny little screens that we completely overlook it!!

But anyway, I think the best way to learn and direct all of my efforts in using and really understanding Programming and Mathematics should be towards the Stars and Languages. There is just something really really mysterious about these two that, I truly believe, sets Us apart.

Big Questions, no? 

Sure, these are a good complement to each other when you come to think of it. The Stars represent our search for that something More - on the outside and the other one, Languages, really represents the great search for More - on the inside. 

Perhaps, the best way to really learn Physics and Master the knowledge is to use it actively - there's a book brewing in my mind based on the very fundamentals but perhaps with a little more imagination added to it. It would only be in terms of Stars.

'Cos when we come to think of it, this is a damn good context to learn each and every nook and corner of the our Knowledge of Physics, no? From General Theory of Relativity to Quantum Mechanics - it's all in the cosmos, isn't it! So, perhaps a few years down the road, this is what you can expect from Sagematics.

And believe me, there is a lot more out there ( and in here) than we can possibly imagine! Waiting for it's own Columbus and it's own Einstein.

Thursday, September 24, 2015

Concept Maps

Finally, I sat for the last of my exams today and I guess it won't be long before the time for End-sems draws near. Anyhow, it's a Great Great relief to sail through these storms;P

For most of my work, I haven't made any progress apart from roughly estimating that at the current rate I won't be able to complete any of the projects that I have mentioned in my To Do list!

But, no worries! I believe that it's more about a rhythm and, of course, a certain amount of Discipline that one needs to follow to achieve anything - so it shall all be completed. Breath Easy, Breath Easy;P

I think, it's just these exams which put all my resolve and drive into a Big Snooze. Trust me, end of exams is like a breath of life for me.

Oh, I have been exploring new methods for brainstorming problems and I used it for the first time in my current project and then again in another project which seems worthwhile my time - the second time around I used it to attain a good conceptual understanding of the concept.

Obviously, I used Pencil Colors to do it all and as much as I love technology - I just love Paper more. It just makes it all the more fun to be able to use my hands and to even smell the paper. I love playing around on Paper.

Btw, you need to explore Mind Mapping as a tool for learning and improving your understanding of any subject matter. It-Helps-A-Lot plus it makes the entire process a lot more fun than just using linear lists all over the place.

I'll definitely be using them a lot more for my projects and studies in future.

Thursday, September 17, 2015

Are We numbers?

" Big Data is the Next Big Thing"!

I keep hearing this thing over and over again. From people - online and offline! 

But, I find it somewhat confounding that the with all this data coming up from the various web-sites we have ceased to be unique individuals and have rather become "Data" which behaves in a similar fashion, something that is to be analyzed and understood, Normalized so that all the anomalies are ignored or made to fit in the overall analysis.

My feelings, as of yet, are mixed regarding this trend. But one thing is sure that, Visualization is something I truly enjoy.

Perhaps, they should start teaching Programming purely on the basis of visualizations - wouldn't that make programming and computers more approachable. 

Wednesday, September 9, 2015

Atom!

As I dive deeper into the world of the Internet, with a general map of the terrain, I find that JavaScript is quite important plus the fact that there are so many dedicated libraries for it and JavaScript being somewhat of a shapeshifter when it comes to adapting to changes makes me certain that this is another language that I need to be at home with.

On my Ubuntu Desktop I have done two major changes regarding my ToolKit

> Using ZSH instead of the default BASH - Zsh has the reputation of being the Programmer's shell plus I am just so affected by all the enthusiasm it builds up. Look up oh-my-zsh on GitHub and it's main web-page Oh My Zsh. I rarely use the shell, apart from changing permissions of the directories and just renaming stuff - stuff which can easily be done using Python. But, if there's any shell that makes by feel exited and joyful, it's Zsh. I'll much rather invests my time doing what "feels" right. Always listen to your instincts - Mine have Always led me right.

> I have explored GitHub's Atom and I like what I see, especially the kind of momentum and excitement it has managed to generate. My instincts tell me it's gonna be Huge, just like Julia. The shift to this Text Editor ( for all Web-related work) was triggered by the fact that I wasn't really able to get the JavaScript NodeJS platform working on my Machine. So, I explored a bit and found that Atom is itself built specifically for the Web-developers, plus it's entire birth cycle has proceeded with such a blazingly fast speed that I know it's gonna be irresistible in future.

What about Emacs, you ask?

I think that, there is much Code-Reading involved in my future so I might as well be comfortable with a couple of Text Editors. The three Text Editors that make all the sense in the Coding world to me are

> Emacs
> Atom
> Notepad++

These are arranged with decreasing level of complexity. As far as Emacs is concerned, well if Notepad++ is a handy knife, Atom being a good Swiss Knife - Emacs is the Cook;P

And there is this wonderful relationship between the Web-Technologies ( JavaScript driven ) that quite resembles the relationship between Elisp and Emacs - Quite a Harmony;P

I love the fact that I can type in multiple languages within Emacs ( say Japanese or French ) and even play the game of Go in Emacs. Emacs and I - the world is a better place for me.


Sunday, September 6, 2015

Beethoven and Python!

Imagine if Beethoven [ Or Bach or Mozart ad infinitum  ] had access to programming and the sheer potential of today's Computers. It's my unfaltering belief that they would have amazed us still and would have pushed the boundaries of how we think computers can be used and what is still possible with them.

Actually, I am quite interested in learning Sheet music as I am improvising things on a smaller Keyboard so I thought in addition to learning good finger movements, why not learn the Sheet Music as well!

I believe that the best way to learn something is to Do-It-Myself;P

So, I looked up the internet for sheet music and wondered that perhaps that there's a Python library for dealing with music. Luckily, I came across The Mingus Library over at GitHub and as I have worked up to GitHub and it no longer seems to be the exotic beast that it used to be, I was quite happy to search for more of such libraries and I did find a bunch of them.

I have listed them towards the end of this post. But on searching more I found a couple more interesting libraries or say projects which are dedicated to Music. Two of the most notable one's are

chucK Language

Jython Music - Creative Programming

Hey, have a look at this TED talk from the maker of chucK langauge. This is what I find creating value and this is one of the most original ways to Program with a vision.




An interesting thing that happened via Mingus is that I followed through to Lilypond which was mentioned in the Mingus Documentation.

But there is a slight Hiccup, I wasn't able to get Mingus working with Anaconda. Though Lilypond is working just fine. Actually, you can think of Lilypond as LaTex to Music. It produces beautiful printed music.

Music Theory for Non Programmers

As I was just curious about Music abilities of Python and I ended up with a quite a few libraries which address this need ranging from getting the meta-data related to the songs ( artist, length et cetera ) to in-depth analysis of the Audio files.

Of course, I am yet to sort out carefully through these files but I believe it's a good way to keep things in mind to blog about them. Anyway, as I discover more new stuff and sift out things with are useful for me - I shall keep you posted.

Melopy

Tinytag

Unroll

Python Course 

Ajax Sound Studio - Pyo

Python Musicbrainz Bindings

Librosa

Pykon

Soundcloud Music Downloader

Music Theory in Python

Symbolic Music Composition Library in Python

Online Radio Music Player

Audio and Music Synthesis in Python

Simply Music Synthesizer

Learn Music with Python

Music Machinery

Algorithmic Music Generation

Computer Aided Musicology

I haven't been able to write much this past week as I am quite pre-occupied with the University Project I am working on. There have been a few hiccups but I have persevered through them;P

By the way, are you keeping up with Julia - you really should. I think, I am definitely gonna write a package for Julia based on my learning experience with these libraries. Of course, I don't expect to work miracles but I know that it's gonna be a great learning experience. That itself makes it all worth for me.;P

Monday, August 31, 2015

The Web!

As it turns out, there is this one overlap of interests between my needs and my University studies this semester - Finally!

This semester, I have the subject " Internet and Web Engineering" which aligns quite well with one of my goals regarding the JavaScript, CSS and HTML5 exploration which I need to accomplish many goals like - Understanding the Browsing experience, the How of Internet and most importantly to improve these blogs using the knowledge that I gain through this experience. Renovating The Blog has already been on my ToDo list for a while now.

I haven't made any progress on any of the projects which I have outlined in a previous post - been quite busy with the University project. I have learned quite a bit about the data formats and made good acquaintance with the wonderful Bokeh library, realizing in the process the areas which I need to work upon like improving my understanding of Web Pages, especially JavaScript.

With in the University project I have explored HDF5 data storage format and of course, for the time being I have switched over completely to my Desktop ( Ubuntu ) environment.

Right now, I am working on the various API ( Application Protocol Interface ) which is basically related to the Facebook " Like" button you see all over the Internet! But in my case, I need to use the Twitter API and then use the NLTK to analyse the overall emotional tone of the Tweet.

Apart from this, been doing a bit of exploration in the world of Python and I found a few interesting libraries which are related to Music - Python is definitely my Mother Tongue;P

Will summarize about these Music Libraries in the next post!

Tuesday, August 25, 2015

You can run but you can't hide - JavaScript !

Yup! JavaScript is one thing that keeps coming up everywhere be it GeoGebra, Adobe Acrobat or The Internet. The "public opinion" is much divided whether the language really is worthy of having the status that is accorded to it.

But putting the multiple criticism aside, when I  think of what JavaScript would enable me to achieve is enough for me to go through with it anyway.

Things like,

** Being able to control the behavior of my Web Browser, especially in light of the countless advertisements and pop-ups I am bombarded by every time I wish to surf the Internet. Seriously people, Wayy too many useless ads on sites these days!

** The ability to able to code with absolutely no Environment-setup is a definite plus point for me. I would love to be able to Own the Web-browser and the be able to solve problems, experiment with various approaches even when I am on a computer as a guest or say, on a Computer which is not quite up to date. Another reason in Favor of JavaScript!

** It's a good skill to have, I wish to be as independent in future as possible so working on putting up a web-site et cetera is easy as well as a desirable skill. Plus, I get to improve my own blogs through this experience.
                     
                              Well, I think this is another reminder of the promise that I made to you guys previously. About giving this blog a good upgrade, a bit of personality.

** Being able to experiment with zillions of JavaScript libraries like D3.js, Node.js et cetera for visualizations and then to port those ideas over to Anaconda Scripts is another way to improve my skills in Python.

I truly believe that understanding the Internet is only going to help my cause in Future. I need to understand how the Internet works - It's gonna simplify my life to no end. There is no escaping the Internet, why not own it;P

Though I am not entirely unaware of the fact that Internet is an ocean of Technologies so there would always be so so many things that I don't know but with JavaScript literacy I would be able to learn new things in a more effective way for my purpose.

Again, the PURPOSE is to be able to do Mathematics and Physics with Computers. Not once have my conviction wavered and I assure you all this experimentation is gonna end up improving my computer literacy manifolds. I don't have time to go through all the exercises in a Mathematics books, the same is true with the Physics books. My solution - grasp the concepts and always aim for tough problems which are an intellectual challenge and help us consolidate the knowledge that we have earned through the theory by practical application. Fast and Elegant solutions - all done at a lightning fast speed by my buddy Computer.

As Richard Feynman said :-

"What I cannot create - I do not understand !"

Implication being - " Know how to solve every problem that has been solved". 

In this age, in our times , it's not about manual labor - it's about the sheer Creativity that we can unleash.

Oh!

Good News, I have switched over to the LINUX computer, at least for the length of this project. I think, I am totally gonna have a LINUX Desktop in future, with a Mac book Pro as my Working environment. That's the environment that suits my believes and my working style.

I am soon gonna start posting these posts from within Emacs. That's one piece of software that surprises me continuously. Totally in love with the Emacs and Elisp. Looking forward to getting back to the

P.S. I notice that being able to change things, programatically does make one, more of a control freak. All the same no, "With Great Powers, comes Great Responsibilities";P

Sunday, August 23, 2015

Approaching Complex Problems - Break 'em Down!

As you guys know, I am attempting to make a full-fledged Beast of a Program right now - which sort of provides me with the Opportunity to put into practice the various parts as a coherent whole.

I have made progress along the lines of Tools that I would be needing as well as the Resources ( web-sites for the statistics) that I would be needing to build the final visualizations upon. As I have, mentioned a few times in my previous posts regarding Data ArtistsI think that when we are able to See what's happening in that obscure world of numbers - we are more into our Zone. I have come to believe that if there is one thing our senses excel at ( unless deliberately trained ) it's the sense of Sight. So, I am doing my best to try out my hands with Visualizations.

Another thing that I have learned from handling this complex a problem is that it is best to chunk 'em up and then approach the little problems, solving them as we move towards other parts of the problems and then, once we have the working prototype of a solution - Combine them into an Organism.

Basically, the end result of all the effort that I put into this project is a bunch of visualization on the HTML using Bokeh, which you can have a taste of in these Jupyter Notebooks.

I think, it's as true for Problem-Solving as excelling at any physical activity that involves learning a new skill. Ever seen someone who just "gets it naturally" once they have seen it for a while?

Call it Beginners Luck or Clear Mindedness but I am starting to believe that the Master sees a number of parts done right, pays attention to the minute details whereas the Student can only see the rhythmic whole. There are more levels of Beauty for a Master.

I won't say I am a Master yet - but that's not to say I won't be one;P

Saturday, August 15, 2015

The Windows of Opportunity - Act 2

The thing is with my current University project, I would like to use the tools that I have been working hard for the past couple of months and I am gonna use the experience to improve my skills and confidence in Programming ( as well as in my Tool-Kit ) by tackling tough problems.

As of now, the project seems to be heading towards the direction of Text Processing- Visualization - Data Fetching and Of course Statistics to analyse all that Information and ultimately to find a meaningful way to visualize that data.

It's for that end part of the project that I seek to go through it all - Visualization. Remember my post about Data Artists and Visualization? Yeah, I get to experiment with it all on my own.

However, I am aware of the fact that the time I am gonna invest in this project would have to come at the price of other projects that I wish to complete this year. But, all in all - I think that this is a brilliant opportunity to push my boundaries.

What I seek to learn from the project?

I think, that I won't have the opportunity to work directly with SageMaths ( Just had a Major release btw, check it out ASAP ) but I would definitely be writing a lot more Anaconda Scripts.

I don't exactly know what libraries I would be making use of, for the project but so far these are the ones which seem highly relevant -

* Pandas
* NumPy
* Requests
* Beautiful Soup
* NLTK ( Natural Language Tool Kit)
* Lxml
* Bokeh
* MatplotLib

Apart from these, I have no idea about the what other stuff I might have to look into. 

I doubt it very much that I would have the opportunity to use Emacs or even other programming languages in any way but I suppose that I am gonna learn to really handle Real-World programming problems and get to Be Creative with the way I choose to Visualize them.

Through the project, I aim to learn Text Processing i.e. how to use the standard Text Processing tools that Python Library provides and Regular Expressions, along with NLTK which would be immensely helpful in working with Human Languages - the project would consist of analysing sentiments from the text that has been downloaded using the various Web-site data clients. No idea, how to do that as of now btw;P Will learn, though.

I get to learn how to connect to web-sites, something which I have been exploring recently and how can I change that data to a form which would be accepted by the other libraries which are involved in the project. Thus ingenious solutions would be necessary, good challenge.

The total Lines Of Code ( LOCs) might be more than any other program that I have ever worked on. So, I might practice multiple file approach to build huge programs. Needless to say that this is gonna be a great field-testing for my experience with Git for versioning various levels of progress.

Again, this is not directly related to Maths or SageMaths but I do have a couple of Ideas at the back of my head which might be quite useful if I master the art of Text processing. Of course, once I do it in Python then it can also be done in Emacs and then again in LINUX once I switch to the Unix systems.

So, NLTK + Text Processing is the thing for me right now. My main focus for now.

Besides, I intend to present my work via interactive graphs - something along the lines of the Videos below. Bokeh is the alternative to D3.js which is pretty much the most famous visualization library out there - the plus point with Bokeh for me being I get to use Python (not Javascript, which I have no experience with) and I intend to explore the entire Computer world via Python first and only later move on to specific tools as the necessity dictates. So, with Bokeh, being a web-browser based technology I am gonna stay in touch with the Internet and how web-pages are structured.

Would take a lot of work for me to get them done but I aim to work hard and get it all done in a month!











One thing, that I am sure of now - I won't be using Chrome any more, it's so glitchy. Atleast on my WIndow7+ i5 laptop. It might be different on the Linux and on my Desktop but there is another factor that's moving me closer to Mozilla Firefox - it's Rust.

Nope, not the one from True Detective but rather it's a Programming Language which is getting quite a lot of attention these days. I find it to be better as compared to Google's Go language so that's that for me.  Anyway, I would like to leave the rest in the Expert Hands of Rust Cohle - Have Fun!!




Tuesday, August 11, 2015

The Windows of Opportunity - Act 1

Hey, I am super exited about using these Spells that I have been working on for projects! First part of this post is gonna summarize the history of the University project so far.

Actually, the thing is it's compulsory for the 4th ( and final year) students to work on a project in their final year - it's named the "Major" project. But there was already a lot of practice during the "Minor" in the 3rd year. So during the minors ( 1 per semester ), I gradually moved the project towards the languages, of course, human languages;P

The thing is there is so much that can be done with in this context. From a programming point of view this involves heavy text processing and, among many other alternatives, some heavy statistical analysis.

As my skill in programming weren't very brushed at the time, I chose to go with the Closed-Source Computer Aided Mathematics system, Mathematica. I absolutely loved Mathematica, especially the vision of it's founder and CEO who himself is pretty awe-inspiring. The other big name in CAM's is of MATLAB but the Mathematica people seem to be more active in arousing interest in the people regarding the endless possibilities of creativity in Mathematics, once the drudgery and fear of "complex" things is removed. 

I absolutely recommend that you have a look at the following links and would really encourage you to look up more videos by Stephen Wolfram and even to find out more about his background. One person, I find who believes in what he says.





Besides, the Mathematica language is being distributed free with Raspberry Pi systems. So, apart from the official trial period you can just purchase a Raspberry Pi and have a good go at it.

And, I don't really believe in "Camps" as in Mathematica is "Good" or "Bad" for such and such reason. But I would definitely look it up thoroughly and decide for my own whether it suits my purpose. 

If money is not an issue and you have only to do preliminary research with Computers and not willing to really understand how the internals work, then Mathematica is definitely worth looking into.

Hey, What about SageMaths?

Obviously, I LOVE SageMaths and I have no doubt in my mind that you are definitely gonna see SageMaths speeding up and innovating ever more. It's free and it's driven by people who are passionate about it. I would bet on passionate hobbyists any day of  my life. Stephen Wolfram is one person who makes his presence felt as the face of Mathematica and his visions for the possible uses of CAM software is mind-blowing. SageMaths is driven by people from all over the world, yup everywhere. Like Linux and Android - any innovation made anywhere would be a contribution to the system as a whole.

But the thing is, for that Minors I relied on the immense simplicity of Mathematica 'cos I only had a faint idea about Sage and wasn't really willing to code. Reason being, the University study is something I find to be utterly boring and it fails to inspire me at all levels - my main interest was to be able to work with Human languages, which is another one of my Great Loves

Needless to say that Mathematica made it possible for me to work up the project in a short time without investing much time into getting the know-how. I barely looked at the Official Tutorial 'cos most of the functions that I needed were built in, the visualization ability is breath-taking and it even suggested the commands as I typed them in. It was like something from the future to me, as I was totally ignorant of the progresses made to facilitate coding but hey, we are all crazy and stupid when we don't know something;P

So, the projects worked out good and I grew more confident with my programming skills)

But, apart from the project work where else could I use Mathematica?

The honest answer would be, nowhere!

Once you get addicted to this Closed-Source system you would obviously appreciate the programming challenges more 'cos you know there would be a function somewhere. But what if you are supposed to solve a problem, say on some programming competition or even understand the fundamentals of how the entire thing works - you would hit the dead end.

It's not about the FOR loops or even the IF-ELSE ladder that constitutes programming. To understand how the entire thing works one needs to be able to look under the hood i.e. the Source Code. Good luck doing that with a Closed-Source system!!

Besides when one needs to work on complex problems it's often necessary to optimize the code to use the full power of the Hardware, which again, requires an access to the inner workings of the system.


As far as Raspberry Pi is concerned, the official recommendation for the Magic to really work - Python.

Saturday, August 8, 2015

The Little Things keep us going.



My Haskell-Scheme-Magit project on Emacs. Isn't it just beautiful!

Though the color scheme can definitely be improved and so it shall be. It's the little things which we must learn to cherish;P

Friday, August 7, 2015

Emacs, LaTex and a Novel - A writer's paradise;P

Yeah, so these days I am trying to figure out how to handle LaTex from within Emacs. Actually I have taken up the task of porting over a badly formatted PDF, perhaps based on the photocopy of the original book, to a properly formatted PDF.

Besides this being a good learning experience for me with regards to LaTex and Emacs, I have an opportunity to explore how to structure Novels. How to really write completely non-technical documents in LaTex as well and how to format them in a way that they are legible in any ebook reader like Nook and Kindle in their respective formats.

I have a feeling that this would be an amazing learning experience for it involves A Lot of typing - about 350 pages of pure text material. Add to that the details of the structural formatting of the entire text in LaTex.

Of course, I am gonna be doing the proper versioning for the files but I am gonna do it via GitHub-windows client rather than the pure Git client. I am using the pure Git client along with the Haskell project via Magit. Keep an eye out on the To Do - 2015 post !

I will definitely provide you guys with the basic template for the way I structure the text but, as I am not the original author of the text I wouldn't be taking the liberty of uploading the full fledged LaTex source files for the book. But, honestly, I'll do my best to make the LaTex template AwEsOmE and as complete as possible.

I think, I am gonna rely on LaTex + Emacs system for most of my work in future as well. So, I guess I might as well start taking it all seriously.

Helmsman, Full Steam Ahead !!


Thursday, August 6, 2015

Keeping motivated

We decide to do so many things and constantly muse about being able to charm people with our skills. After all when we see people doing it, it all seems just so simple doesn't it?

But then why is it that when we ourselves do it, it becomes so confusing and so demotivating. How do they do it, how do they maintain their motivation?

I can't speak for everyone but I am quite sure that somewhere deep down, it's the same feeling regardless of what we are engaged, regardless of the mountain we are trying to scale.

For me, it's about being able to be serious like a child at play. When I loose track of time, I know that I have had fun doing it, it's such a rush when time blends into nothingness. But yes, there are many times when it becomes monotonous and even a drag !! 

For such moments, I just think about how I would like to be able to use that skill in future. I would obviously exaggerate my ability and it's effect in future and read about people who did impossible things. When this doesn't work, I would much rather imagine I am Forest Gump and I would go through it nevertheless. Try not to overthink things.

There is just so much that I don't realize about our own abilities, something that is common to all of us. We can choose to tap into that reserve of pushing-ourselves-forward no matter what.

When we really get into it, I think all the Superficial reasons (impressing someone or sounding cool et cetera ) fade away just like that. Think of it in terms of fuel, Superficial reasons can only get you started but to sustain that amount of intensity and dedication you have to look deep with in, be brutally honest with yourself regarding your motivations. The ability to persevere involves an honest introspection. 

Two things, I find, surpass that superficial stage - doing it for oneself and the best one would be, doing it for the good of others. I don't think that we have come this far in History because of a few notable figures who seem to have done impossible things on their own but it is all because of those many who cared for others. It's not a game of selfishness, it can only take you so far, I would call it a good fuel but not the best kind.

You want to reach the stars better start thinking in terms of positive contribution to the society but, no, there is ( I hope) no need for a world-soul and all giver but rather try to find a balance between personal growth and social contribution.

I would call the ability to stay motivated as Flow, because it is just that. You can read all about self-motivation on the internet and listen to the never-ending advice from people. But I assure you ,everything will fall into place if you are doing it for the right reasons. Reasons which keep you going no-matter-what. Find your own, don't borrow and don't imitate - find your own.

I developed one such habit on it's own - writing. I love writing down what I intend to do. And I would write my thoughts, my goals on the paper and forget the thing. Later on, I realized that this is something that everyone seems to advice for self-motivation but I would say live in Future, your present will make itself right on it's own.


Tuesday, August 4, 2015

To Do - 2015

I am gonna keep this list as a reminder for the things that I have committed to do this year, as in putting up some meaningful work up on this blog and adding a few humble drops to the ocean of knowledge on the Internet.


* Porting over the code

    ** From Hacking Secret Ciphers to Julia

    ** From How to design computer programs to Elisp

    ** From the Little Schemer series to Elisp

* Make a project Speed_Pi to complete that Personality to Numbers and to improve skill with numbers - Python

* Cormen et al - Lua 5.3

* Master the Emacs - Orgmode and make it a habit to type only in Emacs

* Master Text Processing with Python

* Complete a project using Haskell and Magit

* MATHEMATICS

    ** Master the High School and College level Matheamtics via SageMaths.

    ** PDF's modules to keep a track of progress.

    ** Make a SageMaths code companion for College Algebra book.

* Convert a badly formatted and aged PDF to LaTex (and PDF again ) using Emacs.

* Write a program to based on Text Processing and keeping tracks of new words which I come across.

There is just one driving thought in my mind this year - To give my hundred percent and to look back at this Miracle year with pride. And it shall be so!!

A bunch of Lyrics

Hey, remember I mentioned that I am doing something with Requests and Beautiful Soup - Python Libraries.

Well, actually I was working on Anaconda scripts to download a few lyrics to songs that I couldn't stop humming. So, I thought that instead of trying to copy-paste all those lyrics - why not make a program to do it?

Never mind the lyrics and the singer btw, it's a whole different story.

In the process I learned loads about structure of web-pages and how to examine their HTML code as well. And I wanted to save it all in a UTF-8 encoded file so it took me a couple of days but I managed to do it all right. This is an Anaconda script btw.

Before I put up the code let me tell you that you might need to change the :-

> Directory

> URL's

> Tweak the code some more if you wish to download FREE lyrics from other such data in public domain.

NOTE:- Don't get naughty and don't get into trouble;P







Wednesday, July 29, 2015

Not all those who wander are lost;P

So, as the title of the post suggests I am gonna give words to the Wanderlust that I have about various aspects of computing and, more importantly still, which areas are the most relevant ones to what I intend to do i.e. thinking Mathematically and solving problems.

In the previous posts I have of course, talked about various things that I am doing to improve my programming skills and to, just you know, understand what is important to me and how can I use purposefully to achieve my goals.

Now, at the fist glance text processing( via programming languages or editors) might not seem to be exactly related to Mathematics but when we dig deeper, no, rather dive deeper then we find these are all inter-related.  Take any single Mathematical problem for example, concerning any branch and we find that there are easy pre-built commands in SageMaths to do that for us. But what if we want to store our work simultaneously at a different place in, say text file and we want it to be able to have chinese characters (or any unicode characters) as well. Then we need to be able to manipulate that text file.

That is where the knowledge of Python language comes in!!

Sage, is a mathematical software and it's objective is to provide us with a complete solution to solving Mathematical problems, not so much the computer administration tasks or say doing file manipulation for us. That's the realm of text processing, for which I would much rather prefer to use easiest ways.

OR let us take another example still.

Say, we need to take in data from a particular web-site and then do statistical analysis on that data. The data-fetching part of the equation is of course related only to programming languages and the latter much more Mathematically focused part is the job for Sage. How are we to combine these two processes. Well, for one thing you can use Anaconda to come up with the solution for data-fetching and then you can save it all up in a text file and then you can use Sage to operate upon that data.

Text processing is central to my needs, I mean, just think about it, computers still aren't as adept at understanding spoken language and even less so at obtaining patters from images on their own. That requires and overwhelming ability of a Human brain. Think, a chef and a mixer and you get the idea.

But what computers are really amazing at is speed of doing things which they have evolved doing, which is textual data.

So, I have been exploring many python libraries and trying to figure out the inner workings of each one. Now I am more comfortable with many of them for example - The standard library, MatplotLib and SymPy et cetera but there are even more of them which I find to be useful.

I have used Beautiful Soup and Requests as well in order to get my feet wet in dealing with data-fetching and in the process I have improved my understanding of Web-pages and how the entire things works. Not that I am an expert by any means but I need to have Targets which combine many of my goals together in a coherent system.

When I think about it, it has always been so!! 

I never really felt like competing in programming challenges that happen all over the internet. Why?

The simple reason being, it never made sense for me to solve problems just for the hell of it or say improving my skill in a particular programming language. I had no need of programming at that time.

But I always was interested in Mathematics and Physics so when I came across SageMaths and when I felt that I am relatively free from any workload from University, I decided to dive right in. I think that it can be summarized in the following way, I never really thought that solving Cormen et al - Algorithms book would be of any practical value to me. However, when I think about solving Higher Mathematical problems then, and only then, it makes sense for me to become a better programmer.

Same is true for every other skill like LaTex or Emacs. I need to know why I am supposed to master something, I need to know the purpose of investing my time into something.

Becoming a good programmer and getting a "good job" is not really my thing. I am much more interested in using computers as Problem Solving Tools, in ways that interest me, intrigue me to no end. Having a go at Mathematical Olympiads would make sense (after a while;P ) but right now I need to be able to use the SageMaths tools well enough.

I know it's a bit dis-joint at the moment still but it's all making sense now.

I have always been this way you know, I need to see the big picture, to be able to paint every corner with all my heart and finesse. 

Why do I wish to improve Mathematics?

You ever look up at the stars any more! I do, everyday. They are the one thing that fascinates me to no end, it's like a dance of galaxies and at other times it all seems like a painting. Physics is the reason, I find immense beauty and satisfaction in the fact that this Cosmic Dance can be understood by such a tiny mind as ours. This feeling, for me, is profound. And to this end I wish to do Mathematics.

So, you see! It's a great chain which is tightly linked to every other portion of the chain.

Being able to use computers in ways which are relevant to my goals is the only reason why I would ever really invest my time in doing something.

Mathematicians of this century must be able to program and must be proficient at computers if they are to use this Magic wand to make the chores vanish. 

Saturday, July 25, 2015

Hacking Secret Cyphers !!

I have figured out how to get Emacs-Magit plugin to work on windows. It's quite easy really.

I had to go back a bit and examine my basic assumption which was that the Github's Git for windows which I downloaded was working just fine with the entire system. But it clearly wasn't as Magit wouldn't sense it. So, I installed another Git for windows client and tried to understand the functionality.

The Github's client is much more GUI oriented, though there is an option for the Git shell as well but I haven't been able to go much far with the Git shell till now as I lacked the conscience. But with the second client I was like a monkey on the control panel;P so eventually I used this one to initialize a Git repository in a folder and then I opened up the file in Emacs and tried the entire M-x magit-status thing again. This time it worked!!

Now, all that remains is to understand how to use Git via Magit 'cos it would be awesome to be able to just keep track of all the changes from within the editor.

Another thing being, you remember the Invent with Python website and a book called Hacking secret cyphers with Python. I wish to thoroughly understand the Python language 'cos from what I have explored within Anaconda and of course SageMaths itself, I think I am gonna be using Python for a long time to come. Btw, Anaconda and SageMaths have a great deal of overlap, with Sage actually being the superset of Anaconda with the added benefit of being dedicated to Pure Mathematics so investing time in both is only gonna pay off pretty quickly.

Now, as you very well know by now that Functional Programming is the most intriguing paradigm for me so obviously as a result I gravitate ever so close to Julia and Haskell, and a few others as well. But the main reason why I mention the Hacking Secret Cyphers book by Albert Sweigart ( who is awesome the way he put up such amazing books for everyone, Thanks Al;P ) is that I am planning to port all the code over to Julia language !!

I think that the best way to learn something is via somewhat "dialectic" method. No, I am not a communist;P . But just that I find it easy to remember things when I have absorbed the similarities and make a note about the differences. So, in the process I am obviously gonna be brushing up many undiscovered doubts about the very basics of Python and at the same time I get an opportunity to explore the Julia language. I don't know why but I feel in my bones that Julia is gonna be the Python of future, say about 10 years hence. It has that much of a potential !!

I am gonna use Emacs, Git and of course Anaconda towards that end and in a couple of months or so you shall have a "professional" [ I don't like professionals, really.] "Good" looking code, I hope. Fingers crossed;)

In the next post I am gonna talk about why am I diving deep into programming in such diverse ways and how it all relates to SageMaths and Mathematics as the long term goal.

Friday, July 24, 2015

The Learning Curve - PDF, LaTex files and the Source Code

So, finally I made the The Learning Curve a  good PDF form and I made sure to make various versions of the process. Took me a while)

The actual LaTex codes of the The PDF file are seperated into 3 different versions which sort of  provide a trail for the entire thing. So, without further ado head over to The link to the LaTex files of The Learning Curve - XKCD style plot.

Of course, I have to mention that there are still compilation errors and I am not yet very good at figuring out the logical structure of the document but then again, I shall only improve with time.

You are free to use the file and template in any way whatsoever. But believe you me, when I start producing good quality work I am gonna start using the Creative Common licenses to protect a few rights here and there but rest assured it's gonna be liberal. As far as this particular post is concerned, it's free so have fun.



Monday, July 20, 2015

Emacs the Magnificent;P

Man, I have never come across a piece of software which does so much. I think this is the single most amazing software I have ever come across, second only to SageMaths.

Want to surf the web through a text editor?
         
Yeah, sure. Try out EWW which uses DuckDuckGo search engine.

Want to practice the programming languages along-side your own project? 

Can be done, as easy as a child's play.

Want to take notes, Getting-Things-Done kinda way?

Org-mode.

.... And export them to HTML/PDF/LATEX too?

Yeah, in a jiffy!

Wish to make an outline of your program?

Again Org-mode takes care of it all.

Wish to change the theme/font .... anything at all?

Hell, yeah !!

Seriously, I can go on and on about Emacs and there just are so so many amazing packages and people who make Emacs tick. People, I think apart from SageMaths if you are to learn one software then let it be Emacs. You'll know the true power of programming and the extent of insanely awesome. I am totally in love with Emacs now.

I have come to believe that if you are, even in the very slightest interested in using computers as your tools rather than just "gaming machines" or say "internet surfing" machines. Emacs is the one thing that you need to master.

I found so many interesting resources all over the Internet, yes even more so. I am gonna link to their amazing sites. I highly recommend that you look into it all. I don't even care if I have mentioned their websites in the previous introductory post 'cos everytime I visit their sites I discover something awesome. Spend some time over there.

Emacs is Sexy

Github links to make Emacs all the more awesome

Sacha Chua's Website - This one deserves an award or something. You should totally check out her notes. You are bound to get inspired by the sheer creativity;P

Emacs Life

ErgoEmacs

What the Emacs.d

There are many, many (manyyy!!) awesome websites out there about Emacs but these are the ones which are the most central to my needs ( as a beginner ) now. Also, I have these two amazing books about programming which I thoroughly intend to master in the next couple of months.

How to design Computer Programs

Structure and Interpretation of Computer Programs

These books are in another dialect of LISP, namely Scheme but I think it would be easy enough to port the code to Elisp and thus improve my understanding of the Emacs system at the same time.

The reason for this apparent "detour" being that I know for a fact that I am gonna have to type a lot, to deal with text files and commands al lot in future. So, I am just investing in the Future. I know that it's all a bit chaotic and seems random but, with me, things always fall into the same place after a while. I can't describe this feeling but my hunches and instincts have always lead me right.

Friday, July 17, 2015

Hard Things and The Learning Curve !!

This is the way Hard Things with a "Steep Learning" curve turn out to be. Trust me, if you have a choice between a hard thing and an easy one, pick the hard one, without a doubt. It's the hard things which improve you beyond everything else.

I plotted this curve using the basic template provided in Matplotlib examples, ah I almost forgot, this is the XKCD style curve which I have mentioned in another post previously as well and if you are curious you can head over to XKCD website and admire the artwork as well. I find XKCD to be hilarious and I think that most of my plots are going to be in xkcd style from now on. I am sooo sick of the dry and idiotic "professional" looking curves. These are definitely more fun, a lot more fun.

Actually, this style is one of the reason why I want to understand the basic Sagemaths organs well, 'cos when these are all integrated as a whole in the form of Sagemaths system then there is a bit of overhead involved, as I use SMC at the moment, not the Desktop one so Anaconda based environment provides me with the perfect opportunity to experiment and to understand these organs well. Needless to say that, this can be done in Sagemaths as well;P

I used the following code to come up with this curve and I have tried to put comments in the program to be as informative as possible so you may go right ahead and experiment on your own. I recommend using the basic Anaconda-Spyder based system to begin with. Stay Tuned, more awesome stuff on it's way;P


Tuesday, July 14, 2015

Fun with Python

Python, the more I study and dive deeper into the world of programming and to craft my tools for further work, the more I admire Python. It's impossible to overlook the language now.

From Text Processing to Complex Websites, from Introduction to Programming courses to Multi-Threaded programs, it's everywhere. And I love it. I think, this alone guarantees why Sagemaths is gonna out-evolve every other kind of Mathematical Utility out there, though I believe that Mathematica is quite visionary as well. Then again, if it's a question between well paid programmers and peer reviewed code by idealistic hobbyists. Hobbyists always win.

I am wandering off, aren't I)

Python is one language that I truly believe is the only language, in our times, which flaunts of such a vast applicability and can boast of such a Huge number of dedicated enthusiasts. Plus, it has done wonders to make programming more approachable for everyone. From a curious child to an artist, Python is like Apple, to programming languages; it made programming "fun" and "stylish" for everyone. 

Of course, I am not overlooking Haskell, Julia, R, C++ et cetera nor am I overlooking the various down-points of Python, but I do believe that for a beginner as well as for anyone who wishes to explore the applicability of programming concepts to new fields and to make use of community developed resources. Python is indispensable for explorers of computation.

However, we are time beings. As much as I would love to understand the intricate details of how floating point numbers are dealt in terms of computer programming, that would be a luxury for me; at least at the moment. What I love doing is to have a tool, powerful enough in my hands so that even if I don't know a particular function or routine in a library, I can easily code it and more importantly read it and understand code written by other people as well. Python does it !!

At the moment, I am focusing on a few things based on Pure Python, things which I feel integrate well with my necessity as well as the niche I wish to carve out for myself. The things I am learning at the moment are,

> Text Processing

> Communicating with the OS from within the Python shell

> Internet related libraries like Requests

> And of course, the available support for various Programming routines, like Data Structures and Functional Programming support.

The "batteries" in the form of standard library and the numerous mature and battle-tested libraries developed in and for Python provide us with an immensely powerful vehicle. Python and various libraries can be thought of as a beautiful Ship, you can use to explore the wildest reaches of Computational Universe. 

Saturday, July 11, 2015

In the Sea of Manuals!

I have been doing all this work, exploring so many options to get things done, not to mention, figuring out ideas whose time have come and it has been fun to find so many interesting things floating about in the internet. It has been amazing to see so many people doing amazing things and being so overwhelmingly creative with what computers and programming can do. I love every moment of this experience.

But in retrospect, something occurred to me today. I have never reqd so many manuals before, be it on LATEX, SymPy, Matplotlib, Sage, Emacs, R or simply Julia !

Perky, isn't it?

Though the best way to understand open source is to make your way through the labyrinth of manuals. Slowly, Steadily and Surely I understand a lot more than what I initially sought. Confusing, at times, but with the overall goal in mind, Every second well spent!

Wednesday, July 8, 2015

Thing just fall into place)

Hey, I was going through that College Algebra book and I started to realise that typing in all the equations would be such a hectic task and then luckily I read the preface again.

Man, it's so great that the authors have even uploaded the base LATEX files as well. It's just like the open source software, I can alter the content and add or extract to my hearts content if I so choose to. Though, I don't see any reason for doing that 'cos the book is very well written and it starts from the very basics.

I have been able to find many books/courses related to Sage all over the internet but none covers the Basic Algebra comprehensively, I think I can fill up that gap using this book and adding all the work that I can put in.

 Stitz Zeager's book - Latex Code.

See, if you pay attention and work smart and hard, things just fall into place;P

So, in a couple of months you can pretty much expect a PDF file along with the LATEX code which brings together Sage and College Algebra. However, if you are in search of advanced topics such as Differential Equations, Calculus, Cryptography or Game Theory etc there are plenty of resources available on the internet.

Monday, July 6, 2015

Algorithms and Mathematics, are they really the same?

In short, I don't think so. It's like saying Music is all about Piano, not the other way around. Doesn't make sense right!

Matte is meant to be much more than mere mechanical drudgery, it's an art of insights which can only be experienced after a certain study of a few rigorous principles. It's a dream, a collage of axioms; it's not black and white, it's mesmerizingly colourful. Algorithms are the purpose of solving a particular problem so that every time we are to use this path we are sure to reach the destination and have the right answer in the end. 

Algorithm's, I think are something which are to be taught to computers so that we can explore new aspects of Matte and we learn to apply it to the real world in an inspired way. There is a certain magic, within the abstractness and thus the generality of Matte. I mean, the elusive (x) can be anything - from the mass of a Galaxy to the penny you forgot at the shop;P

At the very basic level, Algorithms are the reason why Computers can do what they do; and do it fast. I believe that as we progress we would only need to remember a couple of commands here and there, a few syntaxes and just experiment with all the various ideas that we come up with. On the whole we don't really need to concern ourselves with the way some problem is solved but knowing it wouldn't hurt. That's why the Open Source is such a rage.

Think of it in terms of creating music through Piano, it's good if you know how it all works on the inside but you don't really need that knowledge to create music. I believe, that we should focus upon playing music and for the most part leave the fine-tuning of the Piano, in the capable hands of the experts.

It's not really meant to be a drudgery, life is too short to be held up by mindless, repetitive tasks. We have computers for all that kind of work, What we need to do is only to be creative with problems and how to formalise it in a way that we can use a computer to solve it in an instant. The times, when we really needed to sit down and just do it. I don't think that we need to slog our way through textbooks the way we have been doing it so far, 'cos Matte has become so vast that it's impossible to even wet our feet in a reasonable time. The last couple of centuries have seen an unprecedented advances in Matte. 

I think a lot of the curriculum is still based upon the most fundamental parts, I don't have anything against it. But the thing is, as we pursue our studies in Matte we are compelled to limit ourselves as per a particular field. That makes no sense to me !! I truly believe that there are always, always multiple ways of solving a problem and if we limit ourselves to a particular line of thought or inquiry it prohibits us from exploring and perhaps getting ideas from other branches of Matte. Down with this mindless Drudgery, I say;P

Now that we have so many awesome resources on the Internet and such advanced computers we can easily focus more upon the actual thinking part of Matte. For some reason this reminds me of a quote, " Anything that we can teach a computer is science, rest is Art ", inspired by Donald E. Knuth, who is considered is the father of Algorithm analysis. So, we need to be artists rather than just calculators ourselves. 

With regard to Data Artist, I imagine beautiful images whose smallest portion has a meaning of it's own. As in, this circles represents the total GDP of some such country but rather than understanding one abstract concept based upon another abstract concept we can understand it as an image, perhaps as a cartoon character even! We are visual beings and be it good or bad, we rely very much so on our basic instincts and senses still, why not use this as well? Instead of building castles upon castles in the air and in imagination, why not have a look at it;)

P.S. I forgot to mention that I use the word Matte, which is a Swedish diminutive of the Mathematics. I don't really like using the latter, it's too loaded;)

Saturday, July 4, 2015

The Pythonic Cousins !!

I have been on to this project for about a month already and looking back, I have learned a lot in a wide range of things. For eg:-

>  Programming in general

> A certain experience in R / Julia / Haskell and a bit of Lua as well

> Made progress with Emacs, but still a long way to go before I feel comfortably say " The OS is just a boot-loader for Emacs" ;)

> LATEX

> MathJax and how to use it to put Beautiful Mathematical Text in webpages

> Have explored HMTL/CSS/JS a bit, so as to be able to customise the blog later on.

> D3.js to various other solutions for

> Came to explore the the various amazing libraries which depend upon Python

> And of course, I know the terrain of Sagemaths Cloud as well as Anaconda quite well now.

> I can solve basic equations in Sage, same is true for plotting as well. But so far, I haven't been able to dive into Mathematics per se.

And now, the two most important question that I need to address are : -

* How to use the three principle components as in Sage-desktop, Sagemaths Cloud and Anaconda?

* When to use a particular tool?


The way I understand it, Sage is like the super-organism whose components are not only limited to python-dependent libraries and sub-systems but also various other languages and other technologies as well. Sagemaths essentially combines the power of cloud computing and Grand Vision of the open source community. It offers LATEX, Terminal and a comfortable environment for a dozen programming languages, not to mention the facilities like completely automated source code management, classroom course management as well.

The problem, for me, is that I need to be able to do my work in the most platform independent and powerful way possible as well as which acts as a back up plan for me, in case I am not able to connect to the internet. Eventually, I think I am gonna move over to the Sagemaths-desktop system based on Ubuntu but that would involve becoming a lot more comfortable with the Linux environment as well, so that's another ball to juggle=)

But the most sensible solution that seems to promise a good and useful learning experience would be to begin with the various parts first and then move up the complexity level. Also, eventually we would be able to pick up the manual of any Python library and use it to our purpose. And believe me, reading manuals is boring but if we have an interesting enough a context, it can be done.

So, I think SymPy is quite useful, from the point of view of Polynomial manipulation and, frankly, I am still not so clear about how to use Rings and Fields. Though these are used in SymPy as well, I think overall the complexity of SymPy is a good deal less than Sagemaths. After SymPy, I am gonna explore NumPy, Matplotlib and Bokeh as well.

Another reason why I think SymPy is better for me, at the moment, is that it aims to be a complete solution to Mathematics in it's own rights, so with this little sub-set of Sage I can finally get started with basic High School Mathematics and even if later on I get stuck at some point using Sage, I would always have a backup to rely upon to get me through anyway, till I find a Sage solution.

Of course, I believe that Sage is definitely strong enough to perform these functions on it's own but I feel that getting myself used to the most basic libraries is only going to make me understand Sage better. However, as far as Sage is concerned, my next project is about the learning how to plot complex functions in Sage.

For these Python oriented parts, we can hone our skills on Anaconda which combines a large number of mature Python Libraries and is quickly becoming a de facto development environment for people who use Python to build applications and who work exclusively with a fixed set of libraries. Anaconda depends on a package manager called Conda, think of it as a huge zip file maker; the only difference being it combines and updates various libraries on a real time basis. And it is platform independent, so once you learn to use it, the learning curve pretty much flattens out after a while.

Is it all getting too technical, as in a techie jargon or something;) 

Yeah, it does seem like that, no? But don't worry 'cos once I figure things out I will definitely make some PPTs and PDFs walkthroughs upload them over here  so that you don't have to go through all the confusion as well. Remember, the Hacker Culture(!) post, "We must Avoid reinventing the wheel over and over again" !!