Tag: computers

Comments and Clarity: On the Value of Coding

abstract business code coder
Photo by Pixabay on Pexels.com

Over on his blog, The Waiter’s Pad, Mike Dariano asks, “How much coding do you really need?” It is an interesting thought piece. He observes that,

What we really mean when we say, “people should know how to code” is that people should be able to use tools to deliver value.

I’ve been coding for most of my life. I saw my first BASIC on a Timex Sinclair. I loved the logic of coding. A year or two later, I got a Commodore VIC-20 and had everything I needed. It took a while before I mastered BASIC, and moved onto other languages, but I did, and today, there are a dozen languages that I can code in comfortably.

After reading Mike’s piece, I thought about what he said about what we really mean when we say people should know how to code. While I agree that it often means that people should be capable of using tools that deliver value, it is the question of value that stuck with me. What value has knowing how to code produced for me? It breaks down into two areas: practical value, and what I call “comments and clarity.”

The practical value of coding

Knowing how to code got me out of the dish room in college and into the cafeteria office, where I began writing programs to help the staff manage the cafeteria budget. That, in turn, led a job not long after graduating–a job and company that I am still with nearly 27 years later. So, yeah, knowing how to code got me a career, and there is obvious value in that. What else? If I have a problem to solve, I can often solve it though code. A few examples:

  • When we were looking for a house, I wrote code that would pull data from listings and filter the list down to the most likely candidates. Instead of manually searching through listings, I had the code do it for me, and we just had to look at the results.
  • When I wanted a better way to track my writing, I wrote my Google Docs Writing Tracker, which worked great for me (and quite a few others) for many years.
  • In order to automate my daily notes in Obsidian, I wrote a script to make it happen and save me a bunch of time.
  • I’ve written countless scripts to automate the repetitive tasks in my life. Some of these are a few lines of code, others are thousands. Together they free up time so that I can focus on the things that are more important to me.

The value of comments and clarity

Comments

It is incredibly difficult for me to hold everything that a big piece of software is doing in my head at one time. This is why comments exist in code. I use comments in code to remind myself why I did something in a certain way, or how a particular function works, or sometimes just a reminder to clean something up later. I’ve even written comments critical of my own code: “This is an ugly hack, but it works” used to be a standard refrain of mine.

Commenting helps me think about there things: (1) how the code works, (2) why it works the way it does, and (3) how it could be improved. Comments are both descriptive and introspective. They are a form of written observation. I have applied this concept to my life more generally:

  • I’ve kept a journal since 1996, which is just another form of commenting, both descriptive and introspective, and one in which I seek ways to improve.
  • In my day job, I am known for having exhaustive notes and documentation on just about everything I do: another form of commenting.
  • I’m rarely without a Field Notes notebook in my pocket to jot down comments and stray thought so that I don’t lose them.

Commenting helps me to understand myself and what is happening around me. It preserves memory, while providing a space to “show my work” and learn from my experience. My comments–journal entries, daily notes, Field Notes notebooks–provide a baseline from which I can look back or ahead for improvement, failures, and learning.

Clarity of thought

A program compiles or it doesn’t. A semicolon in the wrong place, a mistyped variable, a greater than sign instead of a less than sign, a problem with the logic of a decision tree, a faulty data structure–any of these things can prevent a program from doing what it is supposed to. Repeated attention to the strict and unforgiving nature of coding helped to build a clarity muscle, one that strengthens my clarity of thought.

To me, clarity of thought is the ability to focus in on what matters in a particular situation. It is the ability to tune out the pieces that don’t play a role, and look more closely at those that do. It means to look at them from every angle, and then ask, are there other angles I haven’t considered. This is helpful in just about everything I do. What clarity of thought is not, is a Vulcan-like adherence to pure logic. It is not emotionless.

Nowhere has clarity of thought expressed itself more than in my writing. While writing fiction has always been a difficult, often tedious task for me, writing nonfiction rarely is. I began writing the same time I began coding. In high school and college I never had trouble with papers. That clarity muscle that coding helped develop seemed to do the job of organizing the writing for me. In my nonfiction writing, articles I’ve sold, and even here on the blog, I like to think that my style is clear and easy to follow. That clarity comes from the clarity of thought that coding nurtured.

(Often times this clarity comes after seeing a first draft. Case in point: the first draft of this post was 1,700 words and not as well organized. Upon reading it, I cut and restructured it, and hopefully, made it better and more clear than it was in its original form.)

It is for the practical benefits, as well as the benefit of clarity of thought that I have encouraged my own kids to learn how to code. Or at least, try it out and see if they like it.

Clarity of thought has been a good trait for problem-solving. It has also been honed enough to know when not to try to solve a problem. As Mike says in his post,

Rather than “learn to code” we should focus on “learn to solve problems”. Many of those problems will require tools. Some of those tools will be code.

For me, learning to code was the tool I used to learn to solve problems. It led to useful introspection and analysis (the commenting) and a gradual improvement in clarity of thought, both of which have been invaluable tools for problem-solving for me over the years, more than learning to code ever was.

P.S.: Seriously, go and check out Mike’s blog, The Waiter’s Pad. It is excellent.

Did you enjoy this post?
If so, consider subscribing to the blog using the form below or clicking on the button below to follow the blog. And consider telling a friend about it. Already a reader or subscriber to the blog? Thanks for reading!

Follow Jamie Todd Rubin on WordPress.com

Please Insert Disk 9: The Ease of Software Installations

Today is the 20th anniversary of the 9/11 attacks. I wanted to acknowledge this here. Each year, on the morning of 9/11, I pull out my diary from the days immediately before and after and read through it. I still can’t watch the footage on TV. I don’t have anything original to add to all that’s been written about 9/11 these last 20 years. I know that there will be many, many things written today. We all mourn 9/11 in our own ways, and for those who have mourned, and need a respite from what can be a traumatic day of 9/11 posts and news items, I wanted to have a post people could come read that isn’t about 9/11 at all. But I wanted to acknowledge it here. As I said at the end of my diary entry on 9/11/21, “I simply can’t believe this.” I still can’t.

floppy-disk-computer-163161.png
Photo by Pixabay on Pexels.com

I had a problem with my work laptop late last week. I use a MacBook Pro, and I run Parallels for Windows and database development. This has worked well for me for years, and I’ve never had a problem before, but on Thursday evening, Parallels crashes and the image corrupted. While my laptop is backed up, the Parallels image is not. I didn’t lose any data because data is not stored locally, but I needed to bring my laptop into the office to have the image reinstalled. When I got my laptop back, I had a clean Windows install, which meant going through the process of installing Visual Studio, Microsoft SQL Server Management Studio, and RedGate. This has been a time-consuming procedure in the past.

I chose to perform the installations in the evening with the thought that by morning, everything would be ready. After all, it was several gigabytes of installation files. I got the installers for the latest stable release of Visual Studio Enterprise, and SSMS, and began the installation process. It turned out to be far quicker and easier than the last time I had to do a full installation. After an hour or so, all of the software was installed.

Next, I had to configure SSMS to connect to the servers I wanted, but I thought instead that I’d give Azure Data Studio a try instead. This, too, seemed surprisingly easy to setup. Within a short period of time, I was able to connect to the servers I wanted; I was able to connect to git repos from directly in ADS, something I’d had to use RedGate for with SSMS; and I had access to Jupyter notebooks, which was an added bonus.

During this process, I noticed that both Visual Studio and Azure Data Studio now have native Mac versions. So I installed those on my Mac. Those installations were even easier (The architecture of a Mac piece of software is entirely self-contained within a “package” file that represents the application.) I then pulled the git repo for the big software project my team is working and to see if it would compile cleanly on my Mac. It did! It is now looking like I need to rely less and less on the Parallels instance.

Later, reflecting on how easy the installation was, I realized just how far software installations had come in the years I’ve been working with computers. The first install I did, when I was 11 years old, was for my Commodore VIC-20. I installed a Hangman program from the tape drive that was attached to my computer. Tape drives, in my experience, are notoriously unreliable. It often took several frustrating attempts to get the program loaded, and once it was loaded, I no longer felt like playing.

In the early years of college, I remember installing WordPerfect from 5-1/2 inch floppy disks. By my senior year in college, I’d moved to the far superior (in my opinion) Word 5.5 for DOS, which took a small stack of 3-1/2 inch floppy disks to install.

When I first started at my job, Visual Basic 3.0 required 3 installation disks. You had to put one in the drive, wait until that part of the installation had completed, then switch to the next. By the time the late 1990s rolled around, Visual Basic 6.0 came on a CD-ROM.

I can remember installations of Microsoft Office that took 12 or more disks–in some instances 20 disks, if memory serves. You couldn’t start the installer and walk away because you had to change each disk as it finished loading. Anyone who used computers in that era remembers the frequent messages “Please insert disk 9.” And heaven help you if one of the disks failed to work halfway through the installation.

It is possible that I imagined, back in 1995 or 1996, how wonderful it would be to simply be able to install the software you wanted without need of a disk. Just answer a few brief questions and BAM! the software was there on your machine, ready to use. This was just the kind of daydream I could see having, while sitting in someone’s office, waiting for Disk 9 to finish so that I could put in Disk 10, and wondering if the installation would be finished by lunchtime.

Today, my daydream is the standard. Want a piece of software? In most cases, click or tap the Install button from an App Store and it loads on your device within seconds. In some cases, as in installing Visual Studio, you have to download the software directly from the website. But the process is still far easier than it was 25 years ago. You rarely have to worry about configuration files, or which type of processor you are using; the installers figure this all out for you. If you are missing a critical system component, the installers know that, too, and will grab and install the necessary software. Then, too, the software will keep itself updated, which saves a ton of time in the long run.

Installing software used to be a real headache, but it has become so easy these days that I hardly even notice it. It is one of those things about technology that I simply take for granted, forgetting how different it used to be when I was starting out. Twenty years ago, software was still fairly difficult and time-consuming to install. Installations have come a long way. It makes me wonder, what will software installations look like twenty year from now?

Did you enjoy this post?
If so, consider subscribing to the blog using the form below or clicking on the button below to follow the blog. And consider telling a friend about it. Already a reader or subscriber to the blog? Thanks for reading!

Follow Jamie Todd Rubin on WordPress.com

Leopard upgrade

Apple’s newest OS upgrade (OS 10.5, codename, “Leopard”) was released on Friday. There’s a ton of cool new features and I decided I’d head over to the Apple Store and pick it up. At the same time, in the back of my mind, I’d been thinking for a while now that it was time for a new laptop. I’ve had my iBook for 2+ years and I’ve really wanted one of the newer Intel-based MacBooks. So today, I killed two birds with one stone.

I bought a new MacBook, and that came with an upgrade to OS 10.5.

I was given the Federal contractor discount, which saved me a little over $100. I am now the proud owner of a MacBook 2.16 GHz Core Duo with 1 GB of RAM, 120 GB hard disk, built-in iSight, and all of the usual Apple bells and whistles. And as always, I also got the Apple Care to go along with it.

All told, it cost me $1,500.

I’m in the process of upgrading the machine to Leopard as I write this.

Now all I need to do is figure out what to do with my old laptop. I was going to give it to Doug, but he doesn’t want it. Most of my friends already have laptops. I don’t want to sell it on eBay. If I can’t find a friend who can use it, then I’ll donate it to charity.

Ah, sleep!

I ended up sleeping about 12 hours last night. As I mentioned, I went to bed at 4:30 PM. I woke up briefly around 10:30 PM. I ate something, got my things ready for work the next day and then watched an episode of Magnum P.I. By 11:30 PM, I was back to sleep. When I woke up this morning at 6 AM, I felt completely refreshed.

Most of the work day today has been taken up having my work laptop refreshed. Getting it re-imaged didn’t take too long but I have huge lists of software that I have to go back and install that is not on the standard image. Not to mention over 50 “Windows Updates”! It looks like it will take me the rest of the day to get my machine back into the state that it was in prior to these problem.

I have a session with Bernard this afternoon and I am feeling a little guilty because I have not worked out since my last session on Thursday.

Computer woes!

I’m too exhausted to even begin to get into all of the computer woes we are having at my work right now. My work computer was messed up and I’m in the middle of rolling out one software project and starting on another. I literally could not work from the office this morning, so I got a loaner laptop, brought it home and am working from here.

I’m struggling just to keep my eyes open at this point, but I can go to bed early tonight!