There are certain conversations I feel like it’s almost impossible to avoid having if you possess a certain interest. Take photo, for example; I can’t count how many times I’ve had to explain my motivation for shooting film in today’s digital age. And in the world of avid computer users, what of this PC / Mac divide that’s been so carefully constructed as a question of personal identity? As an art-loving writer with a modernist sofa, I might seem like a natural Mac. Growing up, I was. Then OSX came along, my hand-me-down Bondi Blue iMac became obsolete, and I found myself face-to-face with my dad’s old work computer, a ponderous Toshiba laptop running Windows 2000. I was in 8th grade, and I was happy to have a computer that was portable, if only so I could use it on my bed.
Since then, I’ve been a PC. I’ve never much liked the PC / Mac conversation, simply because I feel that the comparison is unhelpful and without much meaning. PCs offer more features at a lower cost, but lack the user-friendliness of software and hardware not only designed together but also specifically designed to be intuitive. Windows, it seems to me, has always been more utilitarian. Take the Windows key, which, as far as I’m concerned, is a stroke of true genius. Whoever thought of it should get a raise. Hold it down and press the arrow keys, and – bam! – pure magic, your windows are hopping from one side of the screen to another, minimizing and maximizing, and you haven’t touched the mouse. The Windows “Start” menu, too, especially with its newer search features, is a much easier launchpad than Launchpad. But Macs sure are beautiful. Ultimately, the operating systems (and, in the case of Mac, hardware) represent different visions of what computing can or should be.
Today, I became a PCMac. They’ve always emphasized in my CS classes how important it is to develop in the OS your program will be tested (or in the real world, run) on, so I thought I should double-check with my advisor that it would be okay for me to develop on my trusty ol’ 2009 Windows 7 laptop even though the program will be used on Mac. It turns out that it isn’t, which, upon reflection, makes a lot of sense. For file reads and writes, I’m going to have to worry about things like end-of-line characters, which are encoded differently across different operating systems. The solution was obvious: buy a Mac. So that’s what I did. I was lucky enough to have a family member loan me the money until I have a full time job, and I’m now the proud owner (well, eventual owner) of a 128gb 13″ MacBook Air. It is beautiful, and it confuses me. I have faith that one of these days, I’ll stop hitting FN every time I mean to hit CMD.
I’ve created and defined my database, with a few schema tweaks here and there from what I had planned, and I’m currently hard at work implementing the main data storage classes of my program, Client, Purchase, and Item. In CS108 lectures, I’ve been introduced to the great beauty that is the Eclipse getter/setter generator, and I’ve already put my new knowledge to good use. It’s also interesting and downright empowering to see how easy it is for me to get these classes up and running. I’m almost embarrassed to say so, but this is the first time I’ve ever written a program from scratch, without any starter code. Nevertheless, I have the overwhelming sense that I know just what I need to do, that I know how to do it, and that I know what to Google when my skills fall short. The real challenge has been learning new tools like Git and getting used to developing with both the terminal and graphical desktop applications. I’m accustomed to such polar ends; Eclipse or Vim, but never both at once. There’s such a utility to it, though. There are certain things that are so much easier to edit in the terminal, things that don’t really make sense to edit in Eclipse, like my SQL CREATE TABLE statements. I’m beginning to feel a confidence that has everything to do with the intuition I’ve developed over the last 15 months as I’ve stumbled, fumbled, powered, and occasionally sauntered my way through programming.
I was proud of myself for solving one of those silly but utterly perplexing problems a couple days ago. I could not, for the life of me, seem to get SQLite to stop telling me that I had syntax errors in my table definitions. I was so sure I didn’t, and I’d checked numerous times. Then I realized that I’d named my table “Transaction,” which is a reserved word! “Transaction” may be most accurate, but I opted for “Purchase” to keep things bug-free. I also learned a new reserved Java word that is now my favorite: “finally.”