Hey, How's It Going?

This is the first blog post I've ever written, I decided to start this blog mainly for storing writings related to Python. I've become infatuated with the Python programming language. About two-to-three years ago I started exploring computer programming, a good friend of mine was teaching himself web development at the time and so our conversations would roll around to some aspect of computer programming.

I knew virtually nothing about computer science beyond my consumption of software, however, my friend and I would discuss things like 'Angular' and Twitter's 'Flight' frameworks; I was clueless on technical terms and understanding, but the abstract and conceptual elements of our conversations fascinated me. I tried to make the most of our discussions, participating where I could and asked as many questions my friend's patience would allow. Slowly, I discerned the difference between Java and Javascript, understood the roles HTML and CSS play, and so on. I owe that friend many thanks, he opened a door for me to become more than a consumer of technology, outlining a path towards making it, to be on the opposite side of a Google Analytic's script; I'm very much still in the process of putting one foot infront of the other along that path.

I began picking up Javascript through reading articles, watching as many Douglas Crockford videos, getting access to many tutorials, etc., as possible. I looked into other languages too, but the flexibility of Javascript and its expressive qualities (essentially what I'd later realise is functional programming) kept me keen on JS. While I was picking up the fundamentals of the language and appreciating some of its quirks there was something about Javascript I couldn't grok in such a way to actually build things, I had picked up lots of knowledge and technical understanding; I could talk about JS no problem, however, I could not program it. I felt flooded with frameworks, tooling, and 'best practices'. Whether it was me (maybe I'm not cut out for software development?) or the language (despite the impressive adoption of JS, maybe its a language too contrived? (if that thought has annoyed you, revist the JS origin story)), personal doubt was the global context of my learning.

I struggled with this for some time, I so badly wanted to make use of the opportunity shown to me by my friend; I wanted to crack into software development in a non-trivial way. Then I found Python. In the midst of my personal Javascript saga, I took a few Computer Science courses while doing my undergrad (somewhat of a rarity for business students such as myself, at my school atleast). Naturally, the language of instruction was Java, however, the last CS course I participated in was taught using Python 3.5. The language concepts which lured me to Javascript existed in Python, a guide within 'PEP8' laid the foundation for writing code and was embraced by the community. The Python community itself seemed to be coherent, reliable consensus on third-party libraries, the ideal of "pythonic" and the "Zen of Python" served as the kernel for most Python tech-talks I could get my browser on. The ecosystem I perceive of Python provides more focus enabling me to make things, the barrier I struggled with early on in Javascript; I quickly grew into a proponent for Python.

Python being the language I've connected with, I truly feel on a path of connecting the spheres of software and 'soft-skills', I wish to strengthen empathy between consumers and producers of technology.

It's Not All Perfect

I won't argue that Python is perfect, nothing is, and I sometimes feel overwhelmed as I did with Javascript. As a developer graduates into things beyond the basics, a corrosive drip of distraction begins on the developer's time, a result of having multiple choices and approaches to solving a problem. However, recently an e-mail from Dan Bader's Python mailing list supplied clarity and structure for me. If you're unfamiliar with Dan Bader and you're a Python developer (or thinking about picking up Python) I'd seriously recommend checking him out (Dan doesn't know I'm making this plug). Dan's email was built on the idea constraints are powerful. Limit 'mental context' switching, reduce our brain's cognitive load; keep focused. In his email, Dan suggests choosing just one option for various development catagories. The email genuinely struck a chord with me (perhaps because his argument was initally given in a learning guitar context (I'm a guitar player myself)), so I sat down to pick my one choice for the various factors related to my Python projects. Here they are:

Python Stack Plan

Improving

Anki cards, some basic webapp and desktop projects and lots of books and online communities are part of my learning process. Right now I'm trying to build an OAuth2 implementation, start a podcast, and keep this blog active!

I'd enjoy hearing your story, what you're working on and how you learn. Give me a shout!