A headshot of Andrew James

Andrew James

Senior Software Engineer
  • Total Posts
    14 articles
  • Total Categories
    11 categories
  • Tags
    All

Articles

Enjoying the blog?

If you'd like to support my work and stay up to date, click here to follow the RSS feed. You can also click the cup to buy me a coffee ↘️

  • Sponsored
  • So you want to game the system and get promoted?

    A guide to stacking the odds in your favour to get to the next level.

    Read the article
  • So you want to work remotely?

    Tips and product suggestions for setting up an effective remote workstation.

    Read the article
  • Building an Accessible Menubar Component Using React

    Create an accessible Menubar based on the WAI-ARIA design pattern for a menubar widget.

    Read the article
  • So you want to write a Groom’s speech?

    Advice for the groom to help him create a memorable and meaningful wedding speech.

    Read the article
  • So you want to build a PC?

    An overview of the main hardware components you will need to build a desktop PC.

    Read the article
  • Multiple Entry Points in Create React App Without Ejecting

    Create multiple entry points without ejecting from the safety net of Create React App.

    Read the article
  • So you want to WFH?

    Tips maintaining focus and effective communication whilst working from home.

    Read the article
  • Total Views
    8,482 total views
  • Total Subscribers
    247 subscribers
  • Total Videos
    64 videos
Post
    • @
      ajames.dev
    • Total Followers
      372 followers
    • Total Posts
      1,665 posts
    Post

      Featured

      Andrew James

      ajames.dev
      ajames.dev/social is live 🦋
      
      - Built with the @atproto.com client api
      - Profile information summary
      - Pinned post as featured
      - Collection of posts from my 'Latest From Followers' feed

      Andrew James

      ajames.dev
      Let's see what all the @atproto/api fuss is about
    1. Replies
      1
    2. Repost
      0
    3. Likes
      1
    4. Replies
      2
    5. Repost
      1
    6. Likes
      8
    7. My Feed

      The latest posts from my account and others that I follow on Bluesky

      Andrew James

      ajames.dev
      France look unstoppable. It’s hard to imagine any other nation walking away with the #sixnations trophy
    8. Replies
      0
    9. Repost
      0
    10. Likes
      0
    11. Laurie Voss

      seldo.com
      Managed to outdo my plans for not watching the state of the union by getting a flat tire 90 minutes tow truck ride away from home.
    12. Replies
      2
    13. Repost
      0
    14. Likes
      17
    15. Andrew James

      ajames.dev
      Will you see me complete Slay the Spire on Ascension 20?
      Probably no.
      
      Will I have some fun along the way?
      Also No.
    16. Replies
      0
    17. Repost
      0
    18. Likes
      0
    19. Ian Coldwater 🧊🚫

      lookitup.baby
      was going to answer my email tonight and ended up paying ten families' rents instead. oops
    20. Replies
      5
    21. Repost
      8
    22. Likes
      173
    23. dan

      danabra.mov
      first pieces of @inlay.at are now open source at tangled.org/danabra.mov/...
      
      🔮 Inlay "browser" prototype (hono+htmx): inlay-proto.up.railway.app
      
      📝 Inlay ProfilePage component from the above demo: pdsls.dev/at://did:plc...
      
      📜 Tests describing the Inlay rendering model: tangled.org/danabra.mov/...
      // ============================================================================
// inlay render — specification tests
// ============================================================================
//
// inlay is a UI component system on the AT Protocol.
//
// Elements reference components by NSID — <com.example.PostCard uri="...">
// is an element whose type is the NSID com.example.PostCard. An NSID is
// just a name; it says nothing about where the implementation lives.
//
// A pack (at.inlay.pack) maps NSIDs to concrete implementations. Each
// entry points an NSID at a component record URI (at://did/at.inlay.component/rkey),
// so the same NSID can resolve to different implementations depending on context.
//
// A component record (at.inlay.component) defines what happens when the
// element is rendered. It has one of three body kinds:
//
//   - no body         → a primitive; the host knows how to render this
//   - bodyTemplate    → a stored element tree with Binding placeholders
//   - bodyExternal    → an XRPC endpoint that returns an element tree
//
// Resolution algorithm:
//
//   1. Start with an element like <com.example.PostCard uri="at://...">.
//   2. Scan imported packs for a component that implements com.example.PostCard.
//   3. Resolve the component record and switch based on body kind:
//      a. no body       → done, it's a primitive.
//      b. bodyTemplate  → substitute Binding placeholders with the
//         element's props (and optionally a fetched record when the
//         component declares that it's a "view" for some records).
//      c. bodyExternal  → call the XRPC service, passing props.
//         Children can be passed too, but they're opaque to the callee.
//   4. Recurse into the expanded tree until everything resolves to
//      primitives. This can be done to completion or (better) streamingly.
    24. Replies
      6
    25. Repost
      10
    26. Likes
      61
    27. Henri Helvetica 🧑🏾‍🚀🇭🇹

      henrihelvetica.bsky.social
      ==== Hotel 🛜 SUMMARY ====
      Uplink capacity: 51.079 Mbps
      Downlink capacity: 49.170 Mbps
      Uplink Responsiveness: Low (574.523 ms | 104 RPM)
      Downlink Responsiveness: Medium (125.597 ms | 477 RPM)
      Idle Latency: 64.058 milliseconds | 936 RPM
    28. Replies
      0
    29. Repost
      0
    30. Likes
      0