Angelo Stavrow [dot] Blog

Missives and musings on a variety of topics.

While v1.0 of my first Hugo theme, Indigo, was [released two weeks ago][indigo-released], it was only added to the [Hugo themes gallery][indigo-gallery-link] (and [tweeted about][indigo-tweet] from the Hugo account) five days ago. Since then, I've learned a couple of things that I thought I'd share.

Read more...

Indigo is a lightweight theme for [Hugo][hugo] with [IndieWeb][indieweb] features baked in. It's great for longer-form blogging, placing its focus on distraction-free reading and beautiful typefaces.

Read more...

"Zeus under the covers"

We lost our little buddy one year ago today.

He was the sweetest animal I've ever known. The thing I remember most about him: you barely had to say two words to him, and he'd start purring loudly, probably followed by him flopping onto his back for fluffy belly rubs.

Read more...

A feedback loop is system where the output is fed back into the system as an input. They exist everywhere in nature, and they typically come in two flavours: positive feedback loops, which move things away from a state of equilibrium, and negative feedback loops, which work to preserve balance.

Read more...

Standing still is generally a safe bet. We don't have to expend any energy, and we don't have to concern ourselves much with the possible outcomes. We just stand there, and watch the world go by.

Making progress is a little different. Making progress is risky.

Read more...

"Rhodia A7 notebook with Fisher Bullet space pen"

Since mid-February, a notebook has become a big part of my productivity system. There's something about putting pen to paper that's inherently more satisfying to me than poking at keys to make characters appear on a screen. Over six months later, I'm still writing in it daily.

I don't carry my notebook with me everywhere, though. I carry very little with me, in fact: my phone, wallet, and my keys (and really, only the keys that I need). There's something about the encumbrance of carrying a lot of stuff that irritates me.

On Friday, however, I picked up a Rhodia A7 notebook for a couple of bucks. It's quite small and, paired with a Fisher Bullet space pen, adds very little bulk to my pockets. The first thing I did was completely deface the first page with random lines and scrawl a note to myself on a moving train:

There — now you can use this notebook.

Enjoy.

I've carried it with me for only one full day and I've already filled a couple of pages with some notes based on a phrase I heard.

Now, I could have just as easily captured that phrase in my phone. I'm not sure that the rest of my thoughts on the idea, however, would have flowed as easily. I find that there's something inherently more frictionless with putting ideas into a scrappy little book; it's a very free-form medium, devoid of any requirements for line spacing or margins.

I don't know if transcribing notes to my main notebook will get annoying. Or if that's even necessary, really. And despite the small size, it is one more physical thing (well, two, if you count the pen) that I have to carry around, and I do notice it.

I'm not sure if this new habit will take, but so far it's off to a good start.

Discuss...

Glitch creates randomized project names when you remix a project, and they look something like adjective-noun.glitch.me. You can always rename these later, but oftentimes they’re just too amusing to bother (I’m looking at you, victorious-beer).

So, what if you decided that you were going to remix the node starter app, and then had to spend a couple of hours building an app based purely on the random name you were assigned?

Well, you’d end up with something like Therapeutic Caribou.

I’d been poking at TextBlob in Python over the weekend. Why not find an npm module that handles sentiment analysis to create a little app that takes in what you’re saying and replies based on how positive or negative the sentiment is. I’m using the wink-sentiment module to do this in analyzer.js, but it should be fairly easy to swap out any other analysis module in the rankSentiment() function.

And while we’re at it, why not make it so that you’re just talking to the web app, rather than typing? I’ve been working through Wes Bos’ JavaScript30 course and, as luck would have it, just went through the native SpeechRecognizer project.

Given that this is something that I threw together in a couple of hours, it’s very far from complete — our therapeutic caribou is a pretty lousy conversationalist, there are a couple of bugs around SpeechRecognizer events, and the design is… well, pretty unpleasant. Additionally, I’ve only tested this in Chrome, so I have no idea if it works as expected in other browsers.

With all that said, it was still a lot of fun to throw something together that let me play with a bit of both client- and server-side JavaScript, some neat native technologies like SpeechRecognizer, and some interesting concepts like sentiment analysis.

If you try playing the Glitch Project Name Lottery, let me know what you come up with!

#glitch #javascript #projects

Discuss...

It's been almost four months since I last wrote something. I've been pretty busy over the last little while completely overhauling this site, and there are a few changes that I'd like to point out.

Read more...

Tell me if any of this sounds familiar:

  • Why am I having such a hard time with this? What's wrong with me?
  • Maybe I’m not smart enough to do this.
  • People hired me to do this work, but I'm never going to figure this out. I'm a fraud.

There are at least a couple of common threads with these statements, but I think the most interesting one is that each of these statements is an implicit comparison that I'm making between myself and someone that's, y'know, good at what they do.

And when you're trying something new, it can be really hard to remember that you're trying something new. We approach new things with expectations, adn we typically want to feel smart, we want to believe that we're good at stuff. Eventually, though, Reality pops in for a visit to remind us that we haven't done this before.

“Sorry to rain on your parade there, but this... this isn't going to be a cakewalk for you. Here, have a brick wall!”

And when you run face-first into a brick wall you feel, well, not very smart. Someone else would have noticed that wall. I don't know what I'm doing.

Desirae Odjick wrote a great article at Half Banked on learning about money that I think touches a bit on this:

“What makes you feel confident with money?”

There’s a lot I could say about it, including that building knowledge over time has been helpful, as has seeking out both expert opinions and people “in real life” who are willing to be open with me about it.

But I did that over ten years, at different paces based on where I was in my life. “Start ten years ago,” isn’t exactly the most actionable advice out there, ya know?

When I'm tackling something new, it often feels like I have so much catching up to do. And, sure, if the best time to start was ten years ago, the second best time to start is right now.

But here's the thing with comparing yourself to a ten-year veteran in the field, or comparing your first app to stuff that's won Apple Design Awards or whatever.

They’re not real.

Not really, anyways — at least not outside of the reality you create for them in your head.

Building up the confidence to just get started on something new is hard, and it's especially hard when you're comparing yourself to other folks that have years of experience doing what you're struggling to learn.

And so in your augmented reality that you create for these experts and the fruits of their labour, you can't see the ten years of hard work. The string of failures. The moments of self-doubt and being on the precipice of giving up.

That's why, when it comes to learning, it's nice to see a map of the whole confused, messy journey:

The slick, polished look of the app and its refactored, tidied-up codebase doesn’t tell the real story about how it was created. It skips the hours spent digging into that elusive bug, the time stuck while crafting a particularly tricky piece of logic, and the endless UI tweaks to get it looking just right.

You company's engineering journal on all the cool things that went into your 1.0? That's awesome. Your slick and polished app? Amazing. Your talk on best practices for using, I dunno, whatever JavaScript framework is cool these days? Inspirational.

But when I sit down to try my hand at creating something, it's comforting to have seen that great things aren’t just born that way. Seeing the gaffes and the dead-end experiments that didn't make it into the final artifact is reassuring: when they happen to you, they feel less like failures, less like monumental wastes of time, and more like a part of the learning process.

And therein lies the rub, the disconnect: we talk up the value of learning from others' mistakes, and then put in all kinds of effort to scrub clean that which we put out into the world.

Maybe that's doing us all a disservice. Maybe that's to be expected in an age where we focus on social media over social learning, but maybe we can do better —and get better— by being a little bit less perfect.

Discuss...

I've got some iOS apps as side projects (they're in dire need of updates, but that's neither here nor there). To keep things organized, I use a Manuscript (née FogBugz) account that I opened six years ago for planning work and, more relevant to this post, to capture (almost) all customer feedback. There's a custom mailbox set up with an email address in my business domain, to which customers can send questions and comments about the apps. These emails generate cases that I use for correspondence, and I can then open feature requests, bug reports, and known issues as linked cases in the relevant project.

I say “almost” all customer feedback, though, because not everything gets captured in Manuscript.

What’s missing? You don't get notification emails from Apple for new App Store reviews, so I can't pipe these into Manuscript. Wouldn't that be nice? Instead, you have to check for new reviews manually, across App Stores in all countries where your app is sold, or rely on yet another service. I don't know about you, but I've got enough inboxes to deal with.

Enter Manuscript integrations, powered by Glitch. At their core, integrations let you create microservices in Glitch that communicate between Manuscript and some external service.

And thus came the idea for this project: since every app on the App Store (and Mac App Store) has an RSS feed of its reviews, I could create an integration that checks your app’s feed and, if there’s something new, pull it into a new case in Manuscript.

I'll be working on this in Glitch, and tracking it in GitHub. As of the time of this writing, the Glitch project is just a remix of the sample Manuscript integration, but the work has been planned out; I’ve set a release date of March 25th for v1.0 of the integration, giving me two weeks to build and test the thing. While I’m not especially concerned about the ship date slipping, not having any ship date at all usually means that a project doesn’t get any priority on my calendar.

Last week was all about defining the project itself and the work to be undertaken, and this week is about getting started on the actual code. If you're interested, you can read over the draft functional spec and technical spec. It's open sourced under the MIT license. I’ll be working on this in the open, which I have feelings about (read: anxiety and trepidation), and I’ve also set up a development journal in Day One, where I add short weekly retrospectives on wins and losses for the week.

More to come as I make progress against the milestone!

Discuss...

Enter your email to subscribe to updates.