Daily 012: Stickers are Better than Stuckness (and that is OK)

New Stickers Happy Thursday! This week I’ve been bumbling-through the the new code experience, designing and implementing a web application system that will be the foundation for the next couple of years of work. I’m taking the time to iterate the system design so it is more consistent and easier to use by developers; I learned recently that this is called Developer Experience or DX, the technical counterpart to User Experience/UX! In ye olden dayes, I think DX would have been called simply “Tool Engineering”, and this was a position that was necessary but kind of pooped-on by other developers doing flashier front-end facing things. I like the idea of a cool label like DX. That probably is more my wheelhouse than front-end (though don’t get me started on the state of UI design…)

But I digress! I’ve got some new laptop stickers to apply, and I’m assessing a second week of whether diet affects my productivity. Also I have some thoughts on task gloom, the feeling of having to-do items weighing heavily on me even though there’s no reason for it. That and more after the jump!

Code Stuckiness and Task Gloom

As I mentioned in the pre-amble, I’m making a new code system that frankly I thought would be done two weeks ago. I had come up with a conceptually-simple ideal in my head, and it all passed my refined gut check. Implementation would be easier, I laughingly thought, since I have about 5 years of Javascript experience under my belt now and a lot of working code that would speed the process along!

Whoops. Not so. I should have known better once I made the decision to use the new Promises and Async/Await support of Javascript ES6 and ES7. I had written very similar code in the past that accomplished similar things, but the implementation was a bit “horsey” and I figured it would be good to start using these new features as THE STANDARD WAY of handling chains of asynchronous events. There are at least 12 different kinds of asynchronous code occurences in our codebase (I counted) and they all use different semantics, which makes it harder for our small devteam to remember how to do something without looking it up somehow. Since the semantics themselves aren’t entirely obvious, this takes time and leads to brittle copy-and-pasted code. The new system would allow us to keep those old conventions that worked great AND lay the foundation for an improved unified event/messaging system with automatically shared state across an entire local network of webapps.

Now that I’ve actually said that out-loud, I feel a little silly thinking that would have been something I could knock-out in a few days. There has been much resistance and weeping over the past few weeks of the following types:

  • How the hell do Promises actually work? – I finally had to rewrite the documentation based on an internal model of how I thought they must be implemented. Then I confirmed these thoughts by looking at one of the Promise polyfills, which was written in that style of Javascript that resembles Haiku and is intuitive only by programmers who grew up with Javascript as (I am guessing) their first language. I’m an older programmer with experience in other programming paradigms. At least I’m not alone in this; I was heartened that my blog-crush Gina Trapani went through the same thing :-)

  • Argh, which style of code to choose? – One of the great things about Javascript is just how expressive you can make it if you can wrap your mind around its “everything is an object” model and understand how it manages variable scope through closures. The bad thing about Javascript is that language challenges that were solved in the 1970s are being patched onto it after-the-fact, so it has sprouted all kinds of new patterns that are a hybrid of the “good parts”, “great ideas from other languages”, and “this is the current meta for writing poems in Javascript” using the tool-of-the-week. Because of this, there are all kinds of ways to implement an “object” that does things, and even more ways to define how it is standardized into a code module. In other code environments there is ONE WAY to do this, not hundreds. To be fair, it IS kind of cool being able to invent new language paradigms with Javascript, but not so cool having to guess at which model is being used by a particular code library.

  • What’s the cleanest way to model and document this so our devs can use it? – I actually like doing this, but it has been taking a long time. It makes me question my competence. It makes anxious about how long it takes, and my impatience flares up in the form of anger at small things. It’s not a good state of mind to be in.

This is related to what I was calling task gloom earlier. This is the feeling that there are so many tasks I also should do, but I can’t do them because I feel “stuck” on my main area of focus (i.e. this code task). I’ve noticed that just KNOWING that there’s work queued up makes me unhappy. I think this maybe is what some people call being overwhelmed, but I experience it more as ANGER that leads to INACTION.

There are a few coping mechanisms that I have been trying to get around this. First, I’m trying to remind myself that **it’s OK to enjoy the journey of puzzling things out, and that there’s time to do it. I am terrible at waiting for things that I think “should” be under the control of my own will. However, I’m trying to let go of that and just let things take the time they need. And also just let other productive things happen. I’m getting better at it. This “Slowing Down” TED Radio Hour episode was really helpful in making me feel better about the process; the segment on procrastination and creativity by PRE-crastinator Adam Grant was particularly good for me.

Anyway, I’m feeling better about it. We’ll see how things feel next week.


In more light-hearted news, I’ve been shopping for Sam and Max stickers to put on my laptop. Created by illustrator Steve Purcell in the 80s, this comic book dog and rabbit duo are “Freelance Police” really tickled me when I returned to the USA for college; it was my first comic book purchase ever. Since then Sam & Max have been in video games and even on network television, and I wanted their corporeal sticker forms plastered firmly on the back of my laptop.

Max!Game Sam and MaxTelltale Sam and Max

I ordered these various stickers from RedBubble, a print-on-demand tsotchke store that hosts a lot of artist-created / blatantly-stolen pop cultural merch. Despite the dubious status of the artwork, I’ve chosen 3 of the 4 designs that will eventually adorn the aluminum lid of my Mac. Not sure, though, which one is right. I like the sinmple design of the left-most one, but where’s SAM?. I like the retro 8-bit quality of the middle one, which is from the 1993 LucasArts adventure Sam & Max Hit the Road, but this was not my first exposure to the characters. The right-most one shows BOTH Sam & Max, but I think it is redrawn by a different artist or is from the TellTale game. The sticker I’m not showing here is from one of the original color collections (right era) but is muddily-reproduced (ugh) and doesn’t pop, plus it is likely a scan that someone uploaded (thus stealing from the copyright owner). Sigh.

Other Happenings

Unnamed PodcastMy friend Sid Ceaser and I recorded three more podcasts last week; episode 86 dropped today on the website. It’s also available on iTunes. You can also watch the livestreamed video on YouTube.

Facebook PollI asked Should I crosspost links from the blog to the Facebook page? and the poll results are in! To my surprise, 96% wanted to see those links; I thought they would have been annoying duplicate content but Facebook IS the primary way for a lot of people to keep up-to-date. So, I’ll start crossposting on the David Seah (Dot Com) Facebook Page now.

That’s it for today! Sorry for the long post; I’m still getting used to this format. I probably could just choose to write less, but I historically have been bad at that. Which is why I try to bold text to help it easier to skim.

What’s Up Dave Livestream Archive for March 29