{"total": 3874, "rows": [{"id": "9c0DKGcSEfC_iF-zJBy1Rw", "created": "2025-07-22T15:45:57.918285+00:00", "updated": "2025-07-22T15:45:57.918285+00:00", "user": "acct:judell@hypothes.is", "uri": "https://news.ycombinator.com/item?id=44625292", "text": "", "tags": ["XMLUI"], "group": "__world__", "moderation_status": "APPROVED", "permissions": {"read": ["group:__world__"], "admin": ["acct:judell@hypothes.is"], "update": ["acct:judell@hypothes.is"], "delete": ["acct:judell@hypothes.is"]}, "target": [{"source": "https://news.ycombinator.com/item?id=44625292", "selector": [{"type": "RangeSelector", "endOffset": 351, "startOffset": 0, "endContainer": "/center[1]/table[1]/tbody[1]/tr[3]/td[1]/table[2]/tbody[1]/tr[257]/td[1]/table[1]/tbody[1]/tr[1]/td[3]/div[2]/div[1]", "startContainer": "/center[1]/table[1]/tbody[1]/tr[3]/td[1]/table[2]/tbody[1]/tr[257]/td[1]/table[1]/tbody[1]/tr[1]/td[3]/div[2]/div[1]"}, {"end": 102009, "type": "TextPositionSelector", "start": 101658}, {"type": "TextQuoteSelector", "exact": "This makes a lot of sense: with AIs generating a large amount of code, the challenge moves towards validation and testing. If you generate towards a higher level of abstraction, there's less code and less moving parts to be reviewed and validated. Think of it as low-code/DSLs for GenAI, still code, but with less technical details to review and test.", "prefix": "o 2 days ago  | prev | next [\u2013]\n", "suffix": "replyatbpaca 1 day ago  | prev |"}]}], "document": {"title": ["XMLUI | Hacker News"]}, "links": {"html": "https://hypothes.is/a/9c0DKGcSEfC_iF-zJBy1Rw", "incontext": "https://hyp.is/9c0DKGcSEfC_iF-zJBy1Rw/news.ycombinator.com/item?id=44625292", "json": "https://hypothes.is/api/annotations/9c0DKGcSEfC_iF-zJBy1Rw"}, "actions": [], "mentions": [], "user_info": {"display_name": "Jon Udell"}, "flagged": false, "hidden": false}, {"id": "ul3b3GcSEfCimlv4ddK3EQ", "created": "2025-07-22T15:44:18.198200+00:00", "updated": "2025-07-22T15:44:18.198200+00:00", "user": "acct:judell@hypothes.is", "uri": "https://news.ycombinator.com/item?id=44625292", "text": "", "tags": ["XMLUI"], "group": "__world__", "moderation_status": "APPROVED", "permissions": {"read": ["group:__world__"], "admin": ["acct:judell@hypothes.is"], "update": ["acct:judell@hypothes.is"], "delete": ["acct:judell@hypothes.is"]}, "target": [{"source": "https://news.ycombinator.com/item?id=44625292", "selector": [{"type": "RangeSelector", "endOffset": 163, "startOffset": 0, "endContainer": "/center[1]/table[1]/tbody[1]/tr[3]/td[1]/table[2]/tbody[1]/tr[194]/td[1]/table[1]/tbody[1]/tr[1]/td[3]/div[2]/div[1]/p[4]", "startContainer": "/center[1]/table[1]/tbody[1]/tr[3]/td[1]/table[2]/tbody[1]/tr[194]/td[1]/table[1]/tbody[1]/tr[1]/td[3]/div[2]/div[1]"}, {"end": 87138, "type": "TextPositionSelector", "start": 86567}, {"type": "TextQuoteSelector", "exact": "Looks neat!As humans augmented with agents write more code, solutions that require less context shifting to get stuff done will win.A common web stack may include API handlers, OpenAPI spec, generated TypeScript definitions, generated TypeScript client, React logic and effects code, TSX code, HTML, and CSS.This generally needs filesystem watchers, code generators, transpilers, compilers to get stuff done.Something that can go from a backend handlers straight to terse markup for reactive UI would be a massive simplification to all this, and a big productivity boost.", "prefix": "ke 1 day ago  | prev | next [\u2013]\n", "suffix": "replylelanthran 1 day ago  | par"}]}], "document": {"title": ["XMLUI | Hacker News"]}, "links": {"html": "https://hypothes.is/a/ul3b3GcSEfCimlv4ddK3EQ", "incontext": "https://hyp.is/ul3b3GcSEfCimlv4ddK3EQ/news.ycombinator.com/item?id=44625292", "json": "https://hypothes.is/api/annotations/ul3b3GcSEfCimlv4ddK3EQ"}, "actions": [], "mentions": [], "user_info": {"display_name": "Jon Udell"}, "flagged": false, "hidden": false}, {"mentions": [], "moderation_status": "APPROVED", "id": "iwiidGcQEfCvhr9IYW-Qjw", "created": "2025-07-22T15:28:39.779037+00:00", "updated": "2025-07-22T15:39:00.374829+00:00", "user": "acct:judell@hypothes.is", "uri": "https://news.ycombinator.com/item?id=44625292", "text": "", "tags": ["XMLUI"], "group": "__world__", "permissions": {"read": ["group:__world__"], "admin": ["acct:judell@hypothes.is"], "update": ["acct:judell@hypothes.is"], "delete": ["acct:judell@hypothes.is"]}, "target": [{"source": "https://news.ycombinator.com/item?id=44625292", "selector": [{"type": "RangeSelector", "endOffset": 377, "startOffset": 64, "endContainer": "/center[1]/table[1]/tbody[1]/tr[3]/td[1]/table[2]/tbody[1]/tr[279]/td[1]/table[1]/tbody[1]/tr[1]/td[3]/div[2]/div[1]/p[2]", "startContainer": "/center[1]/table[1]/tbody[1]/tr[3]/td[1]/table[2]/tbody[1]/tr[279]/td[1]/table[1]/tbody[1]/tr[1]/td[3]/div[2]/div[1]/p[2]"}, {"end": 114277, "type": "TextPositionSelector", "start": 113964}, {"type": "TextQuoteSelector", "exact": "it isn\u2019t the concept that I find novel, at all. It\u2019s the sheer depth and breadth of declarative expressiveness that I see in the examples. Maybe the best way I can put it is that what seems novel to me is how much novelty it appears to enable, before breaking through the abstraction to give it more capabilities.", "prefix": " point above with that context: ", "suffix": "replyjunon 2 days ago  | parent "}]}], "document": {"title": ["XMLUI | Hacker News"]}, "links": {"html": "https://hypothes.is/a/iwiidGcQEfCvhr9IYW-Qjw", "incontext": "https://hyp.is/iwiidGcQEfCvhr9IYW-Qjw/news.ycombinator.com/item?id=44625292", "json": "https://hypothes.is/api/annotations/iwiidGcQEfCvhr9IYW-Qjw"}, "actions": [], "user_info": {"display_name": "Jon Udell"}, "flagged": false, "hidden": false}, {"mentions": [], "moderation_status": "APPROVED", "id": "iPsI5mZIEfCOo2-gyb4xsQ", "created": "2025-07-21T15:36:56.995595+00:00", "updated": "2025-07-22T15:38:45.921875+00:00", "user": "acct:judell@hypothes.is", "uri": "https://news.ycombinator.com/item?id=44625292", "text": "", "tags": ["XMLUI"], "group": "__world__", "permissions": {"read": ["group:__world__"], "admin": ["acct:judell@hypothes.is"], "update": ["acct:judell@hypothes.is"], "delete": ["acct:judell@hypothes.is"]}, "target": [{"source": "https://news.ycombinator.com/item?id=44625292", "selector": [{"type": "RangeSelector", "endOffset": 438, "startOffset": 0, "endContainer": "/center[1]/table[1]/tbody[1]/tr[3]/td[1]/table[2]/tbody[1]/tr[240]/td[1]/table[1]/tbody[1]/tr[1]/td[3]/div[2]/div[1]/p[1]", "startContainer": "/center[1]/table[1]/tbody[1]/tr[3]/td[1]/table[2]/tbody[1]/tr[240]/td[1]/table[1]/tbody[1]/tr[1]/td[3]/div[2]/div[1]"}, {"end": 97689, "type": "TextPositionSelector", "start": 97095}, {"type": "TextQuoteSelector", "exact": "I don\u2019t think this is a reinvention of XHTML. It\u2019s definitely closer in spirit to XUL, but seems different enough still that I wouldn\u2019t call it reinvention.What seems particularly novel about this is that it\u2019s taken the compositional approach of modern UI component libraries, and distilled it down to units of composition that can express a lot of behavior and logic declaratively. At least at a glance, that\u2019s an impressive feat. Not necessarily in terms its technical capabilities (though that seems impressive too), but in terms of how it simplifies modeling interactive and data-driven UI.", "prefix": " hours ago  | parent | next [\u2013]\n", "suffix": "replyj1elo 21 hours ago  | root "}]}], "document": {"title": ["XMLUI | Hacker News"]}, "links": {"html": "https://hypothes.is/a/iPsI5mZIEfCOo2-gyb4xsQ", "incontext": "https://hyp.is/iPsI5mZIEfCOo2-gyb4xsQ/news.ycombinator.com/item?id=44625292", "json": "https://hypothes.is/api/annotations/iPsI5mZIEfCOo2-gyb4xsQ"}, "actions": [], "user_info": {"display_name": "Jon Udell"}, "flagged": false, "hidden": false}, {"mentions": [], "moderation_status": "APPROVED", "id": "TU9gwGZEEfCKE59boqm09A", "created": "2025-07-21T15:06:38.882575+00:00", "updated": "2025-07-21T15:37:31.080022+00:00", "user": "acct:judell@hypothes.is", "uri": "https://news.ycombinator.com/item?id=44625292", "text": "+1", "tags": [], "group": "__world__", "permissions": {"read": ["group:__world__"], "admin": ["acct:judell@hypothes.is"], "update": ["acct:judell@hypothes.is"], "delete": ["acct:judell@hypothes.is"]}, "target": [{"source": "https://news.ycombinator.com/item?id=44625292", "selector": [{"type": "RangeSelector", "endOffset": 129, "startOffset": 0, "endContainer": "/center[1]/table[1]/tbody[1]/tr[3]/td[1]/table[2]/tbody[1]/tr[14]/td[1]/table[1]/tbody[1]/tr[1]/td[3]/div[2]/div[1]/p[3]", "startContainer": "/center[1]/table[1]/tbody[1]/tr[3]/td[1]/table[2]/tbody[1]/tr[14]/td[1]/table[1]/tbody[1]/tr[1]/td[3]/div[2]/div[1]/p[2]"}, {"end": 6344, "type": "TextPositionSelector", "start": 6011}, {"type": "TextQuoteSelector", "exact": "I think this is the most important statement in the piece. The rest of the post explains the technical details, but this explains _why_ this exists. This is a bold statement, but I don't think he's wrong.Now, is XMLUI the _right_ set of abstractions to help these developers? We'll have to wait an see. But I love to see the attempt!", "prefix": "asic components back in the day.", "suffix": "replymadeofpalk 5 hours ago  | p"}]}], "document": {"title": ["XMLUI | Hacker News"]}, "links": {"html": "https://hypothes.is/a/TU9gwGZEEfCKE59boqm09A", "incontext": "https://hyp.is/TU9gwGZEEfCKE59boqm09A/news.ycombinator.com/item?id=44625292", "json": "https://hypothes.is/api/annotations/TU9gwGZEEfCKE59boqm09A"}, "actions": [], "user_info": {"display_name": "Jon Udell"}, "flagged": false, "hidden": false}, {"id": "ryg5uGZHEfCT3mtzmRUqoA", "created": "2025-07-21T15:30:51.548766+00:00", "updated": "2025-07-21T15:30:51.548766+00:00", "user": "acct:judell@hypothes.is", "uri": "https://news.ycombinator.com/item?id=44625292", "text": "", "tags": ["Debugging"], "group": "__world__", "moderation_status": "APPROVED", "permissions": {"read": ["group:__world__"], "admin": ["acct:judell@hypothes.is"], "update": ["acct:judell@hypothes.is"], "delete": ["acct:judell@hypothes.is"]}, "target": [{"source": "https://news.ycombinator.com/item?id=44625292", "selector": [{"type": "RangeSelector", "endOffset": 149, "startOffset": 52, "endContainer": "/center[1]/table[1]/tbody[1]/tr[3]/td[1]/table[2]/tbody[1]/tr[175]/td[1]/table[1]/tbody[1]/tr[1]/td[3]/div[2]/div[1]", "startContainer": "/center[1]/table[1]/tbody[1]/tr[3]/td[1]/table[2]/tbody[1]/tr[175]/td[1]/table[1]/tbody[1]/tr[1]/td[3]/div[2]/div[1]"}, {"end": 77163, "type": "TextPositionSelector", "start": 77066}, {"type": "TextQuoteSelector", "exact": "You will see why XML for UI is beautiful but nightmare to debug if something is off and crashing.", "prefix": "/Avalonia (.NET) or MAUI (.NET) ", "suffix": "replywaltbosz 21 hours ago  | pa"}]}], "document": {"title": ["XMLUI | Hacker News"]}, "links": {"html": "https://hypothes.is/a/ryg5uGZHEfCT3mtzmRUqoA", "incontext": "https://hyp.is/ryg5uGZHEfCT3mtzmRUqoA/news.ycombinator.com/item?id=44625292", "json": "https://hypothes.is/api/annotations/ryg5uGZHEfCT3mtzmRUqoA"}, "actions": [], "mentions": [], "user_info": {"display_name": "Jon Udell"}, "flagged": false, "hidden": false}, {"id": "rjyLkGZGEfCOcivPUfUecA", "created": "2025-07-21T15:23:40.499718+00:00", "updated": "2025-07-21T15:23:40.499718+00:00", "user": "acct:judell@hypothes.is", "uri": "https://news.ycombinator.com/item?id=44625292", "text": "", "tags": ["GUI"], "group": "__world__", "moderation_status": "APPROVED", "permissions": {"read": ["group:__world__"], "admin": ["acct:judell@hypothes.is"], "update": ["acct:judell@hypothes.is"], "delete": ["acct:judell@hypothes.is"]}, "target": [{"source": "https://news.ycombinator.com/item?id=44625292", "selector": [{"type": "RangeSelector", "endOffset": 256, "startOffset": 0, "endContainer": "/center[1]/table[1]/tbody[1]/tr[3]/td[1]/table[2]/tbody[1]/tr[123]/td[1]/table[1]/tbody[1]/tr[1]/td[3]/div[2]/div[1]/p[2]", "startContainer": "/center[1]/table[1]/tbody[1]/tr[3]/td[1]/table[2]/tbody[1]/tr[123]/td[1]/table[1]/tbody[1]/tr[1]/td[3]/div[2]/div[1]/p[2]"}, {"end": 46012, "type": "TextPositionSelector", "start": 45756}, {"type": "TextQuoteSelector", "exact": "The good part was the immediate visual feedback in a GUI editor where you couldn't break anything by forgetting to close an XML tag! And you didn't even have to know all the types to type in because you had a visible list of UI elements you could pick from", "prefix": "s have to support the poor user.", "suffix": "replyjudell 1 minute ago  | pare"}]}], "document": {"title": ["XMLUI | Hacker News"]}, "links": {"html": "https://hypothes.is/a/rjyLkGZGEfCOcivPUfUecA", "incontext": "https://hyp.is/rjyLkGZGEfCOcivPUfUecA/news.ycombinator.com/item?id=44625292", "json": "https://hypothes.is/api/annotations/rjyLkGZGEfCOcivPUfUecA"}, "actions": [], "mentions": [], "user_info": {"display_name": "Jon Udell"}, "flagged": false, "hidden": false}, {"id": "tPhp-mZFEfCvaAd6K1ekiA", "created": "2025-07-21T15:16:42.309224+00:00", "updated": "2025-07-21T15:16:42.309224+00:00", "user": "acct:judell@hypothes.is", "uri": "https://news.ycombinator.com/item?id=44625292", "text": "", "tags": ["Performance"], "group": "__world__", "moderation_status": "APPROVED", "permissions": {"read": ["group:__world__"], "admin": ["acct:judell@hypothes.is"], "update": ["acct:judell@hypothes.is"], "delete": ["acct:judell@hypothes.is"]}, "target": [{"source": "https://news.ycombinator.com/item?id=44625292", "selector": [{"type": "RangeSelector", "endOffset": 41, "startOffset": 0, "endContainer": "/center[1]/table[1]/tbody[1]/tr[3]/td[1]/table[2]/tbody[1]/tr[108]/td[1]/table[1]/tbody[1]/tr[1]/td[3]/div[2]/div[1]", "startContainer": "/center[1]/table[1]/tbody[1]/tr[3]/td[1]/table[2]/tbody[1]/tr[108]/td[1]/table[1]/tbody[1]/tr[1]/td[3]/div[2]/div[1]"}, {"end": 39401, "type": "TextPositionSelector", "start": 39360}, {"type": "TextQuoteSelector", "exact": "It\u2019s painfully slow (on a newish mobile).", "prefix": " hours ago  | parent | next [\u2013]\n", "suffix": "  While the concept is great for"}]}], "document": {"title": ["XMLUI | Hacker News"]}, "links": {"html": "https://hypothes.is/a/tPhp-mZFEfCvaAd6K1ekiA", "incontext": "https://hyp.is/tPhp-mZFEfCvaAd6K1ekiA/news.ycombinator.com/item?id=44625292", "json": "https://hypothes.is/api/annotations/tPhp-mZFEfCvaAd6K1ekiA"}, "actions": [], "mentions": [], "user_info": {"display_name": "Jon Udell"}, "flagged": false, "hidden": false}, {"id": "leZ4aGZFEfCT2McRxX623g", "created": "2025-07-21T15:15:50.192820+00:00", "updated": "2025-07-21T15:15:50.192820+00:00", "user": "acct:judell@hypothes.is", "uri": "https://news.ycombinator.com/item?id=44625292", "text": "", "tags": ["Firefox"], "group": "__world__", "moderation_status": "APPROVED", "permissions": {"read": ["group:__world__"], "admin": ["acct:judell@hypothes.is"], "update": ["acct:judell@hypothes.is"], "delete": ["acct:judell@hypothes.is"]}, "target": [{"source": "https://news.ycombinator.com/item?id=44625292", "selector": [{"type": "RangeSelector", "endOffset": 85, "startOffset": 0, "endContainer": "/center[1]/table[1]/tbody[1]/tr[3]/td[1]/table[2]/tbody[1]/tr[95]/td[1]/table[1]/tbody[1]/tr[1]/td[3]/div[2]/div[1]", "startContainer": "/center[1]/table[1]/tbody[1]/tr[3]/td[1]/table[2]/tbody[1]/tr[95]/td[1]/table[1]/tbody[1]/tr[1]/td[3]/div[2]/div[1]"}, {"end": 36174, "type": "TextPositionSelector", "start": 36089}, {"type": "TextQuoteSelector", "exact": "Your idea sounds interesting but your site is unreadable on mobile (Android+Firefox).", "prefix": "ago  | parent | prev | next [\u2013]\n", "suffix": "replybloqs 17 hours ago  | paren"}]}], "document": {"title": ["XMLUI | Hacker News"]}, "links": {"html": "https://hypothes.is/a/leZ4aGZFEfCT2McRxX623g", "incontext": "https://hyp.is/leZ4aGZFEfCT2McRxX623g/news.ycombinator.com/item?id=44625292", "json": "https://hypothes.is/api/annotations/leZ4aGZFEfCT2McRxX623g"}, "actions": [], "mentions": [], "user_info": {"display_name": "Jon Udell"}, "flagged": false, "hidden": false}, {"id": "W-4ANmZFEfCNNy9qGL8jmg", "created": "2025-07-21T15:14:12.919151+00:00", "updated": "2025-07-21T15:14:12.919151+00:00", "user": "acct:judell@hypothes.is", "uri": "https://news.ycombinator.com/item?id=44625292", "text": "The X factor now is agents + MCP, and whether they can steer novices to correct uses and good outcomes.", "tags": [], "group": "__world__", "moderation_status": "APPROVED", "permissions": {"read": ["group:__world__"], "admin": ["acct:judell@hypothes.is"], "update": ["acct:judell@hypothes.is"], "delete": ["acct:judell@hypothes.is"]}, "target": [{"source": "https://news.ycombinator.com/item?id=44625292", "selector": [{"type": "RangeSelector", "endOffset": 353, "startOffset": 0, "endContainer": "/center[1]/table[1]/tbody[1]/tr[3]/td[1]/table[2]/tbody[1]/tr[88]/td[1]/table[1]/tbody[1]/tr[1]/td[3]/div[2]/div[1]", "startContainer": "/center[1]/table[1]/tbody[1]/tr[3]/td[1]/table[2]/tbody[1]/tr[88]/td[1]/table[1]/tbody[1]/tr[1]/td[3]/div[2]/div[1]"}, {"end": 33494, "type": "TextPositionSelector", "start": 33141}, {"type": "TextQuoteSelector", "exact": "XAML (at least the tighter-scoped Silverlight incarnation of it) was an absolute joy to use - if you used it correctly. It was an absolute monster if you used it in the most obvious (and incorrect) way. That's probably the reason other than HTML5 that it fell off: good tools steer novices into the pit of success, and XAML really didn't do that at all.", "prefix": "22 hours ago  | prev | next [\u2013]\n", "suffix": "replysedatk 14 hours ago  | pare"}]}], "document": {"title": ["XMLUI | Hacker News"]}, "links": {"html": "https://hypothes.is/a/W-4ANmZFEfCNNy9qGL8jmg", "incontext": "https://hyp.is/W-4ANmZFEfCNNy9qGL8jmg/news.ycombinator.com/item?id=44625292", "json": "https://hypothes.is/api/annotations/W-4ANmZFEfCNNy9qGL8jmg"}, "actions": [], "mentions": [], "user_info": {"display_name": "Jon Udell"}, "flagged": false, "hidden": false}, {"id": "BhNmZlghEe-J3ZeikIptLw", "created": "2024-08-11T20:33:53.070296+00:00", "updated": "2024-08-11T20:33:53.070296+00:00", "user": "acct:judell@hypothes.is", "uri": "https://third-bit.com/sdxpy/oop/", "text": "I asked Claude: Can you expand on what's happening here?\n\nClaude said:\n\nCertainly! This code demonstrates two important Python features: argument unpacking with the * and ** operators. \nLet's break it down:\n\nFirst, we define a function `show_spread` that takes three parameters: left, middle, and right.\n\nThen, we have two examples of calling this function using different forms of argument unpacking:\n\na) List unpacking with *:\n```python\nall_in_list = [1, 2, 3]\nshow_spread(*all_in_list)\n```\nHere, `*all_in_list` unpacks the list into individual arguments. It's equivalent to calling `show_spread(1, 2, 3)`.\n\nb) Dictionary unpacking with **:\n```python\nall_in_dict = {\"right\": 30, \"left\": 10, \"middle\": 20}\nshow_spread(**all_in_dict)\n```\nHere, `**all_in_dict` unpacks the dictionary into keyword arguments. It's equivalent to calling `show_spread(left=10, middle=20, right=30)`.\n\nThe key points are:\n\n- unpacks an iterable (like a list or tuple) into positional arguments.\n- unpacks a dictionary into keyword arguments.\nWhen using **, the keys in the dictionary must match the parameter names in the function.\n\nThis technique is powerful for making function calls more flexible and for passing collections of values as separate arguments.\n\n", "tags": [], "group": "__world__", "moderation_status": "APPROVED", "permissions": {"read": ["group:__world__"], "admin": ["acct:judell@hypothes.is"], "update": ["acct:judell@hypothes.is"], "delete": ["acct:judell@hypothes.is"]}, "target": [{"source": "https://third-bit.com/sdxpy/oop/", "selector": [{"type": "RangeSelector", "endOffset": 1, "startOffset": 0, "endContainer": "/div[1]/div[2]/main[1]/div[19]/div[1]/pre[1]/code[1]/span[60]", "startContainer": "/div[1]/div[2]/main[1]/div[19]/div[1]/pre[1]/code[1]/span[1]"}, {"end": 10620, "type": "TextPositionSelector", "start": 10394}, {"type": "TextQuoteSelector", "exact": "def show_spread(left, middle, right):\n    print(f\"left {left} middle {middle} right {right}\")\n\nall_in_list = [1, 2, 3]\nshow_spread(*all_in_list)\n\nall_in_dict = {\"right\": 30, \"left\": 10, \"middle\": 20}\nshow_spread(**all_in_dict)", "prefix": "tch a function\u2019s parameters:\n\n\n\n", "suffix": "\n\nspread.py\n\nleft 1 middle 2 rig"}]}], "document": {"title": ["Software Design by Example: Objects and Classes"]}, "links": {"html": "https://hypothes.is/a/BhNmZlghEe-J3ZeikIptLw", "incontext": "https://hyp.is/BhNmZlghEe-J3ZeikIptLw/third-bit.com/sdxpy/oop/", "json": "https://hypothes.is/api/annotations/BhNmZlghEe-J3ZeikIptLw"}, "actions": [], "mentions": [], "user_info": {"display_name": "Jon Udell"}, "flagged": false, "hidden": false}, {"id": "1XAjhsJdEe6rsJcVl4f6dg", "created": "2024-02-03T06:31:16.345403+00:00", "updated": "2024-02-03T06:31:16.345403+00:00", "user": "acct:judell@hypothes.is", "uri": "https://getunblocked.com/dashboard/team/7b1e310e-1fa5-4034-9a37-54377c0ce6e6/thread/353a4f54-513b-4c6d-8bed-62230e130bb4", "text": "", "tags": ["item"], "group": "__world__", "moderation_status": "APPROVED", "permissions": {"read": ["group:__world__"], "admin": ["acct:judell@hypothes.is"], "update": ["acct:judell@hypothes.is"], "delete": ["acct:judell@hypothes.is"]}, "target": [{"source": "https://getunblocked.com/dashboard/team/7b1e310e-1fa5-4034-9a37-54377c0ce6e6/thread/353a4f54-513b-4c6d-8bed-62230e130bb4", "selector": [{"type": "RangeSelector", "endOffset": 47, "startOffset": 0, "endContainer": "/div[1]/div[1]/div[1]/div[1]/div[3]/main[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[7]/div[4]/div[1]/p[1]/span[1]", "startContainer": "/div[1]/div[1]/div[1]/div[1]/div[3]/main[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[6]/div[4]/div[1]/p[3]/span[1]"}, {"end": 8534, "type": "TextPositionSelector", "start": 8219}, {"type": "TextQuoteSelector", "exact": "In this corrected version, for_each is set to step.query.query_jira_vpc.rows, which matches the actual step name query_jira_vpc.For more details, you can refer to the pipeline and pipeline documents.ReferencesControl Flow | Documentation | FlowpipeJon Udell8 hours agoExcellent answer! You beat ChatGPT on that one!", "prefix": "    value = param.message\n  }\n}\n", "suffix": "Unblocked8 hours agoI'm glad to "}]}], "document": {"title": ["here's a flowpipe pipeline pipeline \"jira\" { step \"query\" \"jira_vpc\" { connection_string = \"postgres://steampipe@localhost:9193/steampipe\" sql = <<EOQ with ip_info as ( select vpc_id, host(cidr_block) as host from aws_vpc ), jira_matched as ( select id, key, (regexp_matches(summary,'\\d{1,3}.\\d{1,3}.\\d{1,3}.\\d{1,3}'))[1] as matched_host from jira_issue ) select distinct j.id, j.key, i.host, i.vpc_id, s.account_id, s.region from aws_vpc_security_group s join ip_info i on s.vpc_id = i.vpc_id join jira_matched j on i.host = j.matched_host EOQ } step \"pipeline\" \"add_comments\" { for_each = step.query.jira_vpc.rows output \"each\" { value = jsonencode(each.value) } } } instead of reporting the output i want to call a pipeline and pass the output, how do i do that? \u00b7 Flowpipe \u00b7 Unblocked"]}, "links": {"html": "https://hypothes.is/a/1XAjhsJdEe6rsJcVl4f6dg", "incontext": "https://hyp.is/1XAjhsJdEe6rsJcVl4f6dg/getunblocked.com/dashboard/team/7b1e310e-1fa5-4034-9a37-54377c0ce6e6/thread/353a4f54-513b-4c6d-8bed-62230e130bb4", "json": "https://hypothes.is/api/annotations/1XAjhsJdEe6rsJcVl4f6dg"}, "actions": [], "mentions": [], "user_info": {"display_name": "Jon Udell"}, "flagged": false, "hidden": false}, {"id": "FI90IsCNEe6UZ1u6tMWktg", "created": "2024-01-31T23:04:26.214185+00:00", "updated": "2024-01-31T23:04:26.214185+00:00", "user": "acct:judell@hypothes.is", "uri": "https://archive.org/details/cd_classics-for-relaxation_various-artists-101-strings-abbey-simon-al", "text": "", "tags": ["music", "InternetArchive"], "group": "__world__", "moderation_status": "APPROVED", "permissions": {"read": ["group:__world__"], "admin": ["acct:judell@hypothes.is"], "update": ["acct:judell@hypothes.is"], "delete": ["acct:judell@hypothes.is"]}, "target": [{"source": "https://archive.org/details/cd_classics-for-relaxation_various-artists-101-strings-abbey-simon-al"}], "document": {"title": ["Classics For Relaxation : Various Artists : Free Download, Borrow, and Streaming : Internet Archive"]}, "links": {"html": "https://hypothes.is/a/FI90IsCNEe6UZ1u6tMWktg", "incontext": "https://hyp.is/FI90IsCNEe6UZ1u6tMWktg/archive.org/details/cd_classics-for-relaxation_various-artists-101-strings-abbey-simon-al", "json": "https://hypothes.is/api/annotations/FI90IsCNEe6UZ1u6tMWktg"}, "actions": [], "mentions": [], "user_info": {"display_name": "Jon Udell"}, "flagged": false, "hidden": false}, {"id": "7EXa9sCMEe6IbDMpbTK-vA", "created": "2024-01-31T23:03:18.622234+00:00", "updated": "2024-01-31T23:03:18.622234+00:00", "user": "acct:judell@hypothes.is", "uri": "https://archive.org/details/lp_vivaldi-concertos-for-harpsichord-guitar-h_antonio-vivaldi", "text": "", "tags": ["music", "InternetArchive"], "group": "__world__", "moderation_status": "APPROVED", "permissions": {"read": ["group:__world__"], "admin": ["acct:judell@hypothes.is"], "update": ["acct:judell@hypothes.is"], "delete": ["acct:judell@hypothes.is"]}, "target": [{"source": "https://archive.org/details/lp_vivaldi-concertos-for-harpsichord-guitar-h_antonio-vivaldi"}], "document": {"title": ["Vivaldi Concertos For Harpsichord, Guitar, Harp, Violin : Antonio Vivaldi : Free Download, Borrow, and Streaming : Internet Archive"]}, "links": {"html": "https://hypothes.is/a/7EXa9sCMEe6IbDMpbTK-vA", "incontext": "https://hyp.is/7EXa9sCMEe6IbDMpbTK-vA/archive.org/details/lp_vivaldi-concertos-for-harpsichord-guitar-h_antonio-vivaldi", "json": "https://hypothes.is/api/annotations/7EXa9sCMEe6IbDMpbTK-vA"}, "actions": [], "mentions": [], "user_info": {"display_name": "Jon Udell"}, "flagged": false, "hidden": false}, {"id": "AJVVanNREe602MdGx_Xm6g", "created": "2023-10-25T16:10:23.316514+00:00", "updated": "2023-10-25T16:10:23.316514+00:00", "user": "acct:judell@hypothes.is", "uri": "https://www.infoworld.com/article/3682150/aws-is-changing.html", "text": "", "tags": ["zero-etl"], "group": "__world__", "moderation_status": "APPROVED", "permissions": {"read": ["group:__world__"], "admin": ["acct:judell@hypothes.is"], "update": ["acct:judell@hypothes.is"], "delete": ["acct:judell@hypothes.is"]}, "target": [{"source": "https://www.infoworld.com/article/3682150/aws-is-changing.html", "selector": [{"type": "RangeSelector", "endOffset": 186, "startOffset": 437, "endContainer": "/div[3]/section[1]/article[1]/section[1]/div[2]/p[8]", "startContainer": "/div[3]/section[1]/article[1]/section[1]/div[2]/p[5]"}, {"end": 40235, "type": "TextPositionSelector", "start": 39381}, {"type": "TextQuoteSelector", "exact": "Customers are often left to cobble together disparate services without tight integration in the way Microsoft might provide, for example.All this makes the introduction of Amazon Aurora zero-ETL integration with Amazon Redshift such a jaw-dropper. Let\u2019s be clear: In essence, AWS announced that two of its services now work well together. It\u2019s more than that, of course. Removing the cost and complexity of ETL is a great way to remove the need to build data pipelines. At heart, this is about making two AWS services work exceptionally well together. For another company, this might be considered table stakes, but for AWS, it\u2019s relatively new and incredibly welcome.It\u2019s also a sign of where AWS may be headed: tighter integration between its own services so that customers needn\u2019t take on the undifferentiated heavy lifting of AWS service integration.", "prefix": "ple AWS services harmoniously). ", "suffix": "\n    \n      \n        \n      \n   "}]}], "document": {"title": ["AWS is changing"]}, "links": {"html": "https://hypothes.is/a/AJVVanNREe602MdGx_Xm6g", "incontext": "https://hyp.is/AJVVanNREe602MdGx_Xm6g/www.infoworld.com/article/3682150/aws-is-changing.html", "json": "https://hypothes.is/api/annotations/AJVVanNREe602MdGx_Xm6g"}, "actions": [], "mentions": [], "user_info": {"display_name": "Jon Udell"}, "flagged": false, "hidden": false}, {"id": "tHetwnNQEe67Kg98Tf8wZQ", "created": "2023-10-25T16:08:15.574226+00:00", "updated": "2023-10-25T16:08:15.574226+00:00", "user": "acct:judell@hypothes.is", "uri": "https://thenewstack.io/aws-serves-up-tools-for-data-heads-cloud-native-security/", "text": "", "tags": ["zero-etl"], "group": "__world__", "moderation_status": "APPROVED", "permissions": {"read": ["group:__world__"], "admin": ["acct:judell@hypothes.is"], "update": ["acct:judell@hypothes.is"], "delete": ["acct:judell@hypothes.is"]}, "target": [{"source": "https://thenewstack.io/aws-serves-up-tools-for-data-heads-cloud-native-security/", "selector": [{"type": "RangeSelector", "endOffset": 180, "startOffset": 0, "endContainer": "/div[5]/div[4]/div[4]/div[1]/div[1]/div[1]/p[4]", "startContainer": "/div[5]/div[4]/div[4]/div[1]/div[1]/div[1]/p[4]"}, {"end": 49759, "type": "TextPositionSelector", "start": 49579}, {"type": "TextQuoteSelector", "exact": "One of the places where customers spend the most time building and managing ETL pipelines is between transactional databases and data warehouses, which is where AWS set its sights.", "prefix": " manual effort,\u201d Selipsky said.\n", "suffix": "\n\u201cWe\u2019ve been working for a few y"}]}], "document": {"title": ["AWS Serves Up Tools for Data Heads, Cloud Native Security"]}, "links": {"html": "https://hypothes.is/a/tHetwnNQEe67Kg98Tf8wZQ", "incontext": "https://hyp.is/tHetwnNQEe67Kg98Tf8wZQ/thenewstack.io/aws-serves-up-tools-for-data-heads-cloud-native-security/", "json": "https://hypothes.is/api/annotations/tHetwnNQEe67Kg98Tf8wZQ"}, "actions": [], "mentions": [], "user_info": {"display_name": "Jon Udell"}, "flagged": false, "hidden": false}, {"id": "ftbglnLBEe6_Rl80pdWrFA", "created": "2023-10-24T23:03:07.666839+00:00", "updated": "2023-10-24T23:03:07.666839+00:00", "user": "acct:judell@hypothes.is", "uri": "https://cloud.google.com/blog/products/data-analytics/bigtable-bigquery-federation-brings-hot--cold-data-closer", "text": "", "tags": ["zero-etl"], "group": "__world__", "moderation_status": "APPROVED", "permissions": {"read": ["group:__world__"], "admin": ["acct:judell@hypothes.is"], "update": ["acct:judell@hypothes.is"], "delete": ["acct:judell@hypothes.is"]}, "target": [{"source": "https://cloud.google.com/blog/products/data-analytics/bigtable-bigquery-federation-brings-hot--cold-data-closer"}], "document": {"title": ["Bigtable-BigQuery federation brings hot & cold data closer | Google Cloud Blog"]}, "links": {"html": "https://hypothes.is/a/ftbglnLBEe6_Rl80pdWrFA", "incontext": "https://hyp.is/ftbglnLBEe6_Rl80pdWrFA/cloud.google.com/blog/products/data-analytics/bigtable-bigquery-federation-brings-hot--cold-data-closer", "json": "https://hypothes.is/api/annotations/ftbglnLBEe6_Rl80pdWrFA"}, "actions": [], "mentions": [], "user_info": {"display_name": "Jon Udell"}, "flagged": false, "hidden": false}, {"id": "kyFQ8HLAEe6wzFMukSKgHQ", "created": "2023-10-24T22:56:32.226462+00:00", "updated": "2023-10-24T22:56:32.226462+00:00", "user": "acct:judell@hypothes.is", "uri": "https://newsletter.bhavaniravi.com/p/zero-etl-whats-that", "text": "", "tags": ["zero-etl"], "group": "__world__", "moderation_status": "APPROVED", "permissions": {"read": ["group:__world__"], "admin": ["acct:judell@hypothes.is"], "update": ["acct:judell@hypothes.is"], "delete": ["acct:judell@hypothes.is"]}, "target": [{"source": "https://newsletter.bhavaniravi.com/p/zero-etl-whats-that"}], "document": {"title": ["Zero-ETL, What's that?"]}, "links": {"html": "https://hypothes.is/a/kyFQ8HLAEe6wzFMukSKgHQ", "incontext": "https://hyp.is/kyFQ8HLAEe6wzFMukSKgHQ/newsletter.bhavaniravi.com/p/zero-etl-whats-that", "json": "https://hypothes.is/api/annotations/kyFQ8HLAEe6wzFMukSKgHQ"}, "actions": [], "mentions": [], "user_info": {"display_name": "Jon Udell"}, "flagged": false, "hidden": false}, {"id": "jBiXMnLAEe69QqO08oRYyA", "created": "2023-10-24T22:56:20.370047+00:00", "updated": "2023-10-24T22:56:20.370047+00:00", "user": "acct:judell@hypothes.is", "uri": "https://blog.stackademic.com/zero-etl-the-future-of-data-warehousing-82728abe7989", "text": "", "tags": ["zero-etl"], "group": "__world__", "moderation_status": "APPROVED", "permissions": {"read": ["group:__world__"], "admin": ["acct:judell@hypothes.is"], "update": ["acct:judell@hypothes.is"], "delete": ["acct:judell@hypothes.is"]}, "target": [{"source": "https://blog.stackademic.com/zero-etl-the-future-of-data-warehousing-82728abe7989"}], "document": {"title": ["Zero ETL: The Future of Data Warehousing"]}, "links": {"html": "https://hypothes.is/a/jBiXMnLAEe69QqO08oRYyA", "incontext": "https://hyp.is/jBiXMnLAEe69QqO08oRYyA/blog.stackademic.com/zero-etl-the-future-of-data-warehousing-82728abe7989", "json": "https://hypothes.is/api/annotations/jBiXMnLAEe69QqO08oRYyA"}, "actions": [], "mentions": [], "user_info": {"display_name": "Jon Udell"}, "flagged": false, "hidden": false}, {"id": "hOWTmHLAEe6gHGeqMzjRpQ", "created": "2023-10-24T22:56:08.318091+00:00", "updated": "2023-10-24T22:56:08.318091+00:00", "user": "acct:judell@hypothes.is", "uri": "https://www.montecarlodata.com/blog-zero-etl-post-modern-data-stack/", "text": "", "tags": ["zero-etl"], "group": "__world__", "moderation_status": "APPROVED", "permissions": {"read": ["group:__world__"], "admin": ["acct:judell@hypothes.is"], "update": ["acct:judell@hypothes.is"], "delete": ["acct:judell@hypothes.is"]}, "target": [{"source": "https://www.montecarlodata.com/blog-zero-etl-post-modern-data-stack/"}], "document": {"title": ["Zero-ETL, ChatGPT, And The Future of Data Engineering"]}, "links": {"html": "https://hypothes.is/a/hOWTmHLAEe6gHGeqMzjRpQ", "incontext": "https://hyp.is/hOWTmHLAEe6gHGeqMzjRpQ/www.montecarlodata.com/blog-zero-etl-post-modern-data-stack/", "json": "https://hypothes.is/api/annotations/hOWTmHLAEe6gHGeqMzjRpQ"}, "actions": [], "mentions": [], "user_info": {"display_name": "Jon Udell"}, "flagged": false, "hidden": false}]}