In the last couple of months, (as a few people here know), I’ve begun rapidly developing many programs and utilities for my TI-68k calculator. But before I get to my current struggle, let me state my backstory.

I’ve been a total nerd when it comes to anything about computing for as long as I can remember. I’ve occasionally tried to do projects like simple video games or little utility scripts for real computers, but over time, I would simply lose motivation or forget about the codebase’s structure after a long stress-induced break. I couldn’t figure out why — month after month, I kept project hopping and gradually built up surface-level knowledge about the most random things — I worked with Python, C++, bash, Batchfile, (extremely basic) x86 and ARM assembly, and a bunch of other things I can’t recall immediately. A lot of my current understanding of programming and general computer function originated in this era.

I would occasionally plan large, ambitious projects by setting up their build systems, Git repositories, and development environments, and then I’d just… lose the spark.

But that changed when I started making BASIC programs for my calculator. After I made the first release of CycleGen, a program template that lets you generate animations of graphs on a TI-89 Titanium, I felt like I had actually made something good for the first time — like my effort had finally been useful enough to have ended up in a real release that someone somewhere might download and use.

And this satisfaction woke something in me that made me want to keep making great things for this little platform. I’m now planning all sorts of small projects that come together to significantly enhance the functionality of the TI-89 Titanium. A grayscale graphing app. A Pretty Print equation editor reminiscent of the one on the TI-84+. A suite of dozens of programs that make programming and FP calculation easier. Maybe even custom programs that can do calculus at a level the built-in CAS can’t do. Maybe even a custom 3D graph renderer. Maybe even a full-on browser based linking app which I could use at school with my Chromebook.

I’ve already come up with mental pseudocode of all of the above, because problem solving is fun to me. However, when I take a step back and think about what I’m doing, it feels like I might be going down the wrong track.

I sometimes wonder if I’m wasting my time by putting in effort to improve a basically dead platform. In the real world, they use Mathematica or MATLAB. On the SAT, people have Desmos these days. In classrooms, they often have calculator models completely different from the TI-68Ks. Besides, the 89T doesn’t even have enough RAM or computational speed to be useful in many scenarios where it may otherwise be used. And if anything happens to a physical unit that makes it unusable, one cannot simply open a tab on another device and keep using my programs as normal. They have to go and buy a new unit of a calculator that’s not even in production anymore.

However, continuing development of the mentioned programs (among others) would be immediately beneficial to me in particular — for one thing, it would make the calc much nicer to use, and that’s everything to me when it comes to getting it to spit out a solution as fast as possible. I will be seeking such solutions very often in my near future full of physics and advanced math classes. Also I just have this fascination I can’t get rid of with analyzing the potholes of AMS and leveling them with my own solutions.

I thought it would be worth mentioning I only have about 15 months before I have to apply to some sort of college in California. And I *am* reaching for the stars here — I’m looking at colleges like Stanford and UC Berkeley, which are very competitive. Will they even care about me showing off my technical skills on a platform that largely has no future? Would I be better off switching back to ‘real’ programming and trying to make something that’d appeal to a broader base?

I’m really confused on the directions I should be taking right now. Should I prioritize form (putting in effort where I do my absolute best work, even if it may be irrelevant to many) or function (putting in effort that more people would recognize)?
Simple answer: Form.

Long answer: We must first tear apart the dichotomy that's been created. Even if each individual project may be able to cleanly be divided as such, that doesn't mean you need to only invest in one or the other. Which is to say: Spend 4 weeks working on your for-fun projects, and then two weeks working on something more "functional". Or even just a day every month--if working on those types of projects is really something you want to do.

The portfolio you'll build by doing good, consistent work is worth more than any individual project contribution, anyway. So you're best off putting your energy into doing good, consistent work. In terms of a "dying" platform and what people use in the real world: Remember, the world is massive, and people like what they know. Research mathematicians may not be using older calcs, but I know MANY software engineers who still use 83+ and 89T calcs for quick calculations and simple visualizations. You may well be improving dozens of peoples workflows with your work.

But more importantly: You will be doing something you enjoy, that's useful for you--the only person you must be useful for.

I can't speak to academia, as I left that as quickly as I possibly could and never looked back. But in my role as a hiring manager for software engineers, I don't really care if someone built something "useful" to others or not. There's something to be said about building software wherein you have a "customer" you need to design for, or working within a team, etc. But if you have a github with some code in it, I'm happy to see that and be able to look at your code quality. And if you're going to produce the highest quality code working on your passion project--do that!

In terms of a more philosophical approach, I align myself with Taoist thought in these regards. The use of what is is what isn't. You should read about the useless Shu tree:

Shu tree wrote:
As for me, I’ve been trying a long time to be of no use, and though I almost died, I’ve finally got it. This is of great use to me. If I had been of some use, would I ever have grown this large? Moreover, you and I are both of us things. What’s the point of this—things condemning things? You, a worthless man about to die—how do you know I’m a worthless tree?


To bear and not to own; to act and not lay claim; to do the work and let it go: for just letting it go is what makes it stay.
Thank you, Merth. It's a great suggestion to balance my time between projects — I'll try it from now and see how it works out.
As always, Merth's feedback is thoughtful and reasonable. Ultimately, none of us gets paid for what we do for the calculator community, and I believe we must do it for one of several reasons:
  1. Because we enjoy it,
  2. Because we need the thing that we're making ourselves,
  3. Because we think other people need the thing we're making, and it's sufficiently fun or challenging to try to make it (see 1), or
  4. Because we think solving a difficult technical problem or building a fun/useful software will bring us fame and glory (see also 1).
I'd argue that (1) is the best reason to make a calculator project, or indeed to work on any hobby project at all. We don't have to monetize or maximize the utility of every single thing we spend any waking hour on, even though it can be tempting to feel like time with unmaximized utility is "wasted" time. The absolute best motivation for any hobby project, in my opinion, is because you want to work on, because it's fun, because you enjoy the challenge of whatever you're solving, and/or because the result of it brings you joy, not because of what it does for other people. Sure, I'm proud of how many peoples' calculators my projects have ended up on, but some of the projects I'm most proud of (e.g. CALCnet) have little practical application in the real world, other than the pride of saying "I made that".

I also volunteer my time at a train and trolley museum almost every Sunday, where our projects restoring hundred-year-old train, subway, and trolley cars can take years of incremental progress per car, and where that car might only be used a few times a year after its restoration is complete. It's not something that is going to become a vital transportation link, or be the world's most popular museum with millions of annual visitors, but I enjoy the work and getting my hands dirty, I enjoy applying a little of my electrical knowledge practically, I learn new skills from the other volunteers, and I get to work and socialize with a good group of now friends. It brings me joy, so I prioritize it in my life.

Finally, I should add that over my now 25+ years in the graphing calculator community, I have seen countless developers announce a huge, ambitious project as one of their first projects, become frustrated and demotivated, and disappear. Conversely, I have seen many developers start with small projects, complete them, and gradually build their way up to big projects, new languages, new platforms. I cannot stress enough how helpful it is to repeatedly succeed at creating and finishing small projects, and work your way up to big projects. Even big projects (as it sounds like you're exploring) should ideally be a succession of small components: e.g. build a simple tilemapping renderer, then add scrolling around, then add a character you can move, then give it rules of where it can walk to, then add objects you can pick up, then an inventory, etc. Each step should be a reasonable stopping point where you can look at what you made, feel proud of it, then plan and move on to the next step.

I wish you luck figuring out what makes you happy, and doing it.
Thank you Kerm for the explanation. I think I'll continue doing great things on the TI-68Ks alongside further development of some other projects. Both you and Merth were absolutely right about how helping myself is automatically a great benefit.
  
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 1
» 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