home.social

#randomforms — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #randomforms, aggregated by home.social.

fetched live
  1. Implemented my shared world canvas and multitouch-handler library, so now we have canvas pan, individual piece rotation, and (after a lot of effort) cutting of rotated pieces!

    The world canvas and multitouch handler were ripped out of #LetterSet into their own libraries, but I had only used their canonical version in #RandomForms, so this was a nice further use. Bonus: all testing for this has been done via my insane iOS-simulator-multitouch-mcp setup!

    #swiftui #BuildInPublic

  2. Implemented my shared world canvas and multitouch-handler library, so now we have canvas pan, individual piece rotation, and (after a lot of effort) cutting of rotated pieces!

    The world canvas and multitouch handler were ripped out of #LetterSet into their own libraries, but I had only used their canonical version in #RandomForms, so this was a nice further use. Bonus: all testing for this has been done via my insane iOS-simulator-multitouch-mcp setup!

    #swiftui #BuildInPublic

  3. Implemented my shared world canvas and multitouch-handler library, so now we have canvas pan, individual piece rotation, and (after a lot of effort) cutting of rotated pieces!

    The world canvas and multitouch handler were ripped out of #LetterSet into their own libraries, but I had only used their canonical version in #RandomForms, so this was a nice further use. Bonus: all testing for this has been done via my insane iOS-simulator-multitouch-mcp setup!

    #swiftui #BuildInPublic

  4. Implemented my shared world canvas and multitouch-handler library, so now we have canvas pan, individual piece rotation, and (after a lot of effort) cutting of rotated pieces!

    The world canvas and multitouch handler were ripped out of #LetterSet into their own libraries, but I had only used their canonical version in #RandomForms, so this was a nice further use. Bonus: all testing for this has been done via my insane iOS-simulator-multitouch-mcp setup!

    #swiftui #BuildInPublic

  5. Implemented my shared world canvas and multitouch-handler library, so now we have canvas pan, individual piece rotation, and (after a lot of effort) cutting of rotated pieces!

    The world canvas and multitouch handler were ripped out of #LetterSet into their own libraries, but I had only used their canonical version in #RandomForms, so this was a nice further use. Bonus: all testing for this has been done via my insane iOS-simulator-multitouch-mcp setup!

    #swiftui #BuildInPublic

  6. @stroughtonsmith I have been working on a “WorldCanvas” library for just this, but it’s taken so much work:
    - a multi-gesture handler (for optionally simultaneous pan, zoom, rotate)
    - a reusable world, that can translate gestures and position from non-world objects to world objects
    - a testing framework for reliably testing both of the above, together

    These are all done separately and in use in #RandomForms, but I won’t be confident in their reusability until I upgrade #LetterSet to use them.

  7. @stroughtonsmith I have been working on a “WorldCanvas” library for just this, but it’s taken so much work:
    - a multi-gesture handler (for optionally simultaneous pan, zoom, rotate)
    - a reusable world, that can translate gestures and position from non-world objects to world objects
    - a testing framework for reliably testing both of the above, together

    These are all done separately and in use in #RandomForms, but I won’t be confident in their reusability until I upgrade #LetterSet to use them.

  8. @stroughtonsmith I have been working on a “WorldCanvas” library for just this, but it’s taken so much work:
    - a multi-gesture handler (for optionally simultaneous pan, zoom, rotate)
    - a reusable world, that can translate gestures and position from non-world objects to world objects
    - a testing framework for reliably testing both of the above, together

    These are all done separately and in use in #RandomForms, but I won’t be confident in their reusability until I upgrade #LetterSet to use them.

  9. @stroughtonsmith I have been working on a “WorldCanvas” library for just this, but it’s taken so much work:
    - a multi-gesture handler (for optionally simultaneous pan, zoom, rotate)
    - a reusable world, that can translate gestures and position from non-world objects to world objects
    - a testing framework for reliably testing both of the above, together

    These are all done separately and in use in #RandomForms, but I won’t be confident in their reusability until I upgrade #LetterSet to use them.

  10. @stroughtonsmith I have been working on a “WorldCanvas” library for just this, but it’s taken so much work:
    - a multi-gesture handler (for optionally simultaneous pan, zoom, rotate)
    - a reusable world, that can translate gestures and position from non-world objects to world objects
    - a testing framework for reliably testing both of the above, together

    These are all done separately and in use in #RandomForms, but I won’t be confident in their reusability until I upgrade #LetterSet to use them.

  11. My solution uses a combination of macOS accessibility APIs and CGEvents directly (not keyDown), the former of which understands the whereabouts of the simulator, the latter for how to find the center of the viewport, set up a two-finger gesture by spawning at the center, option-dragging to a specified input distance, option-shift-dragging to a specified coordinate, then performing one or more gestures therein.

    There has to be a better way!?

    #RandomForms #swiftui #SwiftTesting #macos

  12. My solution uses a combination of macOS accessibility APIs and CGEvents directly (not keyDown), the former of which understands the whereabouts of the simulator, the latter for how to find the center of the viewport, set up a two-finger gesture by spawning at the center, option-dragging to a specified input distance, option-shift-dragging to a specified coordinate, then performing one or more gestures therein.

    There has to be a better way!?

    #RandomForms #swiftui #SwiftTesting #macos

  13. My solution uses a combination of macOS accessibility APIs and CGEvents directly (not keyDown), the former of which understands the whereabouts of the simulator, the latter for how to find the center of the viewport, set up a two-finger gesture by spawning at the center, option-dragging to a specified input distance, option-shift-dragging to a specified coordinate, then performing one or more gestures therein.

    There has to be a better way!?

    #RandomForms #swiftui #SwiftTesting #macos

  14. My solution uses a combination of macOS accessibility APIs and CGEvents directly (not keyDown), the former of which understands the whereabouts of the simulator, the latter for how to find the center of the viewport, set up a two-finger gesture by spawning at the center, option-dragging to a specified input distance, option-shift-dragging to a specified coordinate, then performing one or more gestures therein.

    There has to be a better way!?

    #RandomForms #swiftui #SwiftTesting #macos

  15. My solution uses a combination of macOS accessibility APIs and CGEvents directly (not keyDown), the former of which understands the whereabouts of the simulator, the latter for how to find the center of the viewport, set up a two-finger gesture by spawning at the center, option-dragging to a specified input distance, option-shift-dragging to a specified coordinate, then performing one or more gestures therein.

    There has to be a better way!?

    #RandomForms #swiftui #SwiftTesting #macos

  16. RE: mastodon.social/@everyplace/11

    For real: how do people test very complex gestures? In my #RandomForms sandbox, there’re libraries to:
    - control the “world” canvas, panning & zooming the camera
    - implement the sheet protocol
    - use a custom multitouch recognizer
    - use nested instances of a metal distortion renderer, for the sheet and the shapes

    Any change to any of these can cause huge issues, so I need real integration tests. Afaik default tooling can’t chain gesture modifiers like a two-finger pan into a rotation.

    #swiftui

  17. RE: mastodon.social/@everyplace/11

    For real: how do people test very complex gestures? In my #RandomForms sandbox, there’re libraries to:
    - control the “world” canvas, panning & zooming the camera
    - implement the sheet protocol
    - use a custom multitouch recognizer
    - use nested instances of a metal distortion renderer, for the sheet and the shapes

    Any change to any of these can cause huge issues, so I need real integration tests. Afaik default tooling can’t chain gesture modifiers like a two-finger pan into a rotation.

    #swiftui

  18. RE: mastodon.social/@everyplace/11

    For real: how do people test very complex gestures? In my #RandomForms sandbox, there’re libraries to:
    - control the “world” canvas, panning & zooming the camera
    - implement the sheet protocol
    - use a custom multitouch recognizer
    - use nested instances of a metal distortion renderer, for the sheet and the shapes

    Any change to any of these can cause huge issues, so I need real integration tests. Afaik default tooling can’t chain gesture modifiers like a two-finger pan into a rotation.

    #swiftui

  19. RE: mastodon.social/@everyplace/11

    For real: how do people test very complex gestures? In my #RandomForms sandbox, there’re libraries to:
    - control the “world” canvas, panning & zooming the camera
    - implement the sheet protocol
    - use a custom multitouch recognizer
    - use nested instances of a metal distortion renderer, for the sheet and the shapes

    Any change to any of these can cause huge issues, so I need real integration tests. Afaik default tooling can’t chain gesture modifiers like a two-finger pan into a rotation.

    #swiftui

  20. RE: mastodon.social/@everyplace/11

    For real: how do people test very complex gestures? In my #RandomForms sandbox, there’re libraries to:
    - control the “world” canvas, panning & zooming the camera
    - implement the sheet protocol
    - use a custom multitouch recognizer
    - use nested instances of a metal distortion renderer, for the sheet and the shapes

    Any change to any of these can cause huge issues, so I need real integration tests. Afaik default tooling can’t chain gesture modifiers like a two-finger pan into a rotation.

    #swiftui

  21. Test harnesses beget test harnesses.

    This recording shows a new playground I’ve made to test a new “World Canvas” library. The demo encapsulates all of the common UX patterns from #LetterSet and #wishyouwerehere:
    - multitouch-handler for simultaneous pan, rotate, zoom
    - shape-elasticity for metal effects
    - world-canvas for document-based pan / zoom / state
    - protocol-based sheets with optional metal rendering.

    #RandomForms #BuildInPublic #swiftui

  22. Test harnesses beget test harnesses.

    This recording shows a new playground I’ve made to test a new “World Canvas” library. The demo encapsulates all of the common UX patterns from #LetterSet and #wishyouwerehere:
    - multitouch-handler for simultaneous pan, rotate, zoom
    - shape-elasticity for metal effects
    - world-canvas for document-based pan / zoom / state
    - protocol-based sheets with optional metal rendering.

    #RandomForms #BuildInPublic #swiftui

  23. Test harnesses beget test harnesses.

    This recording shows a new playground I’ve made to test a new “World Canvas” library. The demo encapsulates all of the common UX patterns from #LetterSet and #wishyouwerehere:
    - multitouch-handler for simultaneous pan, rotate, zoom
    - shape-elasticity for metal effects
    - world-canvas for document-based pan / zoom / state
    - protocol-based sheets with optional metal rendering.

    #RandomForms #BuildInPublic #swiftui

  24. Test harnesses beget test harnesses.

    This recording shows a new playground I’ve made to test a new “World Canvas” library. The demo encapsulates all of the common UX patterns from #LetterSet and #wishyouwerehere:
    - multitouch-handler for simultaneous pan, rotate, zoom
    - shape-elasticity for metal effects
    - world-canvas for document-based pan / zoom / state
    - protocol-based sheets with optional metal rendering.

    #RandomForms #BuildInPublic #swiftui

  25. Test harnesses beget test harnesses.

    This recording shows a new playground I’ve made to test a new “World Canvas” library. The demo encapsulates all of the common UX patterns from #LetterSet and #wishyouwerehere:
    - multitouch-handler for simultaneous pan, rotate, zoom
    - shape-elasticity for metal effects
    - world-canvas for document-based pan / zoom / state
    - protocol-based sheets with optional metal rendering.

    #RandomForms #BuildInPublic #swiftui

  26. Added a hilarious touch debug layer to work through the final rotation issues.

    #RandomForms #BuildInPublic #swiftui

  27. Added a hilarious touch debug layer to work through the final rotation issues.

    #RandomForms #BuildInPublic #swiftui

  28. Added a hilarious touch debug layer to work through the final rotation issues.

    #RandomForms #BuildInPublic #swiftui

  29. Added a hilarious touch debug layer to work through the final rotation issues.

    #RandomForms #BuildInPublic #swiftui

  30. Added a hilarious touch debug layer to work through the final rotation issues.

    #RandomForms #BuildInPublic #swiftui

  31. This is getting really good. The editor is now fully functional, and spits out code for the main app to consume. The swapping of shapes still has a few edge cases, but is good enough to proceed.

    #RandomForms #BuildInPublic #swiftui

  32. This is getting really good. The editor is now fully functional, and spits out code for the main app to consume. The swapping of shapes still has a few edge cases, but is good enough to proceed.

    #RandomForms #BuildInPublic #swiftui

  33. This is getting really good. The editor is now fully functional, and spits out code for the main app to consume. The swapping of shapes still has a few edge cases, but is good enough to proceed.

    #RandomForms #BuildInPublic #swiftui

  34. This is getting really good. The editor is now fully functional, and spits out code for the main app to consume. The swapping of shapes still has a few edge cases, but is good enough to proceed.

    #RandomForms #BuildInPublic #swiftui

  35. This is getting really good. The editor is now fully functional, and spits out code for the main app to consume. The swapping of shapes still has a few edge cases, but is good enough to proceed.

    #RandomForms #BuildInPublic #swiftui

  36. Multiple sheets are now supported in the app, and their use-state is remembered as part of the document. Additionally, each sheet can have a mixed set of shape colors! And shape snapping back to the sheet is handled by type and size, or color or effect.

    This video shows a blue shiny sheet commingling with a red standard sheet. Shapes swap sheets, and persist in both space and use across document launches.

    #RandomForms #swiftui #BuildInPublic

  37. Multiple sheets are now supported in the app, and their use-state is remembered as part of the document. Additionally, each sheet can have a mixed set of shape colors! And shape snapping back to the sheet is handled by type and size, or color or effect.

    This video shows a blue shiny sheet commingling with a red standard sheet. Shapes swap sheets, and persist in both space and use across document launches.

    #RandomForms #swiftui #BuildInPublic

  38. Multiple sheets are now supported in the app, and their use-state is remembered as part of the document. Additionally, each sheet can have a mixed set of shape colors! And shape snapping back to the sheet is handled by type and size, or color or effect.

    This video shows a blue shiny sheet commingling with a red standard sheet. Shapes swap sheets, and persist in both space and use across document launches.

    #RandomForms #swiftui #BuildInPublic

  39. Multiple sheets are now supported in the app, and their use-state is remembered as part of the document. Additionally, each sheet can have a mixed set of shape colors! And shape snapping back to the sheet is handled by type and size, or color or effect.

    This video shows a blue shiny sheet commingling with a red standard sheet. Shapes swap sheets, and persist in both space and use across document launches.

    #RandomForms #swiftui #BuildInPublic

  40. Multiple sheets are now supported in the app, and their use-state is remembered as part of the document. Additionally, each sheet can have a mixed set of shape colors! And shape snapping back to the sheet is handled by type and size, or color or effect.

    This video shows a blue shiny sheet commingling with a red standard sheet. Shapes swap sheets, and persist in both space and use across document launches.

    #RandomForms #swiftui #BuildInPublic

  41. Okay the shape sheet is awesome. It now:
    - Supports snapping
    - Supports snapping of a like shape to a non-origin hole
    - Implements the full elastic drag metal shader from the main app, both on peeled shapes and the sheet as a whole
    - Authors a valid ShapeSheetConfiguration for consumption in the main app.

    #RandomForms #swiftui #BuildInPublic

  42. Okay the shape sheet is awesome. It now:
    - Supports snapping
    - Supports snapping of a like shape to a non-origin hole
    - Implements the full elastic drag metal shader from the main app, both on peeled shapes and the sheet as a whole
    - Authors a valid ShapeSheetConfiguration for consumption in the main app.

    #RandomForms #swiftui #BuildInPublic

  43. Okay the shape sheet is awesome. It now:
    - Supports snapping
    - Supports snapping of a like shape to a non-origin hole
    - Implements the full elastic drag metal shader from the main app, both on peeled shapes and the sheet as a whole
    - Authors a valid ShapeSheetConfiguration for consumption in the main app.

    #RandomForms #swiftui #BuildInPublic

  44. Okay the shape sheet is awesome. It now:
    - Supports snapping
    - Supports snapping of a like shape to a non-origin hole
    - Implements the full elastic drag metal shader from the main app, both on peeled shapes and the sheet as a whole
    - Authors a valid ShapeSheetConfiguration for consumption in the main app.

    #RandomForms #swiftui #BuildInPublic

  45. Okay the shape sheet is awesome. It now:
    - Supports snapping
    - Supports snapping of a like shape to a non-origin hole
    - Implements the full elastic drag metal shader from the main app, both on peeled shapes and the sheet as a whole
    - Authors a valid ShapeSheetConfiguration for consumption in the main app.

    #RandomForms #swiftui #BuildInPublic

  46. I was able to reuse a lot of the boilerplate of the last app to quickly scaffold the DocumentGroup version of #RandomForms, so that documents of shapes now exist. It’s rapidly becoming a real app now.

    #swiftui #BuildInPublic

  47. I was able to reuse a lot of the boilerplate of the last app to quickly scaffold the DocumentGroup version of #RandomForms, so that documents of shapes now exist. It’s rapidly becoming a real app now.

    #swiftui #BuildInPublic

  48. I was able to reuse a lot of the boilerplate of the last app to quickly scaffold the DocumentGroup version of #RandomForms, so that documents of shapes now exist. It’s rapidly becoming a real app now.

    #swiftui #BuildInPublic

  49. I was able to reuse a lot of the boilerplate of the last app to quickly scaffold the DocumentGroup version of #RandomForms, so that documents of shapes now exist. It’s rapidly becoming a real app now.

    #swiftui #BuildInPublic

  50. I was able to reuse a lot of the boilerplate of the last app to quickly scaffold the DocumentGroup version of #RandomForms, so that documents of shapes now exist. It’s rapidly becoming a real app now.

    #swiftui #BuildInPublic

  51. @helge @simonbs @BrendanThompson @nighthawk @dimitribouniol

    I pointed Claude Code at the Pushover docs a few weeks ago and and said “First, write an OpenAPI.yaml representation of their api docs, then use swift-OpenAPI-generator to write a CLI to interact with messages. Ensure you can send plain text and multipart payloads.” Then I had it write a skill so future executions would discover it, and ✅.

    (Btw the message make sense if you look at accompanying screenshots for #RandomForms)

  52. @helge @simonbs @BrendanThompson @nighthawk @dimitribouniol

    I pointed Claude Code at the Pushover docs a few weeks ago and and said “First, write an OpenAPI.yaml representation of their api docs, then use swift-OpenAPI-generator to write a CLI to interact with messages. Ensure you can send plain text and multipart payloads.” Then I had it write a skill so future executions would discover it, and ✅.

    (Btw the message make sense if you look at accompanying screenshots for #RandomForms)

  53. @helge @simonbs @BrendanThompson @nighthawk @dimitribouniol

    I pointed Claude Code at the Pushover docs a few weeks ago and and said “First, write an OpenAPI.yaml representation of their api docs, then use swift-OpenAPI-generator to write a CLI to interact with messages. Ensure you can send plain text and multipart payloads.” Then I had it write a skill so future executions would discover it, and ✅.

    (Btw the message make sense if you look at accompanying screenshots for #RandomForms)

  54. @helge @simonbs @BrendanThompson @nighthawk @dimitribouniol

    I pointed Claude Code at the Pushover docs a few weeks ago and and said “First, write an OpenAPI.yaml representation of their api docs, then use swift-OpenAPI-generator to write a CLI to interact with messages. Ensure you can send plain text and multipart payloads.” Then I had it write a skill so future executions would discover it, and ✅.

    (Btw the message make sense if you look at accompanying screenshots for #RandomForms)

  55. @helge @simonbs @BrendanThompson @nighthawk @dimitribouniol

    I pointed Claude Code at the Pushover docs a few weeks ago and and said “First, write an OpenAPI.yaml representation of their api docs, then use swift-OpenAPI-generator to write a CLI to interact with messages. Ensure you can send plain text and multipart payloads.” Then I had it write a skill so future executions would discover it, and ✅.

    (Btw the message make sense if you look at accompanying screenshots for #RandomForms)