The STAMAN Project: Phase I, brain storming an outline

The first thing I did was sit down and spend about 5-10 minutes on brain storming, here’s what I came up with on Monday:

terry@dixie$ cat ~/Dropbox/todo-structure.outline
todo's contain
        task short name
        task notes (raw data)
        location
        assoicated url's
        due date
        time estimate
        associated contacts?
        reminder preferences
        list
        project (tag)
        priority

Shebang! YAML would work WELL
terry@dixie$

I like to dive in when designing a program, try and get a good big picture understanding of it, and try to identify the lower level issues that might chop up. The latter gets easier with experience, particularly with your tools rather than the art/science. After writing that file, I took a few more minutes to focus on the implications of its contents.
The purpose of a task management program, is obviously to manage tasks. It is fairly obvious that it is a fairly data centric program; so it’s a good place to start by thinking about what is the data. In this case, I took a couple minutes to think about what represents a task: what data it reflects. The short name being provided, as a convenience for listing tasks.
We can’t know for sure what sort of tasks will have to be managed, so what data will need to be attached should be kept abstract: it could be anything from a simple cat > notefile like stream of text, or an uploaded doc or photo. The important thing, is not shooting off a foot by making it restrictive.  Since *I* am the principal user, I know the content will be quite variable. Excessively so, the more I utilise it. 
Tagging a task with data like a location, associated URLs and contact info would likely be a good thing. You can easily imagine that going somewhere, talking to someone, or referencing a file off the web are all things that might go hand in hand with reviewing and completing a task.
Another frequent issue is keeping track of when xyz needs to get done, how often it needs to be done, how long its expected to take, and being able to do per-task preferences about the “Nag me about it” problem. Come to think of it, a way to note the tasks progress is a good idea too. Changes like these, are one of the main reasons I want something custom, rather than continuing with my beloved RTM – more control over the tasking details.
Keeping a flexible outline of the project, helps you identify spots to grow and or change it ‘in flight’, just like that realisation about progress tacking. Of course that assumes you will have time to think about the project, not just write its code like a drone.

Next up to plate, is the issue of organising tasks. I’ve got so much shit piled into RTM, that I have to periodically triage my task lists, almost like sorting them into a Trove. Notions of lists, priorities, and “Projects” are useful: in order to more easily create ad-hoc hierarchial lists based on such criteria. This is somewhat analogous to what’s possible using the SQL SELECT and JOIN statements. Database normalisation can actually be a good thing to learn aboutlink.  
SQL is not a general purpose programming language, rather it targets the narrower domain of querying and manipulating rows and tables in a database. Although less needed around non web applications, knowing about SQL it is worth it, much like the concept of relational algebra in general. Why I have mentioned Structured Query Language here, is because it’s a useful train of thought to explore. Take some time and ponder about the possible formats, and what the code to manipulate it might.
A serious portion of programming is about solving problems, that’s what we use our languages for. If changing the rules makes solving the problem easier, that’s what we do. Knowing about various tidbits like declarative languages are valuable tools, if you remember to program more like Captain Kirk instead of a dry text book. Don’t bend yourself to the language…. bend the language to your problem, or find a tool or architecture that can help fill the gap.

Data storage formats are potentiality a lengthy issue, so I’ll go into that later.

With how often people have solicited my advice/opinions of programming matters and CS ed, I’ve been thinking about exposing the craft behind a project, and posting it as a journal entry. Well, the way my mother monkey wrenches things, I rarely have both the time, brain, and inclination to focus on detailing that much.

So instead, it’s probably best that I either decide never to go into the details of creating a program, or just stream it through more haphazardly across my journal. I’ll take a crack at the former, since I would like to work on the program.

One of the things on my “To roll own someday” list, is replacing my remember the milk with a local solution. The perks being that I can make custom changes without having to get hired by RTM o/, as well as integrate it with my work flow more naturally. It’s also a good series of mental exercises.

Since I’m not good at naming things, I’ll just call it STAMAN—Spidey01’s TAsk MANger. Which uniquely isn’t far off from Stamina, exactly the rate limiting factor for getting shit done. Especially under my living conditions.

Legally licensed maniac^H^H^H^H^H^HGeorgia driver

At long freaking last…. !!!! I have my license. Murphy’s presence also managed to remain fairly minimal. As per local SOP, I’m stuck with a piece of paper for the moment until the plastic arrives. I’m intending to scan the blasted thing for posterity. In 22 years on earth, I’ve never wanted something so damn bad.

I’ve just managed to import my journal entries from October 2009, that should just leave the majority of September, than my transition from Live Journal to Blogger, should ‘technically’ be complete once and for all!

Give or take 10-20some entries, I would say I’m approaching 1800 posts since I started keeping a journal back in ’06. Planning to celebrate my 2000th entry, if I ever notice it’s passing :-o.

Also took some time to move one of my older projects to github. Really, it’s kind of cool: I sat down and read about 1500 out of 2300+ lines of perl code and could still understand it nearly a year later. Paged through the remaining ~800LOC, which was mostly trivial elements. Someday I need to get the ‘uncommitted’ test suite committed and work on some cleanup, but it reads easily enough. I don’t claim to be a genius, but hell, most of peoples maintainability comments about Perl are either due to Perl 4 experiences or shotty programmers if you ask me. Sure, I enjoy an occasional game of golf, but I like writing code that tends to explain itself.

Perl, the worst thing I can say about it is autovivification isn’t all it’s cracked up to be, and you quickly learn how to skip reading error messages and just go proof read your syntax. That’s kind of a downside of perl, to track down errors in Perl code, you kind of need to learn proof reading ;).

I like using my brain more than a debugger, but kind of like compilers that report useful info. I ain’t met many that actually do.

I could swear this dog is smarter than me… she’s already got most of the bed, the best of the covers, and sprawled out with a “I know you’re not going to move me stupid” look on her face >_>.

At least I got the laptop ;).

Meaning of “Pressured” in my world

Being nagged insessently whilst trying to concentrate, by some selfish, manipulative, royal bitch that’s been operating on a certified “If I can’t X, no one can Y…Z until” pattern for years — until you would like nothing better in the whole wide universe except to scrunch something in hand and rip it into a hunderttausend fragments.

–> 20+ years of exposure and still legally sane.

A mind blowing thought

Among the numerous things ma has dumped my way in the “No where else to put but it’s *not* allowed to be thrown out” pile, containing all sorts of stuff, was the owners manual to my fathers CB kit.

The shocker? The freaking thing goes as far as including schematics for the radios internal Printed Circuit Boards (PCBs).

I’m used to the typical modern electrical device manual: ya know, the kind that’s written in 6 languages and tells you next to nothing interesting, other than silly warning labels.

I can’t believe that I’ve spent most of the last 5-6 hours thinking about ML dialects (SML / F# / OCaml), Haskell, and Lisp :-/