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.…
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…
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…
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…
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…
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…
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…
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…
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…
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…
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…
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,…
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…
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…