Recipe kits, a great alternative to installable libraries

A few years ago, my team was starting a new project which needed a fairly comprehensive set of components from the outset, and we didn’t have the resources to build them from scratch. Our existing components were geared towards a few fairly specific use cases, so we lacked comprehensive coverage of common UI patterns, especially those for information-dense UIs like dashboards and power user tools. It fell upon me to make a quick decision about w…

Read on
  1. Why I’m excited about Server Actions

    Note: this post is focused on React as that’s my framework of choice, I’m aware of other frameworks like SolidStart and Qwik having their own solutions to this problem; but I wanted to focus on the problem more than performing an ecosystem analysis. React and Vercel just announced server actions, with Next.js being the benchmark implementation. They’ll probably be controversial because they’re a little bit magic, but they’re a solution to a prob…

    Read on
  2. Thoughts on Next 13 - Dynamic with some limits

    I’ve been trying out the pre-release version of Next 13 (and by association, React 18.3) for the last couple of months, specifically the parts related to the new router and server components. I suspect a lot of the more nuanced takes will be drowned out by the excitement of its release, so I want to take the opportunity to jot down my thoughts based on the framework as it stands today. It needs to be reinforced that what I’m commenting on is stil…

    Read on
  3. Deriving A Data Model From A Design With GraphQL

    Data modelling is one of those skills that’s needed at nearly all levels of the software development stack. It covers the full spectrum from information architecture to UI, to APIs, all the way to the underlying database tables. When it’s done well, everyone benefits. Customers can easily form accurate mental models, designers and engineers can work together effectively, and analysts can extract and interpret data in a meaningful way. All of this…

    Read on
  4. Demystifying GraphQL Connections

    If you’ve used GraphQL for a while, it’s likely come across its (formally Relay’s) Connection Specification whether you’ve used it or not. It’s a pattern for implementing cursor-based pagination in GraphQL. Relay itself comes with first-class support for working with connections, but the pattern is often used in the wider GraphQL ecosystem — such as with Apollo. Over the years I’ve been working with GraphQL, I’ve seen a number of misconceptions …

    Read on
  5. Automatic Social Cards With Gatsby

    When I decided to revamp my personal website and move my content away from Medium, one thing I knew I'd be losing was some of the network effects that Medium affords. I started thinking of ways to get the same benefits outside of Medium's platform. The lowest hanging fruit was to ensure that were people to share my content on social media, there was a good chance of it looking interesting enough to earn a click. Having worked for a few startups …

    Read on
  6. The Passionless Developer

    For the longest time, a vocal opinion I would hear frequently was that good developers need to be passionate about programming. I’d be exposed to this opinion from my peers, from those senior to me, from people interviewing me, and from the development community as a whole. It reflects badly on me that, for a while, I believed it. We judge developers based on their Github contributions, on their Stack Overflow questions and answers, on whether t…

    Read on
  7. For those Attending a Coding Bootcamp

    First, bit of background. I’m someone who taught himself how to build websites in the mid-90s. I did a Computer Science degree at one of the top universities in the UK, and I’ve been working professionally as a web developer for over 10 years. I’m not a big name developer, but I have a reasonably good reputation in the eyes of some people you may come across on social media. I’ve worked with a few people who’ve entered the industry after attendi…

    Read on
  8. Optimising Your GraphQL Request Waterfalls

    As a technology, GraphQL is starting to gain traction. There are server implementations in a good selection of languages, and client support isn’t far behind. If you want to build your own GraphQL server, there’s plenty of information out there, but if you want to build an efficient one, there’s less guidance. I’ve been using GraphQL since it was a technical candidate, and have made plenty of mistakes along the way, but have been successful in ma…

    Read on
  9. My Thoughts on Inline Styles

    React’s favoured approach to defining component markup (i.e. JSX) isn’t as controversial as it was 3 years ago when people caught their first glimpse of it. There are still many who dislike it out of (what I consider to be misplaced) principle, but most who try it tend to understand the benefits. The road to getting styles to be defined in the same manner — included directly in the component JavaScript file itself — has taken a more indirect rout…

    Read on
  10. You Might Need Server-Side Rendering

    There’s a popular idea within the React community that SSR (server-side rendering) isn’t necessary, and it’s a popular idea for some very attractive reasons. Firstly, it’s not trivial to get SSR working well. It involves a lot of bootstrap code on both client and server, and it often needs to be highly bespoke to your particular project. Additionally, React is very slow at rendering a component tree to a string on the server (there are tricks to…

    Read on
  11. Why I'm Not Using Your Datepicker

    Your poison of choice for building web UIs may vary, but one thing you can always depend on there being, is an ecosystem of feature-rich select boxes, popovers, modals, burger menus, and yes, date-pickers. I’ve been responsible for at least one of them. Aside from the dark times when I had no idea what I was doing with the DOM and ended up using jQuery UI, along with some flirting with chosen, select2 and selectize, I’ve usually tended towards c…

    Read on
  12. Facebook’s Relay Isn’t For Me Yet

    Having worked with Relay more-or-less since it was released on a medium-sized in-house tool, i’ve concluded that despite solving a challenging problem in an elegant way, it’s not quite what I was looking for. To explain, I want to describe the path I took to the point where it appeared like Relay was exactly the solution I was looking for. I began by using jQuery to add small enhancements to pages. This grew into using jQuery for common function…

    Read on
  13. Recipe-Oriented Documentation

    If I’m looking for a library to use in a project, I typically have some use cases in mind. Typically, a library would have been authored to solve a particular set of use cases. So it tends to follow that a library is a good fit if: The use cases align to a strong enough degree The library solves the problem well. Documentation in software projects tends to follow one or more of the following patterns: API-oriented. Typically generated automat…

    Read on