You are here

Becoming a Free Software developer, part IV: Putting your interest to good use

As we follow the zig-zaggy quest of me trying to learn to program, I discover the next significant step, "Interest". I started with a goal: to learn to program. Next I came up with a plan: Learn Python by writing a program called PT (period tracker) but I lacked the last bit, interest.

You see, there was very little that period tracker did that a calendar didn't. Spending hours to make a program to do work that I could do in five minutes with a calendar and a pencil seemed like a waste of effort.

Now don't take this the wrong way. I spend lots of time on trivial things. I am an obsessive fan of TV series like "Doctor Who" and "Buffy the Vampire slayer". I write online Biology textbooks for fun, and I sometimes run "top" on my computer and watch as the screen refreshes every three seconds for no good reason. I'm pretty accomplished at wasting time, but I can't abide doing work "for fun" that bores me.

This gets to the heart of free software programming. People don't program just because they want to learn. They don't even program because they have a need. People program because they are interested in getting something done, and they are willing to do it themselves. Learning to program is time consuming and requires effort, but the effort means nothing if you're having fun, just ask anyone playing racquetball. Programming is best when it is play.

So my goal now is to play with programs. I'm trying to pick projects now, and it isn't as easy as you think. My first programs that I wrote were database programs. I wanted to make an address book for my sister. That was ages ago. My program never did work right, and before you know it I left that computer behind; but I still was interested in the problem.

Since then, I have occasionally done database scripting, but never programming, and I have often wondered if I should try to work with databases again. But database theory has changed a lot since I last tried to understand it, Recently I read a web page about database programming and the terms alone scared me.

But then again, most people consider databases beyond boring. The fact that I've been interested in them for decades is probably a quirk of mine that's not going away, so what can I do? How can I find an environment to learn how to program about something that I find interesting without feeling that it's a total waste of my time? Luckily such opportunities are plentiful in the open source community. You just join a project.

I decided to tentatively try my hand at helping with a free database project. How do you do that you ask? The best way is to join an open source project as a tester or developer. I decided to join the Kexi project (http://www.kexi-project.org/).

Kexi is the database bundled in Koffice. I have a copy on my desktop. Do I know how to use it? Almost. I may understand it better when the documentation has been translated from Polish to English. They say that's coming any day now. I looked online and they have a developer's wanted advertisement. It says Requirements C++, Qt development skills, and KDE libs development skills welcome. Do I have those skills? No. plus I was planning on learning python rather than C++, but learning is all about starting from a point of not understanding and doing your best. So I decide to volunteer as a software tester.

The page says that the requirements for a tester are Linux, an email address and KDE 3.3 or newer. Got that nailed, so the plan is this: I join the tester and developer mailing lists and watch how the program gets changed. When I feel courageous enough, I can even take a look at the source code. Then maybe I can copy some of it into a file, get a C++ compiler, and try playing with data myself.

Will this work, or is this a stupid idea? Is the program too big and advanced for me to ever understand? Will I get bored again and put it away? I don't know, but anything worth doing is worth doing badly the first time, so I'll take a chance. Who knows, maybe it will actually do someone some good.

I too have long been in to Databases... probably because that is what got me my first computer. [long story made short] My dad wanted a database so gave me an old 386sx and his DB software so I could 'program' it for him. Since then I have made:

- A database program for building Warhammer Armies
- A CRM program for a local contractor
- A recipe database
- Software database (records software installs and install codes -- track compliance)
- A program for doing weekly student reports at a K-12 institution (using a database ofcourse)

To be honest I can't think of why people think that databases are boring... the proper structure of a database and the ability to present the information in a meaningful way is a skill that escapes a great many programmers I know. [scare tactic] Database Normalization. Boo!

The thing that irritates me about databases, is the same thing that irritates me about web development -- you have to spend so much time setting up the environment:

Installing server software, making sure to set all the appropriate flags so that it will do anything, because Debian packagers, in their infinite wisdom, have figured out that the most secure package is the one that does absolutely nothing.

Then there's the plowing through tons of security configuration files just so the darned thing will answer you when you call it. And of course, they all have to be written in Apache-ese, which is some bastard-child of config format and XML which doesn't follow the rules of either, and then you have to set directives like "ActuallyDoSomething" and "NoReallyIActuallyWantToUseTheServer".

Usually, by the time I've got all of that working, I've completely run out of time for the project and/or Debian has released a new version and retired the old one, so that the one package I absolutely have to have to do the project requires a complete system upgrade, including the database and web application server, which breaks interoperability between all of the components, due either to massive API redesign or a decision to "reform" the security configuration files so as to make them even more difficult to figure out.

Kexi is a data[base] management application not a database. A database is a set of data organised into records and possibly tables (a spreadsheet of addresses could be called a database). You use Kexi to create and manage databases, without those it is pretty useless.

You said...People don’t program just because they want to learn. They don’t even program because they have a need. People program because they are interested in getting something done, and they are willing to do it themselves.

Am I alone in that I program for all of those reasons? If programming wasn't expanding my horizons (for want of a better term) then I wouldn't be interested in it. I always program to fulfil a need: without a real target I find I soon give up and the project falls by the wayside. Yes I am interested in getting something done and I am willing to do it myself but those are not as high a motivation as the first two.

I thought your original plan (to write an application) was a good one and perhaps you shouldn't be put off because you chose an app you feel is a little needless. Find something that isn't or reassess the method you chose. Also - for me anyway - the fact that somebody else has written a suitable application only precludes my having a go at one if I am pushed for time (or if the application is huge - you won't find me writing my own web server just yet). Often it's the journey and not the destination that counts.

In any case if you are going test Kexi to any length you are going to have to apply it to a real world example. Perhaps you can approach PT again for the purposes of testing Kexi. If a calendar can do what you want then examine the method you use, what could be improved? How could it serve the task better? A Calendar on the wall cannot for example display the day of your cycle or prompt you if you haven't entered the start of a new one. It cannot report over the course of a year the regularity of the cycle and it could not remind you to stock up on chocolate two days before the predicted start of the next one. Being a bloke I have no idea if these are important - it's just what I've picked up from being married - but think bigger than just replicating the calendar and pencil.

But for much of the world, "database" is also a abbreviated term for "database management application" -- at least when speaking informally. Call it a metonym.

But even "database management application" is imprecise. Kexi is a frontend for a database management system (which is probably going to be MySQL in Rosalyn's case).

"You said...
People don’t program just because they want to learn. They don’t even program because they have a need. People program because they are interested in getting something done, and they are willing to do it themselves.

Am I alone in that I program for all of those reasons?"

The paragraph above only excludes you if you program only for one of these reasons at a time, I think. It's the "just" that makes this distinction.

Please let me know if we can discuss anything more trivial, though. ;-)

Really, though, people program for all sorts of reasons -- it depends a lot on your temperment. You have to really want to do it, though -- it's easy to start projects, but hard to finish them.

What intrigues me most about Kexi is the CASE tool that it's supposed to have -- apparently you can graphically design a database system using something like an E-R diagram and have Kexi generate the tables for you. I think that sounds pretty cool. I haven't tried this (I've just seen some screenshots), but I look forward to seeing it in action.

But even “database management application” is imprecise. Kexi is a
frontend for a database management system (which is probably going to
be MySQL in Rosalyn’s case).

I agree and I was really just being a little naughty pedant (sorry Rosalyn: bad habit). That said, I got the term from Kexi's website where it says: "Kexi is a Free/Libre and Open-Source integrated data management application,".

“You said… People don’t program just because they want to learn. They
don’t even program because they have a need. People program because
they are interested in getting something done, and they are willing
to do it themselves.

Am I alone in that I program for all of those reasons?”

The paragraph above only excludes you if you program only for one of
these reasons at a time, I think. It’s the “just” that makes this
distinction.

Okay, then I am excluded--c'est la vie. I have written several small applications--many of which never leave my own computer--solely with the aim of learning a new language or technique. Sometimes I rewrite one just to see how I would do it in a different language (but less often since I got married and had kids I must confess).

When Rosalyn says "People program because.." surely the implication is that programmers only or mostly or even generally program for the two reasons she gives. From this I inferred that people don't program for the heck of it or as an extended hobby but my experience is that people do (I am not alone in my methods above). Maybe I've read that wrong though. Maybe I am as sad as I appear :o) Perhaps I am being too pedantic though, perhaps she meant "when people program with the intention of releasing it". Rosalyn care to clarify?

Please let me know if we can discuss anything more trivial, though. ;-)

Oh now, don't get me started, among my friends I have a reputation for trivia (particularly the useless kind). :o)

Seriously though the main point of my comment was to encourage Rosalyn not to give up on her idea simply because something else exists. Much free software--by necessity--as ended up duplicating functionality of other software. I think she should be congratulated because she is engaging with the community and is trying to give back, that's a good thing.

My true meaning when I said that thing about why people program is as a good segue into the article.
Obviously I don't really know why people program, because I can't actually get myself to finish one.

Procrastination is not just an affliction, it is an art form.

I consider myself an artist when it comes to procrastinating by not programming.
Many is the time my husband (Terry Hancock is my husband by the way) has suggested the possibility of classes or some other way to help me get started. I usually switch the subject to finances or dinner which usually results in him dropping the idea.

I have a love / hate relationship with programming.
1. I am ambitious. I can think of a dozen reasons to write a program. Programs that will solve a need I have. Programs that may change the world.
2. I start to plan out how to do it.
3. I start to get scared of the time, effort, and pain involved.
4. I remember all of the broken programs that I've ever used.
5. I decide to watch a utube video.

Ok, it isn't always this way. Sometimes I watch videos on TV, but even writing that first line of code is painful.

The other thing is my desire to fix broken programs.
Have you ever had a program that crashes all of the time. Don't say you haven't because you know you have.
I want to fix it!!
But since I have only ever programmed in Apple Basic in the dawn of time, I can't even read the code.
I feel like a child trying to read Don Quixote in Spanish because I really liked the film.

Don Quixote? I wonder if I still have a copy of the film " They might be Giants"
Walks Away from the Computer ...

Author information

Biography

Rosalyn Hunter has been on the internet since before the web was created. Born into a family of instructors, she has made it her life's goal to teach others about the important things in life, such as how to type kill -9 when a process is dead. She lives in a little house on the prairie in the American West with her husband, her three beautiful children, a cat and a dog.