Tuesday, January 3, 2017

…here… we… go…

It's been the best part of five years now since I last blogged about code, and what with one thing and another, I've decided to pick it up again. I felt obligated to stop posting on my previous blog (My Brain on Python) because, at the time, I wasn't sure if I would be able to separate what I was doing professionally from what I was blogging about. Having given it a fair amount of thought lately, I believe that I can defend doing so by making sure that what I post here is built from the ground up — taking as much of a clean-room approach as I can. There will almost certainly be some parallels, if only because writing code to achieve the same basic goals, or provide solutions for the same needs in a given domain will tend to yield similar structures and solutions.

What I'm Trying To Do Here

I've got several goals that I'm trying to accomplish with the posts here. Many of them center around a list of projects that I've had on various back-burners for years (some for decades). For the most part, I expect those projects will require some common framework to make them a reality, and a substantial chunk of what I'll be doing initially centers around building up that framework.

You might wonder why go to the effort of making Yet Another Framework? That's a fair question, since there are any number of frameworks already available. The answer to that is, in part, that I'm more interested in writing a framework from the ground up than trying to fit all of my projects into an existing one. Part of that is because there are certain baseline expectations I have of an application framework, particularly one for web-applications (which most of my projects are) that just don't seem to be met by any of the existing/established frameworks I've looked at.

OK, But Why Python?

I like Python. I've worked with it almost exclusively for the last five years, but I liked it a lot even then. I like the syntax and the structure. I like the fact that it's a language that is both strongly typed and dynamic. I'm not aware of any other language that fits into both those categories (though there may well be others), but that combination allows, I think, the best balance between writing code quickly and being able to apply quality-checking and -control best practices like unit-testing. Your opinion may vary, but that's my take on that aspect of it.

I also like the fact that Python can be used across a remarkably wide set of application-types. Command-line applications? Done. Console applications with reasonably appealing GUIs? Yep. Web-applications? A bit more complex, but still very doable, yes. Local and web-services? Again, yes. With some care and discipline, it's very possible to write code-libraries that can be used across a ridiculously wide range of application-contexts. On top of that, Python is an amazing work-horse language — It can interface with all kinds of external programs and libraries, and is demonstrably in use by all kinds of companies across dozens of use-domains.

If I'm brutally honest about it, a good part of the reason that I like Python is that it's free — both in the sense that it doesn't cost any money, and that it's open-source. While I'm not as vehement about open-source as some, I most certainly appreciate that I can (if I really need to) get into the nuts-and-bolts level of the underlying code and modify it to meet my specific needs. There are any number of other reasons that also appeal to me (some of which can be found in more detail here and here).

Before I start doing any deep-dives into code, I'm going to share the set-up I'm using, and discuss some of the coding-standards that I'll be applying to my code.

No comments:

Post a Comment