Justin Duke

What Vue needs next

Note This is gonna sound like a negative essay. Which it kinda is. But it's very much not a condemnation of Vue!

Vue is great. You should try Vue.

If I had written What Vue Doesn't Need it would be an incredibly long post! This is just things I wish were better about it.

I’ve been using Vue a lot recently on a few test projects, and most notably on Buttondown.

Buttondown’s frontend is 100% Vue: around twenty screens (which are themselves components) and around thirty miscellaneous components, tied together with Vuex and Vue-Router.

Overall, Vue is a really great tool, and the first word I’d use to describe it is pragmatic. Almost everything feels and acts sensible; there are tremendously few times that I am confused or surprised by how it works, which is legitimately novel (and wonderous) after the hours and days and weeks I’ve spent pulling my hair out dealing with random React and Webpack arcana.

Still, there are some bugaboos that I think arise from Vue’s current niche as a “lightweight” approach to creating a functional SPA, in much the same way that Flask carved out a niche as being a lightweight alternative to Django.

Read more →

Forcing functions in everything

Kelly Sutton wrote a great article about how TDD impacts software design:

Design Pressure is the little voice in the back of your head made manifest by a crappy test with too much setup. It’s a force that says when your tests become hard to write, you need to refactor your code.

I think this is absolutely correct, and touches on a larger concept that I’ve been internalizing over the past few months – that the best methods for evaluating the soundness of a codebase come from activities adjacent to the codebase. (Or, to use fewer syllables, if it sucks to do something with the code, then the code probably sucks.)

Read more →

Developer experience is the ball game

I’ve read two bad takes recently on how “faux native” technologies are considered harmful.

The first is alarmingly titled Electron is flash for the desktop:

Also all you web devs: Go learn C or Rust or something. Your program runs on a computer. Until you know how that computer works, you’re doomed. And until then get off my lawn shakes fist.

The second, a little less insufferable, is about an iOS developer’s experience with React Native:

Chances are that your finished RN app is going to feel like a not-quite-native iOS app and a not-quite-native Android app. Some people will have a bigger problem with this than others and most users of the general population won’t notice. But you do risk losing platform specific niceties that users will notice.

Both of these articles make some fair points, even if they’re not cogent overall.

Read more →

A bigger pan

Here’s an old joke (or story, or fable, or whatever you want to call it) that I’ve heard some variation of a dozen times.

The new Jewish bride is making her first big dinner for her husband and tries her hand at her mother’s brisket recipe, cutting off the ends of the roast the way her mother always did. Hubby thinks the meat is delicious, but says, “Why do you cut off the ends — that’s the best part!” She answers, “That’s the way my mother always made it.”

The next week, they go to the old bubbie’s house, and she prepares the famous brisket recipe, again cutting off the ends. The young bride is sure she must be missing some vital information, so she askes her grandma why she cut off the ends. Grandma says, “Dahlink, that’s the only way it will fit in the pan!”

Read more →

Creating Hacker News Share Links Seeded with a URL and Title

I was building out simple share links for a client a while back; they’re a technical client, so a lot of their content makes more sense on Twitter and Hacker News than say, Facebook. Hacker News is a great source of traffic and engagement from a hyper-technical audience, but its sharing ecosystem isn’t super baked out: we wanted a way to pre-seed a link submission with a URL and title, but couldn’t find an obvious way.
Read more →


Last week I released Floradora! It’s a tiny little Mac menu bar app. This gif explains it easier than words: In case you don’t get the gist immediately: it’s a thing you click on to get a text box to send yourself emails. It’s basically Captio for Mac. (As a sidebar: if you don’t already own Captio, buy it immediately. It’s tremendously useful.) Why I made it So I’m going to basically lift the product description I used for the iTunes Store, because it’s both folksy and accurate:
Read more →

Notes for a younger programmer

(A living document.) If you are faced with a question to which you don’t know the answer, spend fifteen minutes looking for the answer yourself. Then ask someone else. There is no shame in asking questions. There is a great deal of shame in being too proud to ask questions. Always leave a codebase cleaner than you found it — whether it’s adding documentation, cleaning up syntax, or fixing an edge case.
Read more →

Packing as premature optimization

You are getting ready for a trip to Florida. It’s your first vacation in forever, and you couldn’t be more excited; no work, no stand-ups, just a week of sun and relaxation. You’re even going to pack your bags a day in advance, that’s how excited you are! Your flight is on Tuesday, and usually you end up making a game out of how much stuff you can fit in your weekender before the Uber reaches your apartment; but its a Monday evening, and you’ve finished cleaning your apartment and you’ve got your bags out on the table and everything.
Read more →

Your legacy code matters

Craig Hockenberry tweeted about some stuff a couple nights ago: That site was built with using 1997’s state-of-the-art HTML and CSS. Eighteen years later, it still renders as we intended. — Craig Hockenberry (@chockenberry) November 18, 2015 On the other hand, an app I wrote in 2008 can no longer run on any device or OS version. It’s completely lost to time. — Craig Hockenberry (@chockenberry) November 18, 2015 There’s a whole generation of young iOS developers who don’t lament leaving a legacy of work.
Read more →

Liquid trinkets

I’ve been messing around with a lot of Shopify development the past couple months. It’s a pretty neat platform that I want to talk about more in depth at some point in the future, but the number one cause of frustration 1 is dealing with Liquid, their in-house template rendering engine which seems to pride itself on straddling the line between “holy shit this is awesome” and “holy shit why can’t you do this basic task.
Read more →
© 2017 Justin Duke • All rights reserved • I hope you have a nice day.