Monday, March 28, 2016

The Love of Programming

Racket and Haskell

The only two languages I really love to Hand-Code in, that is I am actually always quite eager to get a sheet of paper and pen and just have a go at any programming problem that strikes my fancy.


I collected so many ACM ICPC problems but I never really bothered to solve them. Not a single one. But with Racket, Haskell and Julia - I rediscover the joy of programming. The fun activity that it is supposed to be. Not necessarily for the purpose of Building something but purely for the joy of Learning and Exploring.


I never felt enthusiastic about doing all the algorithms in "Introduction to Algorithms - CLRS", but with Racket, Haskell and Julia - I actually look forward to taking out time from a busy schedule to rediscover the wonder that problem-solving really is.


JavaScript and Python

Python and Javascript environment which basically include everything in their vast applicability are the ones which I'd really love to Build Things in. Recently, I started fancying myself as having a career in prototyping things, especially WebApps. Would be fun to have a career which gives me new things to experiment with but hey, who knows.

Here, again my approach with Python and JavaScript is to learn the myriads of libraries and frameworks within a context of a Project, build something that makes me want to work at it and share with people.

Btw, I became quite active on GitHub these past couple of months and ended up "Starring" about 1500 repositories. Boy!, who has the time to skim through all of that list again. So, I'd much rather use the JavaScript console and the browser features to make a query and ranking system of my own. There are a couple DataBases which I have added to my ToDo list.

Oh, I keep getting this weird idea to rewrite Emacs in some different language, in a way which is just compatible with all the current code-base. Two langauges seem probable for this- Racket and Julia. But Racket being so wonderfully built around the idea of a portable programming lab ( DrRacket ) it doesn't seem like a good idea to attempt that one.

However, with Julia I am quite sure that the effort would be quite rewarding but as of now Julia lacks the necessary libraries and frameworks which might help me accomplish that. And yes, I am aware how utterly unreal Rewriting Emacs sounds but hey it might be a fun thing to do, no? Though, there is not a shred of doubt in my mind that Web Technologies are the future, so I'd much rather bet on Atom and try to extend atom to the same level of awesomeness that Emacs is capable of.

Friday, March 18, 2016

A Master Mason

I am always humbled by how much I must learn to be able to reach the level which makes me truly confident in my skills. Maybe I have just romanticized this - maybe it's never gonna happen that I'd be a "master" of a technology for it flies by too fast and there is always an improved Version to learn.

 I have started to follow a certain half-formed thought which tells me to focus on One particular version and learn things in a Context, make them as fun as they can be, but the thoughts still are not that well formed. The result being that, instead of keeping up with all the wonderful changes in Python3.5 etc I'd much rather grow comfortable in Python3.4 and same goes for all the other such technologies.

I am a huge fan of project-and-context oriented learning. For every function I come across in Python Standard Library, I try to imagine a situation where this function would really be useful.

All that I do can be summarized in one of the following three, LEARN-EXPLORE-BUILD. This is the how I make tame all the confusion and prioritize the projects I need to work on.
I have had a wonderful exposure to the importance of Soft-skills and the Business oriented planning side of things but I find that I truly can't feel competent and comfortable unless I know that I can build the thing myself. The "Hard-skills" are the ones which, I feel, I must prioritize over the Soft-skills which can of course be improved upon anytime, really.

I become more and more convinced by the day that I must really learn Web Development and, atleast become quite good and capable at various aspects of it, before I focus exclusively on the Non-Technological aspects of things. I only wish to work with people who help me grow and who are atleast as good as me. Right now there is a huge gap in this, not in a good way. There's a stark ( and least understood, it seems)  difference between a "Manager" and a "Leader". I'd much rather be the latter, who is right there at the place where most exiting action takes place.

Saturday, March 12, 2016

The Thinning Fog of Technology

It's been a long while since I last posted anything. And what a busy time this has been! It's only after a couple weeks of being away from the World, that I could bring myself to write about something - anything, in fact.

Through this StartUp experience, I've had a Ton of exposure regarding the way the Software Development world works, not to mention the exposure to various technologies was like a drink from a firehose!

Sometimes, actually most times, I find myself confused regarding what to learn and what to ignore? Some say, AngularJS is the thing while others really swear by ReactJS.

Some say, it's better to learn how to be a good Server Engineer for he's the one who really ensures that the thing built for the people, reaches the people safe and sound. While others still say that it's better to become a designer for it's the only thing that truly is visible to everyone.

The JS is the new revolution, for sure but what to use all these wonderful languages for. What's the one thing, one context which can help me Learn-Explore-Build using these languages.
I'd love to explore D, Rust and Go. I'd love to contribute to Julia's incredible growth. But at the same time, I must myself understand what should the priority order be. I have found a couple projects on Github which I am definitely gonna work on, perhaps port that project to all these languages and gain a feeling of how really these languages work and how to cruise my way through the meta-language environment like package management and Code Versioning.

Then there's is this Unreal Engine for making games which does inspires my curiosity above all. After all, I've always loved games ( who doesn't? ) though it's been a few years since I really became involved with any Game whatsoever.

I have always been a systemic thinker, sure the initial gulp from the firehose of technology hurts and even baffles the mind - but eventually I have always been able to navigate my way through the tough seas. To bring Order to Chaos, for each language or a tool I have prioritized what I need to build, to practice the thing with. I have always been that dreamy-eyed kind of person who is after a thorough mastery of something. Perhaps, all the stories I heard in my childhood have left their imprint in my mind somewhere.

If it is possible to be the really knowledgeable in a wide variety of skills than I choose to chase that Dream. Never been shy of working hard but I have always taken great care about investing my time in things with huge payoffs. Like this Emacs I am using to outline all the posts and the Git Versioning I am using to keep track of all my journals and projects.

I do find myself forgetting that wonderful sentiment " It's not so much the Destination, as the Journey". It's a tough journey, learning always is a mixed pleasure but we must always find ways to enjoy this voyage in the sea of knowledge...or something like that;p