Dev Doctor: The Prelude

Recently my work hosted a Fix Hack Learn event, where it had some of the characteristics of a hackathon, but included the flexibility for folks to work on some postponed, work-related tasks or learn something new. For me and my small team (just me and a colleague), I chose to start on something to help with developer setup. I call it `dev-doctor`.

Continue reading “Dev Doctor: The Prelude”

Don’t just install things

We’ve all been there. That one weird bug that seems to signal something systematic is wrong with your app. That boilerplate code that makes something more tedious than it ought to be. That inscrutable thing that makes you want to stop trying and *gasp* search StackOverflow or read a blog post for an answer. And while sometimes the answers you’ll find there might tell you how to better use what tool or framework you have at hand, occasionally they will suggest you simply install some tool, which will do the trick without any consequences.

Don’t. Just don’t. Here’s why.

Continue reading “Don’t just install things”

More to come soon

Happy 2023 everyone. After a long hiatus (and a move, and a house purchase and practically all of 2022), now is the time to revisit this blog.

Social media has changed in recent months with the takeover of twitter, and the emergence of Mastodon (and ActivityPub, in general), and I would like to re-engage here. Expect a recap of some cooking exploits, and possibly a few separate projects to reflect what I’ve been up to. Also expect spelling mistakes, and less-than-edited posts (I will trust I know how to cobble together a decent sentence).

So, like the subject says, more to come :~)

Making the Future

I have the habit postponing decisions until I know enough. Sometimes this is good; I can avoid the thrash of haste by letting the information landscape settle. Other times, it is paralyzing. When operating in some novel or obscure environment, there is no way to get enough information to be confident in what next steps to take – in essence, there is no map for me to follow. My struggle is to avoid the latter, which can become an impediment if not managed.

But, what does “enough” mean?

Continue reading “Making the Future”

Twenty Years Of Programming

Twenty years ago, I took a programming class in high school, and I have been programming ever since.

I wish it were that simple. Back then, I wanted to study something creative. In my heart, I loved drawing and considered art school, or following my brother into theater. But in my mind, some technology field seemed sensible. After all, I appeared to have “The knack.” Our barely functional, barely one-year-old home computer was still working. I had figured out how to make simple games on my calculator. And, the dot-com bubble was bubbly. I was unsure.

In spring of 2001, one high school class triggered a fear in me, and helped me make a choice that shaped my career path to this day. This class presented interesting bio-ethical dilemmas with no clear right answers. Consider, for example, the best courses of action regarding euthanasia, or accounting for patients with conflicting medical and religious needs. Issues where either side could be supported or refuted. I found it unsettling that everything was subject to debate in this class, and worried that it was only preparing me for pointless discussion. In truth however, I was afraid of being wrong in an environment where right seemed not to exist or be certain. I balked and asked to switch classes. I did not realize at the time how long-lasting and short-sighted this decision was.

The programming course was split into two sections. The fall half focused on learning basic concepts using Visual Basic, and the spring half was data structures taught via C++. I had already missed that first part, but could switch if I successfully completed the upcoming assignment by the due date. Desperate to switch classes, I set myself to the task. After two weekends of playing catch-up, I turned it in. While the code for that first assignment was obviously uninteresting, it was good enough that the teacher allowed me to switch. My escape from uncertainty and subjectivity was underway.

I learned a lot that spring. I discovered that compiler errors were amazing. My early impression of programming was that almost everything I tried to do failed. I actually found this comforting; there seemed to be a definite limit to what was allowed to run. Making any assumptions was foolish. Programming was mathematical, scientific, and needed to be learned and understood. It was consistent, and unflinchingly fair with its feedback, and there was a permanence to “correct.” Instead of debating with a classmate or some teacher, I was locked in battle with the language and its acerbic compile-time messages. I also realized that my understanding of the problems always seemed to be ahead of my understanding of how to input the code into the computer. My early habit was to “program in English” first. I would write (on actual paper) what I was trying to do as an outline. And if I could not, I knew that I had no chance of teaching the computer how. These lessons remain with me today; the stacks of scribbled-upon papers and fondness for considering every possible outcome are a lingering testament to my hasty upbringing.

I did not continue enthusiastically into college, however. As I mentioned, my fears drove me. Some were reasonable, like concerns of success, or wanting to help my family financially. Others were problematic. I fixated on the lost time, and eventual poverty that creative pursuits might lead to. My young mind found comfort in the cold hard algorithms, and the safety of a field of expertise with unlimited growth. Between semesters, I did wonder what I would have done had I not taken that bioethics class. I wondered what I would have chosen to do if I were less sure that a creative field was so risky. As college wrapped up, I felt confident that I was still traveling an objective path of definite rights and wrongs, and that I had made a wise choice.

Time would teach me that many parts of being a software engineer can be equally subjective. In college, I saw the beginnings of this. I started hearing people debating programming languages and platforms. Later in work, the same thing would happen for frameworks or even tools for frameworks. What’s so bad about writing code you fully understand and control? Why is the popular technology also the best to use? For me, the calm came from creating things I fully controlled and understood. As I gained more experience, more time went into justifying technical decisions, and not whether they worked. I had not avoided subjectivity at all. I just delayed my confronting it.

Things changed again when my career success and progress gave me the illusion that I had escaped my fears. I got reacquainted with my loves and gravitated to the natural intersection of my skills and passions, focusing my growth around user interface development. I started to share my thoughts and opinions on related topics. I discovered whole disciplines focused on just interactions and interfaces. I went back to school for a Masters in Human-Computer Interaction, and broadened my depth of experience with User Experience Design. For years, I immersed myself in the subjective, and tried to fight through the discomfort of the unknown and unknowable.

My main output today is still software, but knowing these other worlds exist is still a big part of my day. When leading projects, I lean on the early lessons. I focus on how to describe goals primarily in human language. I fastidiously document what I do. I work as closely as I can with design and user experience. I play the part of the eventual user in discussion. I do all of these things, so that when I finally get to the code, I can focus solely on the therapeutic translations from idea to intent.

So, yes, I am still programming. But when subjective ambiguity creeps in these days, I tackle it head on.

Seeing is Hearing: The McGurk Effect

As you reflect on this year, consider the conversations you have had. Do you recall times where you found it harder to understand what people were saying to you? If you had to go in to a store, was it harder to understand the clerks? or did they have a harder time understanding you? Have you found difficulty understanding or being understood over Zoom? You are not alone. There is a well-known phenomenon that describes the effect vision has on auditory comprehension.

It’s called the McGurk Effect, and it may be the source of any increases in misunderstanding you have experienced this year.

Check out this video for more information.

While we still have to play it safe, be mindful of this when listening or when speaking, and be patient!

Learning Colemak

I hated the QWERTY keyboard layout from day one. The keys’ locations seemed arbitrary, and none of the common letter combinations were comfortable to type. My hands and fingers hurt after long typing lessons. And after years of practice (22 years at this point), my maximum typing speed reached nearly 70 words per minute, not including the frequent typos. During those years, I heard of alternative layouts, like Dvorak. But Dvorak is so different, and I did not want to start down the “Mavis Beacon Teaches Typing” road again. So, on I typed, not satisfied with QWERTY, but not motivated to start again with some different layout.

Then 2020 came, and I learned about Colemak.

Note: this will likely be the last thing I write about, well, writing. I thought it would be a good exercise to shake the dust off the process before I got to more interesting things.

Continue reading “Learning Colemak”

Writing about Writing

When this year started, I committed to write about my ideas and experiences. I have not written so much these days, and I enjoy storytelling and deep discussions. I also want to expose my thoughts to peer review and feedback.

Then 2020 arrived. I will pause and wish that you and your families and friends are well. We’re doing well also; thanks for asking.

Now, despite the late start, I cannot let pandemics, blazes, or plain laziness be my excuse any longer. So I will answer here what I asked myself, “Why didn’t I do this sooner?”

What took you so long, Andrew?

The first few months of 2020 weren’t full of pinned-up creativity. While I did have more time, I encountered hurdles. I was not very motivated. That lack of motivation makes sense now, but why hadn’t I written anything in 2019, or 2018… or any of the years after grad school? Lastly, what was my strategy for writing more often? If the goal was important to me, how did I think I could go about achieving it?

A few things came to mind.

Problems with my approach

I did not have any strategy for accomplishing my goal.

All I had was a goal. A shapeless and ill-defined one. “Write more often.” Write about what? How much of it? Where? I hadn’t really thought about any of that. I found three areas that cut into not only my time for writing but my time for other pursuits:

Distractions

No matter the pursuit, there must be time to pursue it. Before smart phones, ubiquitous social media and other apps like, YouTube, steaming, etc., I found plenty of time to work on all sorts of projects. Slowly, that time had been whittled away. How can I write, or do anything if my free moments are spent in front of some screen, consuming others’ creativity?

When the pandemic hit, I found that I was spending HOURS on these devices. Screen Time reported multiple hours a day variously engaged in something on my phone, tablet, or computer after work. Hours! That’s a lot of time.

Lack of a Single Source

For anything I could pursue — writing, programming projects, my now-infamous board game — there would be an origin. Some small germ that needed to be nurtured, then planted. As they arose, what had I been doing with them?

Specifically for writing…

  • Some ideas were scribbled in one of my many scattered notebooks
  • Others were collected into various pieces of software: Microsoft OneNote, Apple Notes, or some app like that.
  • Others still were just in my head

I had no clear place to reference past ideas. If I ever managed to claw back some time from these insidious gadgets, I would then struggle to even find something to work on.

Tricky and Ambiguous Topics

Even in those moments with no distractions and a clear idea, I wanted to research, prepare, then present my idea as something unique and new. On one hand, the web is already full of unoriginal posts meant primarily as an advertisement for the author, which I want to avoid. Another issue is that some technical topics may invite debate, which I want to be prepared for. Lastly, I do not want to appear combative or plainly wrong. In those moments, my only task was to consider starting the necessary research BEFORE writing a single word. I never set aside a place to do this work, or to determine if an idea even required all of this effort (or if I still wanted to tackle it at all).

My previous approach relied on a trifecta of unplanned coincidences! If I could simply dispel the call of the apps and gadgets, and quickly find an idea that was clear, unique, uncontroversial, and well-researched, I would have written more.

My New Process

Before I made any more promises to myself, I decided I needed to address these concerns first.

  • How to claim more time back from these gadgets?
  • How to organize my ideas into some cohesive source so I can focus on the writing itself?
  • Once organized, how to make progress on both shorter- and longer-form items?

Gadget Time Limits

Reducing overall screen time is an obvious start. Better use of the necessary screen time also matters. We are all home a lot more than before, so I need to limit the amount of mindless scrolling.

Writing Kanban

I gathered up all dispersed ideas and entered them into a central database using Airtable. After creating the schema, I used the built in Kanban view to help organize the state of the articles, so I can tell at a glance what needs my attention. Each idea has a status: to do, in research, in outline, in draft, in review, and published.

This means I can add refinements to any idea as I go. Airtable also provides a way of creating a new entry form, so I have a simple bookmark to add new ideas from any device.

Organizing all my content in one place like this has helped me research topics and ideas I had, AND let me see which ideas are further along.

Results

Well, I wrote this, so that’s a start. I also came up with a schedule so that I can take all the ideas I have right now and find a time and place for them:

  • Aim for a single, longer post a month
  • Every other week or so, post something of a shorter format, like updates to long running projects I have, interesting finds, or any open source projects I am working on.

The most important result is that I feel like I can actually get more writing done! Hopefully by focusing on what tripped me up before, I can stay focused and engaged on my goal going forward. Maybe I can apply this to some other areas as well.