{"exhaustive":{"nbHits":true,"typo":true},"exhaustiveNbHits":true,"exhaustiveTypo":true,"hits":[{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"ericax"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"Show HN: Obsidian Canvas \u2013 An infinite space for your ideas"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"https://obsidian.md/canvas"}},"_tags":["story","author_ericax","story_34066824","show_hn"],"author":"ericax","children":[34067104,34067139,34067214,34067215,34067226,34067277,34067282,34067323,34067363,34067423,34067516,34067548,34067578,34067682,34067709,34067749,34067843,34067847,34067855,34067886,34068015,34068063,34068164,34068169,34068283,34068344,34068397,34068415,34068466,34068473,34068487,34068528,34068550,34068594,34068596,34068875,34069038,34069338,34069347,34069360,34069382,34069447,34069507,34069544,34069643,34069852,34069897,34070092,34070124,34070179,34070421,34070481,34070538,34070636,34070939,34071016,34071096,34071467,34071511,34071687,34072496,34072512,34072527,34072977,34072987,34073060,34073109,34073224,34073479,34073509,34073613,34073615,34073631,34073652,34073805,34073967,34074313,34074697,34074837,34074874,34075443,34075457,34076313,34076315,34076747,34076813,34076857,34077340,34077349,34077982,34078360,34078839,34086401,34104285],"created_at":"2022-12-20T15:04:48Z","created_at_i":1671548688,"num_comments":387,"objectID":"34066824","points":1380,"story_id":34066824,"title":"Show HN: Obsidian Canvas \u2013 An infinite space for your ideas","updated_at":"2026-10-01T16:47:15Z","url":"https://obsidian.md/canvas"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"lewisjoe"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"Google Docs will now use canvas based rendering"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"https://workspaceupdates.googleblog.com/2021/05/Google-Docs-Canvas-Based-Rendering-Update.html"}},"_tags":["story","author_lewisjoe","story_27129858"],"author":"lewisjoe","children":[27130342,27130345,27130349,27130360,27130365,27130378,27130384,27130417,27130425,27130440,27130450,27130482,27130486,27130500,27130513,27130564,27130640,27130711,27130718,27130722,27130752,27130766,27130784,27130800,27130805,27130822,27130895,27130950,27131032,27131035,27131037,27131059,27131114,27131166,27131197,27131203,27131261,27131263,27131265,27131268,27131273,27131363,27131410,27131415,27131497,27131520,27131535,27131577,27131578,27131592,27131597,27131612,27131659,27131678,27131695,27131741,27131764,27131831,27131857,27131877,27131910,27131925,27131949,27131954,27132003,27132007,27132035,27132044,27132046,27132128,27132163,27132258,27132290,27132351,27132411,27132443,27132723,27132742,27132825,27132901,27132934,27132962,27133080,27133137,27133166,27133220,27133230,27133259,27133485,27133500,27133506,27133581,27133592,27133775,27133807,27133856,27133929,27134244,27134263,27134458,27134466,27134850,27134936,27135125,27135126,27135130,27135329,27135484,27135849,27136012,27136073,27136186,27136732,27137008,27137148,27137424,27137959,27137968,27138220,27138401,27138454,27138676,27138796,27138854,27139021,27139677,27140451,27141211,27144204,27144289,27150531],"created_at":"2021-05-12T13:05:16Z","created_at_i":1620824716,"num_comments":930,"objectID":"27129858","points":1167,"story_id":27129858,"title":"Google Docs will now use canvas based rendering","updated_at":"2026-09-25T11:05:10Z","url":"https://workspaceupdates.googleblog.com/2021/05/Google-Docs-Canvas-Based-Rendering-Update.html"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"davidbarker"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"Canvas is a new way to write and code with ChatGPT"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"https://openai.com/index/introducing-canvas/"}},"_tags":["story","author_davidbarker","story_41732634"],"author":"davidbarker","children":[41732857,41732859,41732878,41732898,41732899,41732902,41732936,41732938,41732941,41732944,41733013,41733025,41733047,41733059,41733067,41733074,41733075,41733080,41733084,41733093,41733164,41733172,41733188,41733246,41733248,41733265,41733275,41733307,41733330,41733373,41733415,41733458,41733510,41733537,41733539,41733562,41733733,41733744,41733914,41733924,41734031,41734049,41734231,41734288,41734301,41734355,41734439,41734473,41734486,41734515,41734552,41734633,41735076,41735105,41735117,41735172,41735283,41735376,41735415,41735424,41735581,41735758,41735970,41736006,41736021,41736084,41736434,41736865,41736954,41737232,41737394,41737447,41737462,41737821,41737983,41738070,41738193,41738263,41738316,41738770,41738836,41738892,41738899,41739103,41740575,41740793,41741451,41742834,41743046,41753834],"created_at":"2024-10-03T17:07:23Z","created_at_i":1727975243,"num_comments":679,"objectID":"41732634","points":985,"story_id":41732634,"title":"Canvas is a new way to write and code with ChatGPT","updated_at":"2026-04-14T10:19:07Z","url":"https://openai.com/index/introducing-canvas/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"stefanpie"},"story_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"https://thetech.com/2026/05/07/canvas-breach-26
https://techcrunch.com/2026/05/07/hackers-deface-school-logi..."},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"Canvas online again as ShinyHunters threatens to leak schools\u2019 data"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"https://www.theverge.com/tech/926458/canvas-shinyhunters-breach"}},"_tags":["story","author_stefanpie","story_48055913"],"author":"stefanpie","children":[48054430,48054673,48054675,48054693,48054708,48054718,48054875,48055374,48055447,48055565,48055778,48055920,48056015,48056093,48056104,48056152,48056281,48056283,48056303,48056364,48056385,48056449,48056471,48056476,48056509,48056625,48056643,48056683,48056732,48056733,48056768,48056803,48056931,48056934,48056954,48056957,48057010,48057154,48057341,48057352,48057414,48057459,48057466,48057520,48057532,48057557,48057594,48057609,48057621,48057638,48057659,48057690,48057724,48057776,48057818,48057878,48057913,48057944,48058076,48058078,48058101,48058120,48058191,48058367,48058478,48058530,48058826,48058829,48059002,48059317,48060983,48061578,48061688,48061708,48062018,48062254,48062720,48062865,48062892,48063033,48063316,48063357,48064172,48067457,48069042,48073162,48093994,48093995,48094006,48094041,48095583,48095599,48101798],"created_at":"2026-05-07T22:22:21Z","created_at_i":1778192541,"num_comments":648,"objectID":"48055913","points":921,"story_id":48055913,"story_text":"https://thetech.com/2026/05/07/canvas-breach-26
https://techcrunch.com/2026/05/07/hackers-deface-school-logi...","title":"Canvas online again as ShinyHunters threatens to leak schools\u2019 data","updated_at":"2026-09-26T15:33:59Z","url":"https://www.theverge.com/tech/926458/canvas-shinyhunters-breach"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"nickmain"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"JSON Canvas \u2013 An open file format for infinite canvas data"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://jsoncanvas.org/"}},"_tags":["story","author_nickmain","story_39670922"],"author":"nickmain","children":[39671255,39671325,39671335,39671398,39671428,39671431,39671466,39671469,39671492,39671544,39671574,39671656,39671734,39671812,39671819,39671855,39671932,39672011,39672020,39672023,39672025,39672166,39672325,39672334,39672347,39672378,39672379,39672438,39672712,39672748,39672972,39673047,39673050,39673725,39673747,39673948,39673954,39674064,39674836,39674887,39675530,39675558,39680526,39680574,39681649],"created_at":"2024-03-11T17:22:22Z","created_at_i":1710177742,"num_comments":164,"objectID":"39670922","points":841,"story_id":39670922,"title":"JSON Canvas \u2013 An open file format for infinite canvas data","updated_at":"2026-04-02T20:39:51Z","url":"https://jsoncanvas.org/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"tomek_zemla"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"Zdog \u2013 Pseudo-3D JavaScript engine for Canvas and SVG"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://zzz.dog/"}},"_tags":["story","author_tomek_zemla","story_20036169"],"author":"tomek_zemla","children":[20036344,20036353,20036362,20036394,20036398,20036438,20036467,20036505,20036538,20036540,20036672,20036704,20037168,20037189,20037301,20037364,20037368,20037551,20039041,20039245,20040082,20040932,20041942,20042819,20047240,20061006],"created_at":"2019-05-29T01:47:53Z","created_at_i":1559094473,"num_comments":94,"objectID":"20036169","points":686,"story_id":20036169,"title":"Zdog \u2013 Pseudo-3D JavaScript engine for Canvas and SVG","updated_at":"2025-12-12T06:37:48Z","url":"https://zzz.dog/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"forgingahead"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"Nvidia Canvas"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"https://www.nvidia.com/en-gb/studio/canvas/"}},"_tags":["story","author_forgingahead","story_27626610"],"author":"forgingahead","children":[27626948,27626954,27626958,27626960,27626964,27626991,27627010,27627067,27627167,27627169,27627297,27627312,27627348,27627397,27627468,27627527,27627549,27627565,27627596,27627704,27627970,27627984,27628160,27628222,27628258,27628425,27628534,27628831,27628835,27629109,27629232,27629301,27629447,27629762,27630461,27630959,27631699,27632164,27633063,27634479,27634679],"created_at":"2021-06-25T02:40:53Z","created_at_i":1624588853,"num_comments":177,"objectID":"27626610","points":614,"story_id":27626610,"title":"Nvidia Canvas","updated_at":"2024-09-20T08:51:49Z","url":"https://www.nvidia.com/en-gb/studio/canvas/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"akshaysg"},"story_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"Hi HN, we\u2019re building Haystack Editor (https://haystackeditor.com/), a canvas-based IDE that automates the boring stuff (plumbing, refactoring, and finding code) so that you can focus on the exciting parts of software development! You can see a quick overview of Haystack at https://www.youtube.com/watch?v=c2uZnR5D_cc!
(It's currently only on Mac OS but we're working on Linux and Windows. Edit: just added a Linux download!)
Haystack was born out of our frustrations with working in large and mature codebases, specifically with navigating and editing functional flows (e.g. the code flow for adding an item to the Amazon shopping cart).
Oftentimes dealing with such flows would involve navigating a maze of files and functions, and making any edits would involve a lengthy process of doing corresponding downstream/upstream plumbing.
Haystack attempts to address this in the following ways:
1. It allows you to explore your codebase as a directed graph of functions, classes, etc on the canvas. We feel like this better fits how your mind understands your codebase and helps you find and alter functional flows more intuitively. We especially want to utilize this for pull request reviews!\n\n 2. It has a navigational copilot that makes edits across files or functions much easier. After you make some changes, Haystack will try to predict your next action and create functions/methods or refactor upstream/downstream code for you. Haystack will surface these speculative edits on the canvas in a way that you can easily dismiss or incorporate them, allowing you to make large changes with a few clicks or keystrokes.\n\n 3. Haystack will utilize natural language search so you don\u2019t have to play \u201cWhere\u2019s Waldo\u201d to find a functional flow in your codebase. This is coming soon!\n\n\nWe\u2019re still pretty early in development and we really want to perfect the experience of navigating and editing code on a canvas. Any feedback would be much appreciated!PSA: Since Haystack is a VS Code fork, you should be able to move your extensions and keyboard shortcuts. Please let us know if you have any issues with this!"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"Show HN: Haystack \u2013 an IDE for exploring and editing code on an infinite canvas"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://haystackeditor.com/"}},"_tags":["story","author_akshaysg","story_41068719","show_hn"],"author":"akshaysg","children":[41072387,41072492,41072673,41072683,41072694,41072711,41072809,41072892,41072903,41072907,41072910,41073036,41073294,41073356,41073403,41073501,41073605,41073664,41073715,41073885,41074001,41074036,41074182,41074201,41074207,41074245,41074385,41074437,41074533,41074584,41074725,41074807,41074916,41075089,41075141,41075149,41075542,41075578,41075605,41075607,41075612,41075903,41076046,41076065,41076110,41076134,41076268,41076294,41076381,41076488,41076582,41076593,41076668,41076705,41076762,41076949,41077009,41077103,41077120,41077184,41077195,41077207,41077252,41077260,41077505,41077524,41077654,41077722,41077840,41077882,41078253,41078423,41078470,41078483,41078888,41079056,41079068,41079389,41079711,41081427,41082866,41085284,41085470,41098514,41107339,41112989,41113033,41116405,41139245],"created_at":"2024-07-25T13:54:14Z","created_at_i":1721915654,"num_comments":214,"objectID":"41068719","points":546,"story_id":41068719,"story_text":"Hi HN, we\u2019re building Haystack Editor (https://haystackeditor.com/), a canvas-based IDE that automates the boring stuff (plumbing, refactoring, and finding code) so that you can focus on the exciting parts of software development! You can see a quick overview of Haystack at https://www.youtube.com/watch?v=c2uZnR5D_cc!
(It's currently only on Mac OS but we're working on Linux and Windows. Edit: just added a Linux download!)
Haystack was born out of our frustrations with working in large and mature codebases, specifically with navigating and editing functional flows (e.g. the code flow for adding an item to the Amazon shopping cart).
Oftentimes dealing with such flows would involve navigating a maze of files and functions, and making any edits would involve a lengthy process of doing corresponding downstream/upstream plumbing.
Haystack attempts to address this in the following ways:
1. It allows you to explore your codebase as a directed graph of functions, classes, etc on the canvas. We feel like this better fits how your mind understands your codebase and helps you find and alter functional flows more intuitively. We especially want to utilize this for pull request reviews!\n\n 2. It has a navigational copilot that makes edits across files or functions much easier. After you make some changes, Haystack will try to predict your next action and create functions/methods or refactor upstream/downstream code for you. Haystack will surface these speculative edits on the canvas in a way that you can easily dismiss or incorporate them, allowing you to make large changes with a few clicks or keystrokes.\n\n 3. Haystack will utilize natural language search so you don\u2019t have to play \u201cWhere\u2019s Waldo\u201d to find a functional flow in your codebase. This is coming soon!\n\n\nWe\u2019re still pretty early in development and we really want to perfect the experience of navigating and editing code on a canvas. Any feedback would be much appreciated!PSA: Since Haystack is a VS Code fork, you should be able to move your extensions and keyboard shortcuts. Please let us know if you have any issues with this!","title":"Show HN: Haystack \u2013 an IDE for exploring and editing code on an infinite canvas","updated_at":"2025-08-14T22:35:00Z","url":"https://haystackeditor.com/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"robk"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"A Canvas Made of Pixels"},"url":{"matchLevel":"none","matchedWords":[],"value":"http://www.claybavor.com/?p=407"}},"_tags":["story","author_robk","story_10900439"],"author":"robk","children":[10900558,10900595,10900773,10900811,10900830,10900833,10900870,10900908,10900909,10900988,10901150,10901255,10901478,10901735,10901768,10901812,10901914,10902057,10902075,10902384,10902439,10902554,10902699,10903210,10903256,10904712,10907615],"created_at":"2016-01-14T10:01:09Z","created_at_i":1452765669,"num_comments":105,"objectID":"10900439","points":525,"story_id":10900439,"title":"A Canvas Made of Pixels","updated_at":"2024-09-19T22:40:43Z","url":"http://www.claybavor.com/?p=407"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"jordwalke"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"Flipboard releases React Canvas"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"https://github.com/flipboard/react-canvas"}},"_tags":["story","author_jordwalke","story_9029159"],"author":"jordwalke","children":[9029274,9029280,9029281,9029289,9029296,9029369,9029375,9029400,9029475,9029568,9029570,9029596,9029600,9029604,9029621,9029622,9029639,9029667,9029712,9029732,9029965,9029987,9030172,9030367,9030377,9030967,9031222,9031413,9031447,9031457,9031891,9032314,9032675,9041832],"created_at":"2015-02-10T19:05:01Z","created_at_i":1423595101,"num_comments":131,"objectID":"9029159","points":501,"story_id":9029159,"title":"Flipboard releases React Canvas","updated_at":"2023-09-07T02:04:53Z","url":"https://github.com/flipboard/react-canvas"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"rikroots"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"It's always been you, Canvas2D"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"https://developer.chrome.com/blog/canvas2d/"}},"_tags":["story","author_rikroots","story_30553585"],"author":"rikroots","children":[30553892,30553922,30553981,30554001,30554032,30554051,30554076,30554125,30554148,30554235,30554351,30554365,30554387,30554466,30554491,30554600,30554652,30554777,30554842,30554864,30554907,30554932,30554938,30554967,30555170,30555450,30555464,30555938,30555945,30555962,30556148,30556303,30556328,30556415,30556640,30556740,30556821,30557200,30557575,30557708,30557757,30558460,30558597,30558713,30559229,30559247,30562081,30562253,30562448,30565395,30568381],"created_at":"2022-03-04T12:09:44Z","created_at_i":1646395784,"num_comments":243,"objectID":"30553585","points":447,"story_id":30553585,"title":"It's always been you, Canvas2D","updated_at":"2026-01-17T04:04:33Z","url":"https://developer.chrome.com/blog/canvas2d/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"jasim"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"WebGPU \u2013 All of the cores, none of the canvas"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://surma.dev/things/webgpu/"}},"_tags":["story","author_jasim","story_30600525"],"author":"jasim","children":[30600733,30600985,30601059,30601066,30601088,30601160,30601443,30601541,30601553,30601555,30601666,30601956,30602021,30602503,30604051,30606707,30608011,30611038],"created_at":"2022-03-08T14:53:43Z","created_at_i":1646751223,"num_comments":134,"objectID":"30600525","points":393,"story_id":30600525,"title":"WebGPU \u2013 All of the cores, none of the canvas","updated_at":"2024-09-20T10:37:13Z","url":"https://surma.dev/things/webgpu/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"alstonite"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"Show HN: Giving Opus 5.5 a simulated paint canvas"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://stillwet.art/"}},"_tags":["story","author_alstonite","story_49928566","show_hn"],"author":"alstonite","children":[49929316,49930341,49930559,49931967,49932566,49933169,49935803,49936165,49936188,49936267,49936375,49936410,49937118,49937171,49937419,49937997,49939244,49939370,49939990,49940668,49940950,49941173,49941750,49941955,49942154,49943501,49943991,49944683,49953687,49954403],"created_at":"2026-10-02T00:27:56Z","created_at_i":1790900876,"num_comments":113,"objectID":"49928566","points":392,"story_id":49928566,"title":"Show HN: Giving Opus 5.5 a simulated paint canvas","updated_at":"2026-10-09T03:49:26Z","url":"https://stillwet.art/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"robin_reala"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"Firefox takes a bite out of the canvas \u2018super cookie\u2019"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"https://nakedsecurity.sophos.com/2017/10/30/firefox-takes-a-bite-out-of-the-canvas-super-cookie/"}},"_tags":["story","author_robin_reala","story_15583807"],"author":"robin_reala","children":[15584105,15584209,15584210,15584241,15584538,15585033,15585196,15585289,15585458,15585500,15585713,15585916,15585925,15588097,15588120,15588510,15589620,15589837,15591967],"created_at":"2017-10-30T09:15:45Z","created_at_i":1509354945,"num_comments":130,"objectID":"15583807","points":383,"story_id":15583807,"title":"Firefox takes a bite out of the canvas \u2018super cookie\u2019","updated_at":"2024-09-20T01:34:49Z","url":"https://nakedsecurity.sophos.com/2017/10/30/firefox-takes-a-bite-out-of-the-canvas-super-cookie/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"godDLL"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"HTML5 Canvas based fast painting app"},"url":{"matchLevel":"none","matchedWords":[],"value":"http://mugtug.com/sketchpad/"}},"_tags":["story","author_godDLL","story_1106720"],"author":"godDLL","children":[1106732,1106742,1106756,1106769,1106771,1106773,1106785,1106790,1106798,1106801,1106802,1106805,1106831,1106890,1106955,1106978,1106981,1107016,1107067,1107086,1107095,1107179,1107217,1107376,1107407,1107452,1107455,1110912],"created_at":"2010-02-06T21:43:35Z","created_at_i":1265492615,"num_comments":89,"objectID":"1106720","points":378,"story_id":1106720,"title":"HTML5 Canvas based fast painting app","updated_at":"2024-09-19T16:49:05Z","url":"http://mugtug.com/sketchpad/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"todsacerdoti"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"Translating OpenStreetMap data to HTML5 Canvas with Rust and WebAssembly"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"https://mary.codes/blog/programming/translating_openstreetmaps_to_HTML5_canvas_rust_wasm/"}},"_tags":["story","author_todsacerdoti","story_39439655"],"author":"todsacerdoti","children":[39440131,39440267,39440346,39440495,39440497,39440679,39440819,39441568,39441662,39441900,39443029,39443549,39443609,39445407,39445505,39445810],"created_at":"2024-02-20T10:28:01Z","created_at_i":1708424881,"num_comments":36,"objectID":"39439655","points":361,"story_id":39439655,"title":"Translating OpenStreetMap data to HTML5 Canvas with Rust and WebAssembly","updated_at":"2025-05-23T19:45:03Z","url":"https://mary.codes/blog/programming/translating_openstreetmaps_to_HTML5_canvas_rust_wasm/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"stigi"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"Natto.dev \u2013 A Canvas for JavaScript"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://natto.dev"}},"_tags":["story","author_stigi","story_26790285"],"author":"stigi","children":[26790609,26790612,26790690,26790807,26790898,26790900,26790971,26791057,26791182,26791248,26791274,26791791,26791970,26792536,26792767,26792929,26793134,26793951,26794229,26794652,26794886,26795079,26795109,26795994,26796294,26796382,26796652,26798173,26798191,26798975,26799997,26800226,26800399],"created_at":"2021-04-13T10:11:51Z","created_at_i":1618308711,"num_comments":94,"objectID":"26790285","points":357,"story_id":26790285,"title":"Natto.dev \u2013 A Canvas for JavaScript","updated_at":"2025-09-12T04:56:08Z","url":"https://natto.dev"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"myliang"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"Show HN: X-spreadsheet \u2013 A JavaScript canvas spreadsheet for web"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://github.com/myliang/x-spreadsheet"}},"_tags":["story","author_myliang","story_19017270","show_hn"],"author":"myliang","children":[19017503,19017628,19017693,19017726,19017742,19017770,19017880,19017961,19017980,19018005,19018025,19018069,19018101,19018164,19018257,19018345,19018381,19018567,19018739,19018741,19018750,19019046,19019277,19019487,19019582,19019887,19019995,19020025,19020084,19020125,19020205,19020231,19020277,19021071,19021198,19021199,19021310,19022111,19023806],"created_at":"2019-01-28T13:32:44Z","created_at_i":1548682364,"num_comments":105,"objectID":"19017270","points":347,"story_id":19017270,"title":"Show HN: X-spreadsheet \u2013 A JavaScript canvas spreadsheet for web","updated_at":"2026-04-01T03:35:56Z","url":"https://github.com/myliang/x-spreadsheet"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"achow"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"Canva has acquired Affinity in an effort to compete with Adobe"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"https://finance.yahoo.com/news/canva-acquires-affinity-design-suite-004813952.html"}},"_tags":["story","author_achow","story_39824191"],"author":"achow","children":[39824255,39824263,39824268,39824297,39824383,39824429,39824451,39824452,39824459,39824464,39824575,39824578,39824591,39824594,39824618,39824631,39824701,39824901,39824941,39824972,39825047,39825273,39825278,39825290,39825310,39825329,39825380,39825419,39825472,39825557,39825580,39825597,39825613,39825614,39825897,39825956,39826024,39826052,39826244,39826259,39826293,39826327,39826485,39826786,39827253,39827337,39827420,39827425,39827446,39827502,39827506,39827530,39827533,39827648,39827658,39827669,39827674,39827750,39827767,39827854,39827985,39828066,39828105,39828171,39828254,39828326,39828334,39828577,39828625,39828807,39829389,39829494,39829641,39829980,39830053,39830490,39830897,39832714,39833540,39834386,39838442],"created_at":"2024-03-26T04:05:45Z","created_at_i":1711425945,"num_comments":341,"objectID":"39824191","points":333,"story_id":39824191,"title":"Canva has acquired Affinity in an effort to compete with Adobe","updated_at":"2026-07-22T17:14:57Z","url":"https://finance.yahoo.com/news/canva-acquires-affinity-design-suite-004813952.html"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"akshaysg"},"story_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"Hi HN, we\u2019re Akshay and Jake from Haystack (https://haystackeditor.com/). Haystack re-imagines the IDE by putting it on a 2D digital whiteboard that automatically draws connections between code as you navigate and edit files. We designed it to match our mental model of how code works \u2013 as a graph of connected components. Here\u2019s a demo of what it looks like: https://www.youtube.com/watch?v=5XADctpWNNs. You can download Haystack from https://haystackeditor.com/.
We used to work as software engineers at big companies, and when the explosion in AI code-generation tools started we were really excited about them. They gave us a huge speed boost in our day-to-day work. But something was missing: writing code had become easier, but navigating codebases remained painful. We found that we were spending more time on the latter than the former!
Our vision of Haystack is an IDE that helps you navigate your codebase at speed. You should be able to type a vague description of the code you\u2019re looking for (\u201cShow me the code flow that triggers after we click the submit button\u201d) and immediately see the right result. But we don\u2019t think the traditional split-panel interface is the best fit for this type of rapid navigation. Inspired by the fluidity of design tools like Figma (Akshay used to work there!) and Miro, we realized that the canvas layout is a perfect way to represent and operate on code flows, and a great base for all the AI and collaborative tooling we want to build! This is how Haystack was born.
You might have seen our original Show HN (https://news.ycombinator.com/item?id=41068719) about two months ago. Since then, a ton of our users have told us that they\u2019d love to contribute. We\u2019ve made the decision to make the editor source-available so that folks can make contributions and so that they can examine the code to make sure they can trust it. Our repo is at https://github.com/haystackeditor/haystack-editor.
If you\u2019re wondering why we\u2019re going source-available rather than proper open-source: as a startup, we're going to eventually monetize and it\u2019s too early for us to make the decision on whether going fully open-source is the right move. We want to own the distribution of Haystack until we can better understand the ramifications that open-sourcing would have, and whether it\u2019s sustainable business-wise. We\u2019d love to find a way to make proper open-source work, but it\u2019s a one-way door, so we want to take our time to make sure we\u2019re making an informed decision.
We would love to hear about what you think about having a canvas in your IDE and the role visualizations have to play in software development!"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"Launch HN: Haystack (YC S24) \u2013 Visualize and edit code on an infinite canvas"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://github.com/haystackeditor/haystack-editor"}},"_tags":["story","author_akshaysg","story_41648564","launch_hn"],"author":"akshaysg","children":[41648724,41648871,41648887,41649016,41649054,41649068,41649178,41649260,41649508,41649557,41649596,41649701,41649937,41649945,41650338,41650340,41650507,41650562,41650655,41650682,41650747,41650868,41650878,41650889,41651308,41651345,41651380,41651431,41651487,41651499,41651617,41651721,41651756,41652041,41652061,41652460,41653161,41653203,41653749,41654125,41654208,41654405,41654618,41654816,41655008,41655106,41655126,41655339,41655754,41656836,41657538,41657558,41658246,41658408,41659811,41659816,41660051,41660793,41662184,41664386,41666022],"created_at":"2024-09-25T15:31:00Z","created_at_i":1727278260,"num_comments":173,"objectID":"41648564","points":328,"story_id":41648564,"story_text":"Hi HN, we\u2019re Akshay and Jake from Haystack (https://haystackeditor.com/). Haystack re-imagines the IDE by putting it on a 2D digital whiteboard that automatically draws connections between code as you navigate and edit files. We designed it to match our mental model of how code works \u2013 as a graph of connected components. Here\u2019s a demo of what it looks like: https://www.youtube.com/watch?v=5XADctpWNNs. You can download Haystack from https://haystackeditor.com/.
We used to work as software engineers at big companies, and when the explosion in AI code-generation tools started we were really excited about them. They gave us a huge speed boost in our day-to-day work. But something was missing: writing code had become easier, but navigating codebases remained painful. We found that we were spending more time on the latter than the former!
Our vision of Haystack is an IDE that helps you navigate your codebase at speed. You should be able to type a vague description of the code you\u2019re looking for (\u201cShow me the code flow that triggers after we click the submit button\u201d) and immediately see the right result. But we don\u2019t think the traditional split-panel interface is the best fit for this type of rapid navigation. Inspired by the fluidity of design tools like Figma (Akshay used to work there!) and Miro, we realized that the canvas layout is a perfect way to represent and operate on code flows, and a great base for all the AI and collaborative tooling we want to build! This is how Haystack was born.
You might have seen our original Show HN (https://news.ycombinator.com/item?id=41068719) about two months ago. Since then, a ton of our users have told us that they\u2019d love to contribute. We\u2019ve made the decision to make the editor source-available so that folks can make contributions and so that they can examine the code to make sure they can trust it. Our repo is at https://github.com/haystackeditor/haystack-editor.
If you\u2019re wondering why we\u2019re going source-available rather than proper open-source: as a startup, we're going to eventually monetize and it\u2019s too early for us to make the decision on whether going fully open-source is the right move. We want to own the distribution of Haystack until we can better understand the ramifications that open-sourcing would have, and whether it\u2019s sustainable business-wise. We\u2019d love to find a way to make proper open-source work, but it\u2019s a one-way door, so we want to take our time to make sure we\u2019re making an informed decision.
We would love to hear about what you think about having a canvas in your IDE and the role visualizations have to play in software development!","title":"Launch HN: Haystack (YC S24) \u2013 Visualize and edit code on an infinite canvas","updated_at":"2025-04-10T05:37:48Z","url":"https://github.com/haystackeditor/haystack-editor"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"dbloom"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"iPhone 5 web teardown: How Apple compresses video using JPEG, JSON, and canvas"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://docs.google.com/document/pub?id=1GWTMLjqQsQS45FWwqNG9ztQTdGF48hQYpjQHR_d1WsI"}},"_tags":["story","author_dbloom","story_4531088"],"author":"dbloom","children":[4531149,4531159,4531161,4531162,4531166,4531207,4531233,4531258,4531262,4531289,4531290,4531325,4531333,4531351,4531395,4531471,4531570,4531602,4531612,4531647,4531672,4531860,4531930,4531981,4532196,4532706,4532965,4533390,4533542,4536107,4536285,4538263,4541200],"created_at":"2012-09-17T02:18:55Z","created_at_i":1347848335,"num_comments":115,"objectID":"4531088","points":321,"story_id":4531088,"title":"iPhone 5 web teardown: How Apple compresses video using JPEG, JSON, and canvas","updated_at":"2024-09-19T18:54:34Z","url":"https://docs.google.com/document/pub?id=1GWTMLjqQsQS45FWwqNG9ztQTdGF48hQYpjQHR_d1WsI"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"smusamashah"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"Moss is a pixel canvas where every brush is a tiny program"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://www.moss.town/"}},"_tags":["story","author_smusamashah","story_47245491"],"author":"smusamashah","children":[47245874,47250366,47251869,47252042,47252153,47252266,47252532,47253090,47254372,47254672,47254997,47255106,47256867,47257219,47257321,47259630,47260389,47261133,47261350,47267064],"created_at":"2026-03-04T10:21:13Z","created_at_i":1772619673,"num_comments":35,"objectID":"47245491","points":316,"story_id":47245491,"title":"Moss is a pixel canvas where every brush is a tiny program","updated_at":"2026-08-01T13:27:19Z","url":"https://www.moss.town/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"poniko"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"Founder came back after 8 years to rewrite Flash photo editor in Canvas/WebGL"},"url":{"matchLevel":"none","matchedWords":[],"value":"http://pixlr.com/e"}},"_tags":["story","author_poniko","story_21755627"],"author":"poniko","children":[21756804,21757216,21757305,21757423,21757430,21757473,21757584,21757775,21757898,21757911,21757941,21757948,21757950,21758172,21758546,21758549,21758730,21759169,21759795,21760240,21768255,21769099],"created_at":"2019-12-10T18:55:50Z","created_at_i":1576004150,"num_comments":95,"objectID":"21755627","points":315,"story_id":21755627,"title":"Founder came back after 8 years to rewrite Flash photo editor in Canvas/WebGL","updated_at":"2025-11-29T13:54:03Z","url":"http://pixlr.com/e"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"gfysfm"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"Building multiplayer games with Socket.io and HTML5 Canvas"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://github.com/sgoedecke/socket-io-game/blob/master/BLOG.md"}},"_tags":["story","author_gfysfm","story_15318530"],"author":"gfysfm","children":[15319083,15319154,15319347,15319357,15319437,15319569,15319691,15319750,15319902,15320670,15320887,15320891,15321325,15321343,15324903,15329073],"created_at":"2017-09-23T06:52:24Z","created_at_i":1506149544,"num_comments":99,"objectID":"15318530","points":308,"story_id":15318530,"title":"Building multiplayer games with Socket.io and HTML5 Canvas","updated_at":"2025-01-08T00:06:14Z","url":"https://github.com/sgoedecke/socket-io-game/blob/master/BLOG.md"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"sbussard"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"Show HN: Make a business model canvas in your browser"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"https://sbussard.github.io/canvas-sketch/"}},"_tags":["story","author_sbussard","story_17652593","show_hn"],"author":"sbussard","children":[17652735,17652773,17652818,17652832,17652877,17653155,17653350,17653356,17653365,17653437,17653587,17653789,17653859,17653890,17653973,17653999,17654040,17654326,17654541,17654629,17655420,17656803,17658248,17658906,17660337],"created_at":"2018-07-31T12:28:38Z","created_at_i":1533040118,"num_comments":76,"objectID":"17652593","points":295,"story_id":17652593,"title":"Show HN: Make a business model canvas in your browser","updated_at":"2024-09-20T02:48:42Z","url":"https://sbussard.github.io/canvas-sketch/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"adrianh"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"In defense of <canvas>"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"http://www.holovaty.com/writing/in-defense-of-canvas/"}},"_tags":["story","author_adrianh","story_5663031"],"author":"adrianh","children":[5663135,5663174,5663204,5663285,5663343,5663430,5663560,5663619,5663664,5663745,5663987,5664063,5664602,5664939,5665191,5665701,5666571,5666882,5666930,5668149],"created_at":"2013-05-06T16:01:25Z","created_at_i":1367856085,"num_comments":61,"objectID":"5663031","points":294,"story_id":5663031,"title":"In defense of <canvas>","updated_at":"2023-09-06T21:27:07Z","url":"http://www.holovaty.com/writing/in-defense-of-canvas/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"samulipehkonen"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"Figma and Canva are taking on Adobe and winning"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://kwokchain.com/2021/02/05/atomic-concepts/"}},"_tags":["story","author_samulipehkonen","story_26748723"],"author":"samulipehkonen","children":[26750555,26750574,26750578,26750754,26750773,26750781,26750818,26750833,26750851,26750868,26750950,26751023,26751085,26751148,26751162,26751291,26751332,26751497,26752257,26752263,26752373,26752435,26752591,26752856,26753086,26753263,26753388,26753506,26753802,26753841,26754721,26757166,26757274,26757308,26757608,26757617,26757835,26758029,26760723],"created_at":"2021-04-09T10:24:08Z","created_at_i":1617963848,"num_comments":244,"objectID":"26748723","points":288,"story_id":26748723,"title":"Figma and Canva are taking on Adobe and winning","updated_at":"2026-04-25T08:41:41Z","url":"https://kwokchain.com/2021/02/05/atomic-concepts/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"DaniAkash"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"Skia Canvas: Browserless implementation of the HTML Canvas drawing API for node"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"https://skia-canvas.org/"}},"_tags":["story","author_DaniAkash","story_42308051"],"author":"DaniAkash","children":[42309009,42309108,42309129,42309314,42309609,42309803,42309810,42309895,42310117,42310256,42310284,42310529,42311924,42312061,42312818,42313217,42316112,42316282,42316571,42316770,42318622],"created_at":"2024-12-03T16:34:18Z","created_at_i":1733243658,"num_comments":89,"objectID":"42308051","points":288,"story_id":42308051,"title":"Skia Canvas: Browserless implementation of the HTML Canvas drawing API for node","updated_at":"2025-02-18T12:59:19Z","url":"https://skia-canvas.org/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"Cider9986"},"story_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"https://www.instructure.com/incident_update#:~:text=STATUS%2...
https://www.nytimes.com/2026/05/12/us/canvas-instructure-hac..., https://archive.ph/HIkdn"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"Instructure pays ransom to Canvas hackers"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"https://www.insidehighered.com/news/tech-innovation/administrative-tech/2026/05/11/instructure-pays-ransom-canvas-hackers"}},"_tags":["story","author_Cider9986","story_48103668"],"author":"Cider9986","children":[48103425,48103578,48104199,48111087,48111305,48111314,48111431,48111563,48111783,48111853,48111890,48111968,48111971,48112079,48112100,48112121,48112271,48112313,48112386,48112426,48112655,48112932,48113470,48115042,48116652,48116837,48118264,48120234,48123333],"created_at":"2026-05-12T02:56:31Z","created_at_i":1778554591,"num_comments":248,"objectID":"48103668","points":272,"story_id":48103668,"story_text":"https://www.instructure.com/incident_update#:~:text=STATUS%2...
https://www.nytimes.com/2026/05/12/us/canvas-instructure-hac..., https://archive.ph/HIkdn","title":"Instructure pays ransom to Canvas hackers","updated_at":"2026-08-26T07:44:48Z","url":"https://www.insidehighered.com/news/tech-innovation/administrative-tech/2026/05/11/instructure-pays-ransom-canvas-hackers"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"uptown"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"Nodes \u2013 JavaScript-based 2D canvas for computational thinking"},"url":{"matchLevel":"none","matchedWords":[],"value":"http://nodes.io/story/"}},"_tags":["story","author_uptown","story_20507668"],"author":"uptown","children":[20507993,20508023,20508049,20508210,20508220,20508698,20508860,20508995,20509150,20509606,20509646,20509656,20509832,20509902,20509912,20510815,20511978,20512448,20515468],"created_at":"2019-07-23T15:47:47Z","created_at_i":1563896867,"num_comments":53,"objectID":"20507668","points":263,"story_id":20507668,"title":"Nodes \u2013 JavaScript-based 2D canvas for computational thinking","updated_at":"2025-05-30T21:43:00Z","url":"http://nodes.io/story/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"lavrton"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"Konva.js - Declarative 2D Canvas for React, Vue, and Svelte"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://konvajs.org/"}},"_tags":["story","author_lavrton","story_43410988"],"author":"lavrton","children":[43411659,43411978,43412057,43412082,43412344,43412411,43412485,43412618,43412756,43412866,43413152,43413240,43413272,43413433,43413691,43413739,43413799,43413959,43414309,43414353,43415795,43443961],"created_at":"2025-03-19T12:30:48Z","created_at_i":1742387448,"num_comments":72,"objectID":"43410988","points":253,"story_id":43410988,"title":"Konva.js - Declarative 2D Canvas for React, Vue, and Svelte","updated_at":"2025-04-01T10:14:35Z","url":"https://konvajs.org/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"shaneos"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"Instant flood fill with HTML Canvas"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"https://shaneosullivan.wordpress.com/2023/05/23/instant-colour-fill-with-html-canvas/"}},"_tags":["story","author_shaneos","story_36049386"],"author":"shaneos","children":[36050522,36050687,36050988,36051081,36051160,36051187,36051500,36051900,36051907,36052149,36052492,36052509,36053118,36053187,36053188,36053519,36054232,36054810,36055499,36056171,36056438,36057411,36058813,36060404],"created_at":"2023-05-23T19:18:10Z","created_at_i":1684869490,"num_comments":122,"objectID":"36049386","points":251,"story_id":36049386,"title":"Instant flood fill with HTML Canvas","updated_at":"2025-09-11T09:37:44Z","url":"https://shaneosullivan.wordpress.com/2023/05/23/instant-colour-fill-with-html-canvas/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"lavrton"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"Konva \u2013 HTML5 2d canvas library for desktop and mobile applications"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://konvajs.github.io/"}},"_tags":["story","author_lavrton","story_16480503"],"author":"lavrton","children":[16480593,16480690,16480710,16480809,16480952,16481092,16481158,16481203,16481282,16481475,16481911,16481963,16482360,16483188,16483726,16484080,16485475],"created_at":"2018-02-28T03:36:49Z","created_at_i":1519789009,"num_comments":35,"objectID":"16480503","points":237,"story_id":16480503,"title":"Konva \u2013 HTML5 2d canvas library for desktop and mobile applications","updated_at":"2024-09-20T02:07:33Z","url":"https://konvajs.github.io/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"patrickaljord"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"Angry Birds for Chrome in Canvas and WebGL"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://chrome.google.com/webstore/detail/aknpkdffaafgjchaibgeefbgmgeghloj"}},"_tags":["story","author_patrickaljord","story_2537444"],"author":"patrickaljord","children":[2537525,2537537,2537554,2537568,2537585,2537591,2537593,2537705,2537709,2537711,2537728,2537760,2537985,2537986,2538078,2538210,2538258,2538485,2538606,2539529,2539800],"created_at":"2011-05-11T17:53:27Z","created_at_i":1305136407,"num_comments":83,"objectID":"2537444","points":234,"story_id":2537444,"title":"Angry Birds for Chrome in Canvas and WebGL","updated_at":"2024-09-19T17:42:36Z","url":"https://chrome.google.com/webstore/detail/aknpkdffaafgjchaibgeefbgmgeghloj"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"chloe-bm"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"Show HN: Open Source Canva Clone"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://github.com/layerhub-io/react-design-editor"}},"_tags":["story","author_chloe-bm","story_32568423","show_hn"],"author":"chloe-bm","children":[32568424,32569510,32569781,32569941,32570101,32571059,32571202,32571219,32571377,32571823,32572792,32574307,32574375,32574474,32575165,32579425,32581756],"created_at":"2022-08-23T17:44:36Z","created_at_i":1661276676,"num_comments":43,"objectID":"32568423","points":232,"story_id":32568423,"title":"Show HN: Open Source Canva Clone","updated_at":"2024-09-20T11:53:39Z","url":"https://github.com/layerhub-io/react-design-editor"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"dannyobrien"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"HTML-in-Canvas"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"https://github.com/WICG/html-in-canvas"}},"_tags":["story","author_dannyobrien","story_44772177"],"author":"dannyobrien","children":[44772425,44772452,44772468,44772563,44772564,44772571,44772682,44772914,44772931,44772970,44773007,44773055,44773070,44773081,44773109,44773112,44773185,44773197,44773256,44773263,44773301,44773363,44773370,44773420,44773514,44773541,44774688,44774704,44774742,44774753,44775117,44775294,44775306,44776465,44776963,44777076,44777887,44778530,44783805],"created_at":"2025-08-02T22:26:47Z","created_at_i":1754173607,"num_comments":116,"objectID":"44772177","points":222,"story_id":44772177,"title":"HTML-in-Canvas","updated_at":"2026-08-10T15:31:08Z","url":"https://github.com/WICG/html-in-canvas"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"capela"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"Open-source canvas drawing web app, built using React"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://github.com/diogocapela/flatdraw"}},"_tags":["story","author_capela","story_37038908"],"author":"capela","children":[37039560,37039657,37039913,37040000,37040219,37040220,37040338,37040350,37040385,37040451,37040519,37040749,37040821,37040917,37041107,37041339,37041343,37041601,37042063,37042400,37042737,37043837,37044789,37044863,37045908,37045930,37046282],"created_at":"2023-08-07T18:50:19Z","created_at_i":1691434219,"num_comments":49,"objectID":"37038908","points":221,"story_id":37038908,"title":"Open-source canvas drawing web app, built using React","updated_at":"2024-09-20T14:48:51Z","url":"https://github.com/diogocapela/flatdraw"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"pst723"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"An infinite canvas for code exploration"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://territory.dev"}},"_tags":["story","author_pst723","story_40279499"],"author":"pst723","children":[40279500,40280335,40280378,40280564,40280585,40280700,40280703,40280719,40280782,40280813,40280954,40281036,40281130,40281209,40281295,40281377,40281441,40281817,40281891,40281943,40281998,40282319,40282456,40282485,40282734,40282896,40282904,40283071,40283783,40283824,40283912,40284139,40284293,40284493,40284698,40285465,40285518,40285581],"created_at":"2024-05-06T21:03:54Z","created_at_i":1715029434,"num_comments":107,"objectID":"40279499","points":211,"story_id":40279499,"title":"An infinite canvas for code exploration","updated_at":"2025-02-14T00:39:00Z","url":"https://territory.dev"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"alixaxel"},"story_text":{"matchLevel":"none","matchedWords":[],"value":""},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"Off-Canvas Sidebar Transitions with CSS"},"url":{"matchLevel":"none","matchedWords":[],"value":"http://tympanus.net/Development/SidebarTransitions/"}},"_tags":["story","author_alixaxel","story_7649855"],"author":"alixaxel","children":[7650022,7650145,7650150,7650233,7650301,7650302,7650324,7650753,7650857,7651134,7651841],"created_at":"2014-04-26T00:06:57Z","created_at_i":1398470817,"num_comments":28,"objectID":"7649855","points":210,"story_id":7649855,"story_text":"","title":"Off-Canvas Sidebar Transitions with CSS","updated_at":"2024-09-19T20:45:34Z","url":"http://tympanus.net/Development/SidebarTransitions/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"petercooper"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"IE9 To Support CANVAS Tag (plus VIDEO, AUDIO, and SVG)"},"url":{"matchLevel":"none","matchedWords":[],"value":"http://ie.microsoft.com/testdrive/info/ReleaseNotes/Default.html"}},"_tags":["story","author_petercooper","story_1456384"],"author":"petercooper","children":[1456482,1456524,1456526,1456528,1456537,1456567,1456575,1456578,1456610,1456637,1456640,1456686,1456696,1456785,1456932,1456955,1457289,1457741,1458594,1458937],"created_at":"2010-06-23T21:17:42Z","created_at_i":1277327862,"num_comments":94,"objectID":"1456384","points":205,"story_id":1456384,"title":"IE9 To Support CANVAS Tag (plus VIDEO, AUDIO, and SVG)","updated_at":"2026-04-22T03:42:21Z","url":"http://ie.microsoft.com/testdrive/info/ReleaseNotes/Default.html"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"gnykka"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"Show HN: Canvas engines performance comparison \u2013 PixiJS, Two.js, and Paper.js"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://benchmarks.slaylines.io"}},"_tags":["story","author_gnykka","story_23083730","show_hn"],"author":"gnykka","children":[23084195,23084229,23084457,23084493,23084576,23084738,23085102,23085375,23085589,23085716,23085718,23085860,23085926,23085998,23086045,23086230,23086287,23086893,23087297,23089289,23089656,23090199,23091029],"created_at":"2020-05-05T19:18:14Z","created_at_i":1588706294,"num_comments":102,"objectID":"23083730","points":193,"story_id":23083730,"title":"Show HN: Canvas engines performance comparison \u2013 PixiJS, Two.js, and Paper.js","updated_at":"2026-10-07T16:06:05Z","url":"https://benchmarks.slaylines.io"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"AlexeyBrin"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"DOjS \u2013 A DOS JavaScript Canvas with Sound"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://github.com/SuperIlu/DOjS"}},"_tags":["story","author_AlexeyBrin","story_41425259"],"author":"AlexeyBrin","children":[41425458,41425479,41426045,41426326,41426693,41427373,41427923,41429203,41430004,41434570,41440795,41441201],"created_at":"2024-09-02T13:33:09Z","created_at_i":1725283989,"num_comments":33,"objectID":"41425259","points":193,"story_id":41425259,"title":"DOjS \u2013 A DOS JavaScript Canvas with Sound","updated_at":"2024-10-25T05:01:25Z","url":"https://github.com/SuperIlu/DOjS"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"phoboslab"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"Show HN: Ejecta, A Fast, Open Source JavaScript, Canvas Implementation for iOS"},"url":{"matchLevel":"none","matchedWords":[],"value":"http://impactjs.com/ejecta"}},"_tags":["story","author_phoboslab","story_4570382","show_hn"],"author":"phoboslab","children":[4570397,4570413,4570428,4570435,4570469,4570484,4570547,4570610,4570740,4570748,4570796,4570815,4571629,4572509,4572591,4573205,4573676,4573927,4574048,4574906],"created_at":"2012-09-25T14:08:53Z","created_at_i":1348582133,"num_comments":45,"objectID":"4570382","points":190,"story_id":4570382,"title":"Show HN: Ejecta, A Fast, Open Source JavaScript, Canvas Implementation for iOS","updated_at":"2024-09-19T18:58:32Z","url":"http://impactjs.com/ejecta"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"gneissguise"},"story_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"After 25 years of writing software, I was feeling nostalgic for the kinds of things that got me into programming in the first place: the old DOS demoscene. I spent a weekend seeing if I could recapture some of that INT 13H VGA magic using today's web tech, but with the old-school constraints of doing it from scratch.
The result is this portfolio of ten classic effects running in a single HTML file. It's all vanilla JavaScript writing to a <canvas> element, with no external libraries. It was a fun challenge to implement things like:
* The color palette cycling and smooth fading in the Plasma demo.\n* The buffer-averaging algorithm for the Fire effect to make the flames feel more natural.\n* The distance-based texture crossfading in the Tunnel to create the illusion of flying through different sections.\n* A 2D scalar field for the Metaballs to calculate the surface normals for that classic blended, metallic look (I did the best I could with the given constraints).
It was a great exercise in getting back to first principles and a reminder of how much those early demo programmers could accomplish with so little. I hope it brings back some good memories for others who grew up with this stuff.
I'd love to hear about your favorite classic demos or if there are any other iconic effects you think would be a fun challenge to add.
Cheers!"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"Show HN: I recreated 90s Mode X demoscene effects in JavaScript and Canvas"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://jdfio.com/pages-output/demos/x-mode/"}},"_tags":["story","author_gneissguise","story_44295667","show_hn"],"author":"gneissguise","children":[44295905,44295955,44295960,44296172,44296217,44296236,44296265,44296292,44296332,44296403,44296453,44296544,44296561,44296812,44296872,44296931,44297073,44297080,44297101,44297550,44297660,44298584,44298661,44299236,44300970,44310635],"created_at":"2025-06-17T04:07:31Z","created_at_i":1750133251,"num_comments":69,"objectID":"44295667","points":189,"story_id":44295667,"story_text":"After 25 years of writing software, I was feeling nostalgic for the kinds of things that got me into programming in the first place: the old DOS demoscene. I spent a weekend seeing if I could recapture some of that INT 13H VGA magic using today's web tech, but with the old-school constraints of doing it from scratch.
The result is this portfolio of ten classic effects running in a single HTML file. It's all vanilla JavaScript writing to a <canvas> element, with no external libraries. It was a fun challenge to implement things like:
* The color palette cycling and smooth fading in the Plasma demo.\n* The buffer-averaging algorithm for the Fire effect to make the flames feel more natural.\n* The distance-based texture crossfading in the Tunnel to create the illusion of flying through different sections.\n* A 2D scalar field for the Metaballs to calculate the surface normals for that classic blended, metallic look (I did the best I could with the given constraints).
It was a great exercise in getting back to first principles and a reminder of how much those early demo programmers could accomplish with so little. I hope it brings back some good memories for others who grew up with this stuff.
I'd love to hear about your favorite classic demos or if there are any other iconic effects you think would be a fun challenge to add.
Cheers!","title":"Show HN: I recreated 90s Mode X demoscene effects in JavaScript and Canvas","updated_at":"2025-11-30T18:58:35Z","url":"https://jdfio.com/pages-output/demos/x-mode/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"uonr"},"story_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"Hi!
This is an infinite canvas note-taking tool where notes are laid out in a non-Euclidean, hyperbolic geometric space. As you drag and navigate through the view, you\u2019ll experience a unique fluid distortion that naturally leverages your brain's spatial memory.
I\u2019ve been obsessed with the concept of space in HCI for years. Many modern UI patterns are essentially workarounds for the lack of screen real estate. While researching zoom-based UIs a while back, I stumbled upon old HCI papers that used the Poincar\u00e9 disk model of the hyperbolic plane to organize data. It elegantly projects an infinite space into a finite disk, keeping everything contextually visible.
I wanted to build an experimental app around this concept years ago, but the non-Euclidean math was a significant roadblock. Recently, I decided to give it a shot with the help of LLMs. It turns out that LLMs can handle the mathematical heavy lifting quite well, specifically in designing the coordinate systems and optimization algorithms, provided that you guide them with a solid architectural design.
This is still an experimental demo, but I hope it leaves an impression. I\u2019d love to know if you find this paradigm practical for organizing your thoughts."},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"Show HN: Infinite canvas notes in the non-Euclidean Poincar\u00e9 disk"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://uonr.github.io/poincake/"}},"_tags":["story","author_uonr","story_48372138","show_hn"],"author":"uonr","children":[48374330,48427061,48427219,48427336,48427362,48427811,48428344,48428973,48429353,48429404,48429641,48429822,48429899,48429901,48430691,48432289,48432623,48432932,48432940,48434133,48436059,48436367,48445640],"created_at":"2026-06-02T16:08:26Z","created_at_i":1780416506,"num_comments":33,"objectID":"48372138","points":188,"story_id":48372138,"story_text":"Hi!
This is an infinite canvas note-taking tool where notes are laid out in a non-Euclidean, hyperbolic geometric space. As you drag and navigate through the view, you\u2019ll experience a unique fluid distortion that naturally leverages your brain's spatial memory.
I\u2019ve been obsessed with the concept of space in HCI for years. Many modern UI patterns are essentially workarounds for the lack of screen real estate. While researching zoom-based UIs a while back, I stumbled upon old HCI papers that used the Poincar\u00e9 disk model of the hyperbolic plane to organize data. It elegantly projects an infinite space into a finite disk, keeping everything contextually visible.
I wanted to build an experimental app around this concept years ago, but the non-Euclidean math was a significant roadblock. Recently, I decided to give it a shot with the help of LLMs. It turns out that LLMs can handle the mathematical heavy lifting quite well, specifically in designing the coordinate systems and optimization algorithms, provided that you guide them with a solid architectural design.
This is still an experimental demo, but I hope it leaves an impression. I\u2019d love to know if you find this paradigm practical for organizing your thoughts.","title":"Show HN: Infinite canvas notes in the non-Euclidean Poincar\u00e9 disk","updated_at":"2026-07-10T16:55:34Z","url":"https://uonr.github.io/poincake/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"_samizdat"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"Show HN: Skia-canvas, a browserless implementation of the Canvas API for Node.js"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"https://github.com/samizdatco/skia-canvas"}},"_tags":["story","author__samizdat","story_24364656","show_hn"],"author":"_samizdat","children":[24365189,24365480,24365816,24365894,24365961,24366491,24368685,24368808,24369525,24370448,24371715,24372434],"created_at":"2020-09-03T14:58:46Z","created_at_i":1599145126,"num_comments":65,"objectID":"24364656","points":187,"story_id":24364656,"title":"Show HN: Skia-canvas, a browserless implementation of the Canvas API for Node.js","updated_at":"2024-09-20T06:56:52Z","url":"https://github.com/samizdatco/skia-canvas"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"pajtai"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"See what you can create with 140 characters of JavaScript and a canvas"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://www.dwitter.net/"}},"_tags":["story","author_pajtai","story_18205008"],"author":"pajtai","children":[18205366,18205531,18205728,18205961,18206399,18206609,18206872,18207100,18207188,18207588,18207624,18207789,18209628],"created_at":"2018-10-12T21:55:37Z","created_at_i":1539381337,"num_comments":24,"objectID":"18205008","points":183,"story_id":18205008,"title":"See what you can create with 140 characters of JavaScript and a canvas","updated_at":"2026-01-10T15:29:40Z","url":"https://www.dwitter.net/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"bpierre"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"Exploring canvas drawing techniques"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"http://perfectionkills.com/exploring-canvas-drawing-techniques/"}},"_tags":["story","author_bpierre","story_6841831"],"author":"bpierre","children":[6842063,6842132,6842340,6842859,6842983,6843167,6843207,6843475,6843498,6844043,6844196,6844661,6845054,6846761,6846829,6849040],"created_at":"2013-12-03T17:49:10Z","created_at_i":1386092950,"num_comments":35,"objectID":"6841831","points":181,"story_id":6841831,"title":"Exploring canvas drawing techniques","updated_at":"2024-09-19T20:12:43Z","url":"http://perfectionkills.com/exploring-canvas-drawing-techniques/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"prezjordan"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"Show HN: Isomer \u2013 An isometric graphics library for HTML5 Canvas"},"url":{"matchLevel":"none","matchedWords":[],"value":"http://jdan.github.io/isomer/"}},"_tags":["story","author_prezjordan","story_7652874","show_hn"],"author":"prezjordan","children":[7653177,7653220,7653259,7653278,7653336,7653383,7653654,7653889,7654245,7654905,7655535],"created_at":"2014-04-26T21:46:52Z","created_at_i":1398548812,"num_comments":23,"objectID":"7652874","points":181,"story_id":7652874,"title":"Show HN: Isomer \u2013 An isometric graphics library for HTML5 Canvas","updated_at":"2024-09-19T20:45:52Z","url":"http://jdan.github.io/isomer/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"matijash"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"Motion Canvas \u2013 Visualize complex ideas programmatically"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["canva"],"value":"https://github.com/motion-canvas/motion-canvas"}},"_tags":["story","author_matijash","story_34897707"],"author":"matijash","children":[34898523,34898818,34898877,34899240,34899421,34899485,34900416,34901989,34902264,34903547,34906629],"created_at":"2023-02-22T16:05:07Z","created_at_i":1677081907,"num_comments":35,"objectID":"34897707","points":180,"story_id":34897707,"title":"Motion Canvas \u2013 Visualize complex ideas programmatically","updated_at":"2026-09-24T22:18:54Z","url":"https://github.com/motion-canvas/motion-canvas"}],"hitsPerPage":50,"nbHits":22465,"nbPages":20,"page":0,"params":"query=Canva&tags=story&hitsPerPage=50&advancedSyntax=true&analyticsTags=backend","processingTimeMS":12,"processingTimingsMS":{"_request":{"queue":23,"roundTrip":14},"afterFetch":{"format":{"total":1}},"fetch":{"query":5,"scanning":5,"total":11},"total":12},"query":"Canva","serverTimeMS":36}