Members' projects are the lifeblood of a community like Cemetech. It generates buzz and brings in plenty of new one-time visitors when TI, Casio, or HP release a new product or piece of software, but for all the months and years in between, our members' projects sustain site activity and interest. Sure, we teach people programming for calculators and computers, but users are much more passionate about their own projects than answering questions, in the end. And in a community where the majority of members are motivated, intelligent, and creative, there are bound to be far more project ideas than hours in the day. I for one have a list of potential projects that grows by the month, and an uncomfortably long list of unfinished projects. While considering cancelling one ongoing project and taking up another, I collected a few thoughts I wanted to share on general skills for choosing your projects wisely, something I fear is sometimes ignored in the calculator-programming community.

One of the biggest problems I've noticed over my twelve or fourteen years as active member in the community is programmers picking projects that are either beyond their abilities or too large to keep them engaged. My experiences with users starting projects poorly-suited to their skills and attention span can be exemplified in two anecdotes, of course with names omitted out of respect. In the first instance, a member discussed a new z80 ASM operating system he wished to write, setting forth many of the features he wanted to include. I and others cautioned him to start small, and upon learning he was unfamiliar with z80 ASM fundamentals like bit math, recommended he start with a smaller project to cement his abilities and build up to the effort, time, and skills required to write a complete OS from scratch. Unfortunately, that suggestion was received as an attack rather than a friendly suggestion, and the project remains unfinished to this day.

A heartening counterexample can be found in another user in a similar situation, who set out to make an ambitious game. I and other users cautioned him to start smaller, and figuring that we had benevolent reasons for our recommendations, he took the advice. Months later, he completed a few smaller projects, then was able to breeze through the larger project; at the end, he looked back and agreed that he hadn't been ready for the larger project. He admitted he likely would have gotten frustrated and quit in the middle. And therein lies the problem: projects need to be grandiose enough to hold the programmer's interest (not to mention potential users' interest during the development process), but not be so elaborate that they're never finished.

And indeed, when so many fun projects cross your mind that you end up with growing lists of future and in-progress projects, it's equally vital to know when to pursue and finally complete one project, and when a project just isn't worth your time anymore. The latter category covers my Sandpaper FTP client for CALCnet and potentially Tetric B for the TI-84 Plus C Silver Edition. In both cases, I came to the realization that continuing to sink effort into the project would be a waste of my time. In the case of Sandpaper, I completed enough of the program to make it a neat proof of concept (browsing the ticalc.org archives from your calculator and transferring programs between calculators over the internet works), but I recognized that in the age of ubiquitous smartphones and laptops, it will never be more than a novelty. Perhaps a decade ago it might have been genuinely useful, but taking the time to support all the other file types and complete the Python code to download files from Cemetech and ticalc.org would be wasted effort.

The project I'm considering permanently shelving, Tetric B, falls in a subtly different category. While it works as it should and could be completed in another 5 or 10 hours of TI-BASIC coding, I don't feel that it represents a truly fun game, and would be too slow when finished. Whether it would be frustrating to users and lead them to think of me as a poor coder, or be disappointed with the TI-84+CSE as a whole, I feel I would be doing users a disservice to release it in its current form. I could spend more time trimming, optimizing, combing over the source code, but is that really a good use of my time when I could instead attempt an ASM version?

The overarching message is that there's no panacea, nor even a clear problem. Programming, building, and hacking are fun and wholesome activities, sure to help you think logically and get further in life. However, those annoying administrative details can't be ignored to keep you (and the community) happy. You must be mindful of starting and never finishing projects, probably because you picked projects you don't have the ability, focus, or time to finish. At the same time, you shouldn't hesitate to attempt something you're not positive you can do, keeping in mind that you can always drop it later and aren't contractually bound to finish the undertaking. What experiences have you had watching yourself and others start, stop, drop, and finish projects? I look forward to hearing reinforcement and counterpoint on my experiences in the calculator coding community.
I guess, as an older member, and having had experience of rolling out software in the workplace I agree entirely with Kerm.
It is human nature to envisage a grandiose plan and monolithic project eclipsing all that has gone before which in the cold light of day is just fanciful. Not many of us are Linus Torvalds or Kernigan & Ritchie or to a lesser extent Tim Patterson. (Google the latter names if you don't know much IT history). I have seen at first hand a small fortune (possibly 1m) spent on a massive IT project for a well known financal institution only for it to be quietly shelved. Within a weekend an IT collegue ported the existing code from the old AS/400 to the new platform and gave us a quick and dirty solution. It happens everywhere in life. So yes, Kerm has put this point across very well. Be ambitious, but start small and write something which you can get out into the community quickly which will generate enthusiasm...
That part is infectious.
Two projects, GlassOS, and LLVM. These killer projects don't want to get completed. Namely GlassOS waiting on LLVM, which I have no idea what I am still getting into. I haven't been doing much with it (llvm) as I am avoiding it :/ A large mass of code with a total lack of understanding, yet projects depending on it... Shelving is always a thought.

My problem isn't that I drop projects, I have too many. My time is spent, although biased, on all of them, however this always gives me more motivation when I get back around to things.
I once started a project that was just too big for me to manage (The Reign of Legends 4's original was simply too massive in terms of maps to keep me motivated), so I know what you mean.

Regarding people who takes remarks saying a project being out of their scope as attacks towards their projects or even themselves, the problem is more how those things are said, rather than if they're said. If you convince the person to work on something smaller, you're helping him a lot. The problem is if you do it using a tone that can easily be interpreted as agressive, then it can be seen as an attack. Of course there are also the people who might feel like you are questioning their intelligence or programming experience, which is why it's always a good idea to not assume that if someone is new to a forum that he's also new to programming, so it's good to ask. Smile

Of course programming experience isn't always the issue. In my current case, it would be a terrible move to attempt starting working on a very large RPG like ROL3 or Illusiat 13, because my interest towards calc programming is now dilluted by other interests and I have much less free time.
+1 for this topic.

Many a time I have had grand plans for new programs to write. Some of them never even got started, some got started but not finished and are gathering dust on my hard drive to this day.

It never ceases to amuse me - I've had a few decent (1-3 year) breaks from the TI community over the last 15 years, yet everytime I get the motivation to start coding on the TI again, a flood of ideas come to me, and my "to-do" list grows significantly. Over the years, I've been lucky to finish one full project during each of my "active" periods (aside from my first 4-5 years in the community). Alien Breed 5 was actually the first time that I've returned to the scene and stayed for a long enough time to full complete the project in one stint.

Of course, as always, during the coding of AB5, my imagination went crazy with ideas for new projects, or even to complete previously started projects (such as Thunderbirds v2 and others). The only difference is that this time, I've remained active for over 12 months, and I'm still very motivated!

As a newbie to the scene, it is very easy to think too big too early, but there is much to be said for holding on to this dream, whilst being patient enough to take the first few baby steps and get good at the basics. Of course, some coders are just naturals, and as soon as they get a basic grip on the syntax & memory layout, they write some amazing programs. Only you can know your own comfort zone, so if writing something new is kicking your butt, try stripping it back at bit and simplifying it, then work on making it more complex when you're comfortable with what you're coding Smile
I think this succinctly summarizes my opinion on shelving projects:

Most of these are at least partially functional and maybe released in some form, but they're all things I'd like to go back to and improve sometime (and I do, occasionally). A few of those are actively in-progress, but most aren't- and the 'archive' directory contains a chronological pile of things that I don't anticipate working on any more.
a prime example of how many projects ive started that i pretty much knew i could never even understand, much less comeplete. my very first project, a loss-less compression routine for documents when i didnt know a bit about z80. im glad this is on the front page, because it really does strike home to a ton of aspiring programmers out there.

there is no need to rush your programming. start out small. doing so will help you learn much more than taking on a single, huge, gut-busting project.
I think we could all learn from this...
http://en.wikipedia.org/wiki/The_Mythical_Man-Month
Perhaps Kerm could compose a corollary for the book to within the context of Z80.
Somewhat outdated now but has lessons to be learned (which have not, incidently).
I wanted to try and port minicraft to the prizm but I wasn't skilled enough in C to do so. So I started with something simple like Tic-Tac-Toe and Connect-4. I'm still not ready but I'm getting there.
Hahaha, this sounds like nearly every game I've ever made Smile I tend to get started, finish a system, finish a menu, start making stuff look good, then as soon as I hit a major roadblock, I put it down to work on later, and then never come back to it Smile I totally agree Kerm, if you don't know what you're doing, you're gonna get nailed later on, once you get down to the nitty and gritty of coding. Sometimes, it's possible just to hardcore it, and end up with a working project but more often than not, lots of projects will die off early for this reason.

Lol and krazyle, you have exactly 404 posts at the time of this reply Razz
I can't help but laugh at myself - since reading this article last night, I've since started trying to write my first TI-83+/84+ app, which is making an app build of Alien Breed 5.

I probably should start with something smaller just so that I make sure I know what I'm doing.. Razz
JamesV wrote:
I can't help but laugh at myself - since reading this article last night, I've since started trying to write my first TI-83+/84+ app, which is making an app build of Alien Breed 5.

I probably should start with something smaller just so that I make sure I know what I'm doing.. Razz
Haha, not even a Hello World App first to make sure you can build Apps? Wink

Rogue: What kind of projects have you completed in the past, out of curiosity, and how many projects would you say you have underway at this point?

Tari: But you at least get a lot of things to a functional state before moving on. I think that's the mark of a very competent engineer or coder; BrandonW tends to do the same in my view.

James_V, the first post: You make a great point about being open to scaling back a project once you dive in and find yourself in over your head, which I didn't considering in my original post. It's a great compromise between shelving the project entirely and charging ahead with something you're ill-suited for. I've only ever thought of heading people off with a more modest project idea before they get thoroughly engrossed in the project.
This is a very useful post and I think I'm the one being referred to by the OS project that went unfinished. Smile I agree that its easy to envision things, but its a total 'nother thing to actually see it through, something I learned a few times the hard way. At current, I have one active project that is being progressed on VERY slowly (not out of lack of skill, but because I'm waiting on another release).
Right now, my main project I'm working on is my Linux OS, although I'm at a dead end of interest at the moment, although I know it could be something great if I manage to get it totally integrated with Filesyst. I was using BatLib for it, but I needed a Filesystem which Xeda very kindly created, but now I'm left to iron out all the little bugs that come with compatibility etc. >< I'm pretty much going to need to start over all the nitty gritty coding. The system itself works, but I need to recreate everything else.

Another one of these uncompleted projects is a Hybrid TI-BASIC Word Processor. It works (kind of) but I definitely need to make it better. I have a working password hasher (just a complex usage of randInt( really...) I have a working program that converts a point into the pixel coordinates... I have a very nice scanner that lets one create a template of the calculator memory that you can compare against, for example, it will tell you if you're missing a var that was there when you created the template. I have a really fast program that simplifies square roots, which was great for Algebra 2, and that's pretty much it. Oh, I also, I have that Physics program which is in the cemetech archives, a game called Sabacc which works. although it could work better...

I hope to soon be working on a program that lets you store passwords etc. in an ecrypted form, although I'm not sure if this is really worthwhile.
I like that encrypted passwords idea. As CALCnet develops and introduces more functions and possibly support for data types on the internet, we may one day be able to log in to accounts like Facebook or Twitter, or even make payments on your calculator. In that case, an encrypted password database may come very handy.
Have you documented and released all of those projects, Roguebantha? If not, you should.

ACagliano: No, the OS project is not a reference to you.
I, for one, can speak as to getting in over my head. Attempting a full grayscale RPG two years ago was something I had neither the time, ability, or skills to complete in a truly satisfactory manner. Hopefull the current reboot will proceed better, but I think this is one of the most valuable pieces of advice that anyone starting out can keep in mind.
I started writing a Kerm simulator, but I found that in order to hold his complex Ego AI, it would require a system several magnitudes larger than what currently exists.
Another problem I noticed in the community is that there are projects that are actually well-sized for the person's programming skills and time, but the project is poorly managed, and it's not just team projects. I saw a lot of solo projects die because the author fell in an endless rewrite loop. Granted, it's good to optimize your stuff if you learn extra tricks after starting your project, but it sucks if every 6 month you end up rewriting everything from scratch, doing absolutely no other progress, then eventually run out of time or motivation to work on it because it took too long.
Kerm, no I have not yet released much of anything beyond the physics program, and the source code for the square simplifier is available somewhere on TI-BASIC dev. Other than that, most of my programs are on only my calculator and my computer.

Just finished another project today actually (considering that I started it yesterday lol) it solves for triangles' sides and angles based on other sides and angles. Very nice looking and I'm quite proud of my actual use of complex variables to save a lot of space Smile
  
Register to Join the Conversation
Have your own thoughts to add to this or any other topic? Want to ask a question, offer a suggestion, share your own programs and projects, upload a file to the file archives, get help with calculator and computer programming, or simply chat with like-minded coders and tech and calculator enthusiasts via the site-wide AJAX SAX widget? Registration for a free Cemetech account only takes a minute.

» Go to Registration page
Page 1 of 2
» All times are UTC - 5 Hours
 
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

 

Advertisement