Showing posts with label Programming. Show all posts
Showing posts with label Programming. Show all posts

Saturday, January 17, 2009

Choosing a Project Repository

From that mythical reader out there who is actually following all my posts up to now I can hear the question - 'Are you nuts? You claim you are going to write a program in Python, and before you learn any you're worrying about where to host the project? Delusions of grandeur or what!'

Before you completely go over to my wife's side (who is quite sure I am nuts) let me explain.

The last time I tried anything like this at all, it had two problems. Since it was a sideline hobby, it was done in fits and starts, when I had the time. As a result I was always trying to figure out where I left off, what to do next, what was already done, etc etc etc. It wasted a lot of time I didn't have just trying to keep it all straight. Once it was finally completed (well, once I quit adding features anyway) it ran fine for years, but when I wanted out from under maintaining it, there was no one around who could pick up the pieces from my scattered pile of stuff and keep it running. The new maintainer ended up re-writing it all his way and throwing out all my work. I don't begrudge that - I wasn't doing it anymore and he can't support something he doesn't grok, but it hurt none the less to have all that effort pitched.

Since those who can't understand the past are condemned to repeat it, what can I learn from this?

One - you don't write software, you build solutions. Yeah, I know, sounds like an Apple ad or something, but here's the theory. Start with a clear vision, create a solid list of what the thing is supposed to do, then write the code to do it. Document, then execute, not the other way around. I can think of lots of projects I wish did things this way.... I used to have a friend in high school that was fond of saying 'Plan the work, then work the plan' Maybe I've finally started to listen :-)

Two - This project has zero resources (see rule one) and like the last one is going to be done piecemeal at whatever computer I happen to be sitting in front of when I get 10 minutes to think about it. An internet based, distributed setup is the easiest way to keep this on track and organized. I don't have time to worry about infrastructure any more than required, I want to work on the product. There's no privacy concerns here - quite the opposite, so keeping it local doesn't make any sense.

All right, now that I've blathered on this much, it's getting to be too long a post to discuss who I actually picked. I'll do that as a separate entry.

Thursday, January 15, 2009

Running In All Directions At Once

So, since I claimed I was interested in other things lately, what the heck am I going to put on this blog? Other stuff of course :-)

Here's one topic I'll be returning to again and again. I might finally stop saying "I'm not a programmer". I can't go back to school (unless somebody's willing to foot the bill) but I can try and figure this out on my own. Lots of people do it every day. I don't expect to get really good at it, but hey - who knows?

I'm starting for that old open-source traditional reason - I've got an itch to scratch.

I do know a smidgen of bash scripting and Perl. I even did a complete website from scratch using Perl and MySQL with a bit of help from a friend. The problem I find with Perl is the same thing pointed out in one of the Perl books I read. If you don't do Perl every day and really work at, it doesn't seem to 'stick' with you that well. When I go back and look at old work, I have to really stop and look at it to figure out what's going on. To boot, the whole 'object orientated programming' paradym didn't make all that much sense to me in Perl either.

My itch is actually to contribute some code to an existing project. It does a lot of what I want, but not all of it. I've even posted my ideas to their bug tracker, but it doesn't seem like anybody else is going to do the work for me, so maybe it's time I tried to do it myself. That project is written in Python, and Python should be a good thing to learn for lots of reasons.

Python has the reputation as being easy to learn, and very versatile. Lots of modules and add ons are already out there, and it runs on Linux, Mac and Windows. I've seen lots of interesting end user programs that are written in Python, and I might be able to get something that looks good as well as working well.

So, I need to learn Python. And revision control. And project management. And lots of other things too :-)

I'll post tidbits as I go along here, and I'll start tagging these blog entries better so my mythical audience can skip the parts they don't care about.