[{"data":1,"prerenderedAt":449},["ShallowReactive",2],{"project-42678754":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":29,"sentiment":30,"stance_mix":31,"scored_comments":36,"aspects":37,"strip":43,"post_text":45,"what":46,"said":70,"maker_in_thread":182,"shape":191,"grid":195,"attempts":412,"same_week":413,"maker_shows":34,"maker_hidden":441,"reader_version":442,"card":443},"42678754","DoomPDF","Doom (1993) in a PDF","title","Show HN: Doom (1993) in a PDF","https:\u002F\u002Fdoompdf.pages.dev\u002Fdoom.pdf","doompdf.pages.dev","vk6",1736729443,2025,369,74,131,3837,4,"legend","games","game port","other",[24,25,26,27,28],"doom","pdf","javascript","emscripten","asm.js","curious",0.157,{"positive":32,"neutral":33,"mixed":34,"critical":35},8,17,1,5,31,{"execution":38,"idea":40,"docs":41,"performance":42},{"positive":39,"critical":18},0,{"positive":35,"critical":34},{"positive":39,"critical":39},{"positive":39,"critical":39},[35,44,35,39,39,39,39,39,39,39,39,39,39,39,39,44,34,34,39,44,44,39,44,35,34,35,39,44,44,39,35,44,44,44,44,35,39,44,44,39],3,"I made a Doom source port that runs within a PDF file.\n\nI was inspired by the recent HN post about Tetris in a PDF (https:\u002F\u002Fnews.ycombinator.com\u002Fitem?id=42645218) and I wondered if I could get Doom to run using a similar method.\n\nIt turns out that old versions of Emscripten can compile C to asm.js code that will happily run inside the limited JS runtime of the PDF engine. I used the doomgeneric (https:\u002F\u002Fgithub.com\u002Fozkl\u002Fdoomgeneric) fork of the original Doom source, as that made writing the IO fairly easy. All I had to do was implement a framebuffer and keyboard inputs.\n\nUnlike previous interac",{"problem":47,"audience":47,"pricing":47,"motivation":48,"time_to_build":47,"stack":54,"openness":67,"stage":68,"team_size":69},null,{"value":49,"source":50,"evidence":51},"Inspired by the PDF Tetris post; wanted to see if Doom could run similarly","maker",[52],{"id":53},"post",[55,59,63],{"value":56,"source":50,"evidence":57},"C (Doom source via doomgeneric)",[58],{"id":53},{"value":60,"source":50,"evidence":61},"Emscripten (asm.js output)",[62],{"id":53},{"value":64,"source":50,"evidence":65},"PDF JavaScript",[66],{"id":53},"open_source","launched","unknown",{"praise":71,"objections":103,"requests":126,"questions":141,"alternatives":160},[72,88],{"value":73,"source":74,"evidence":75},"Impressive hack and neat ASCII-rendered graphics","commenter",[76,80,84],{"id":77,"by":78,"text":79},"42697738","fasten","this is wild! the ascii-rendered graphics are a neat workaround",{"id":81,"by":82,"text":83},"42680383","LorenzoGood","Biggest one up in history.",{"id":85,"by":86,"text":87},"42681947","Uptrenda","So I find this neat, I can see a potential practical application as being able to demonstrate a piece of engineer work INSIDE a resume when you apply for a job which I think is…",{"value":89,"source":74,"evidence":90},"Fun and creative demonstration",[91,95,99],{"id":92,"by":93,"text":94},"42680190","RajT88","You monster.",{"id":96,"by":97,"text":98},"42682247","PierCecco","That's Super Awesome, I know, this is a dumb comment, but, come on!!!",{"id":100,"by":101,"text":102},"42737512","maCDzP","I think this is amazing. And reading the threads regarding JS i PDF I feel the urge to write a PDF reader in a PDF document. It’s PDF:s all the way down.",[104,108,115],{"value":105,"source":50,"evidence":106},"Only works in Chromium-based browsers with PDFium",[107],{"id":53},{"value":109,"source":74,"evidence":110},"Only works on a single PDF engine, not portable",[111],{"id":112,"by":113,"text":114},"42680218","Narishma","Not that portable since it only works on a single PDF engine.",{"value":116,"source":74,"evidence":117},"Security concerns about embedded JavaScript in PDFs",[118,122],{"id":119,"by":120,"text":121},"42679989","p_ing","JS is what made these file types into the Pretty Dangerous Format. Numerous vulnerabilities in Adobe Acrobat surfaced thanks to the embedded JS engine. Updating the Acrobat…",{"id":123,"by":124,"text":125},"42680043","lolinder","The concern isn't that it was JS, the concern is that there's a scripting system inside of PDF at all. Why? What? Form validation is a lousy excuse because forms themselves were…",[127,134],{"value":128,"source":74,"evidence":129},"Support for custom WADs",[130],{"id":131,"by":132,"text":133},"42679644","armSixtyFour","Now how do I add another WAD file to this. Someone needs to play sigil on this.",{"value":135,"source":74,"evidence":136},"Use freely licensed FreeDoom instead of shareware",[137],{"id":138,"by":139,"text":140},"42681944","anthk","Stop restricting yourself to a shareware episode. Use the full legal replacement from https:\u002F\u002Ffreedoom.github.io",[142,153],{"value":143,"source":74,"evidence":144},"Does it work in readers other than Chrome?",[145,149],{"id":146,"by":147,"text":148},"42682439","ikari_pl","oh so that why neither version worked for me in any reader",{"id":150,"by":151,"text":152},"42709262","extraduder_ire","I think it should work in acrobat also, since that implements more of pdf's embedded javascript. I don't know of any other pdf readers which implement javascript. I assume…",{"value":154,"source":74,"evidence":155},"Can the PDF be made smaller with compression?",[156],{"id":157,"by":158,"text":159},"42679339","MarekKnapek","As PDF supports DEFLATE compression, it should be possible to shrink the size of the PDF document considerably.",[161,168,175],{"value":162,"source":74,"evidence":163},"PDF Tetris",[164],{"id":165,"by":166,"text":167},"42680801","ThomasRinsma","Author of \"PDF Tetris\" here. Great work! We had the same idea at the same time, here's my version of PDF Doom: Source: https:\u002F\u002Fgithub.com\u002FthomasRinsma\u002Fpdfdoom Playable here:…",{"value":169,"source":74,"evidence":170},"Bad Apple in Vim",[171],{"id":172,"by":173,"text":174},"42679260","antics","One of my formative experiences as a freshman in CS (I learned to program in college) was accidentally opening a PDF with Emacs and watching as it displayed not weird binary data…",{"value":176,"source":74,"evidence":177},"JSLinux",[178],{"id":179,"by":180,"text":181},"42681039","luismedel","Pandora's box has been opened. Next step: embed Bellard's JSLinux (https:\u002F\u002Fbellard.org\u002Fjslinux\u002F) and have a fullblown OS with development environment, office suite and all inside…",{"comments":183,"answered":39,"key":184},2,[185,188],{"id":186,"text":187},"42686752","You actually can use FreeDoom if you want by loading it as a custom IWAD. If you visit the site's landing page (https:\u002F\u002Fdoompdf.pages.dev\u002F) you can upload the IWAD file, and then…",{"id":189,"text":190},"42680685","I just added this as a feature. You can launch the game with custom WADs at the site's landing page (https:\u002F\u002Fdoompdf.pages.dev\u002F). It'll open a new PDF file as a blob URL (and you…",{"commenters":192,"max_depth":32,"maker_replies":183,"first_comment_mins":193,"lifespan_hours":194},63,18,109,[196,198,202,206,209,213,216,218,220,221,224,227,231,234,237,239,242,246,249,252,255,258,261,264,267,270,273,276,278,282,285,286,287,288,289,291,295,299,303,306,309,312,314,318,320,323,328,330,332,334,337,340,342,344,348,352,354,355,360,364,368,372,375,378,380,382,385,389,393,397,399,401,404,408],[165,39,35,197,166,39],"maker\u002Fpositive\u002Fnone",[199,39,34,200,201,39],"42681163","project\u002Fcritical\u002Fexecution","OnionBlender",[203,39,35,204,205,39],"42681749","project\u002Fpositive\u002Fidea","wingi",[207,39,35,204,208,39],"42694381","daredevil49",[210,34,39,211,212,39],"42679145","other\u002Fneutral\u002Fnone","pavo-etc",[214,34,39,211,215,39],"42679786","quotemstr",[119,34,39,217,120,39],"other\u002Fneutral\u002Fprivacy",[219,34,39,211,215,39],"42680019",[123,34,39,211,124,39],[222,34,39,211,223,39],"42680718","microtonal",[225,34,39,226,215,39],"42680779","commenter\u002Fneutral\u002Fnone",[228,34,39,229,230,39],"42723082","commenter\u002Fneutral\u002Fprivacy","bandie91",[232,34,39,211,233,39],"42680257","llm_trw",[235,34,39,211,236,39],"42680456","DiggyJohnson",[238,34,39,211,233,39],"42680978",[240,34,39,229,241,39],"42683139","weinzierl",[243,34,39,244,245,39],"42685222","other\u002Fneutral\u002Fdocs","gorkish",[247,34,39,211,248,39],"42691245","jcelerier",[250,34,39,211,251,39],"42680612","hardwaresofton",[253,34,39,211,254,39],"42681635","datavirtue",[256,34,39,211,257,39],"42681732","ieidkeheb",[259,34,39,211,260,39],"42682615","alganet",[262,34,39,211,263,39],"42702837","Terr_",[265,34,39,211,266,39],"42687073","krunck",[268,34,39,211,269,39],"42682218","miki123211",[271,34,39,211,272,39],"42683461","kragen",[274,34,39,211,275,39],"42683886","knome",[179,183,44,277,180,39],"project\u002Fneutral\u002Fidea",[279,44,44,280,281,39],"42679513","project\u002Fneutral\u002Fnone","khaledh",[283,44,34,200,284,39],"42679996","takeda",[146,44,34,200,147,39],[150,44,44,280,151,39],[112,44,34,200,113,39],[172,18,39,211,173,39],[290,18,39,211,151,39],"42709299",[292,35,44,293,294,39],"42679437","project\u002Fneutral\u002Fdocs","nomilk",[296,297,39,211,298,39],"42680050",6,"anilakar",[300,301,44,277,302,39],"42679400",7,"joelvalleroy",[304,301,39,211,305,39],"42679725","em3rgent0rdr",[307,301,39,211,308,39],"42679729","cloudking",[310,301,39,211,311,39],"42679728","mdaniel",[157,32,44,313,158,39],"project\u002Fneutral\u002Fexecution",[315,32,44,316,317,39],"42702435","project\u002Fneutral\u002Fperformance","peterburkimsher",[85,319,35,204,86,39],9,[321,322,39,211,139,39],"42681960",10,[324,325,34,326,327,39],"42681289",11,"project\u002Fcritical\u002Fidea","einpoklum",[100,329,35,204,101,39],12,[138,331,44,280,139,39],13,[186,331,39,333,11,34],"maker\u002Fneutral\u002Fdocs",[335,336,44,293,317,39],"42678880",14,[338,336,44,293,339,39],"42679664","crtasm",[341,336,44,293,132,39],"42679684",[343,336,44,293,339,39],"42679746",[345,346,39,211,347,39],"42680836",15,"yoz",[349,350,39,211,351,39],"42711958",16,"SparrowRat",[92,33,35,353,93,39],"project\u002Fpositive\u002Fnone",[96,193,35,353,97,39],[356,357,44,358,359,39],"42681640",19,"maker\u002Fneutral\u002Fnone","revskill",[361,362,39,211,363,39],"42681262",20,"brunorsini",[365,366,39,211,367,39],"42680871",21,"experian21e",[369,370,44,293,371,39],"42680953",22,"nmeta",[373,370,44,293,374,39],"42681650","jansan",[376,370,39,226,377,39],"42692156","Lockal",[379,370,44,280,151,39],"42709533",[77,381,35,204,78,39],23,[81,383,39,384,82,39],24,"other\u002Fpositive\u002Fnone",[386,387,39,211,388,39],"42680592",25,"initramfs",[390,391,39,211,392,39],"42680661",26,"remoquete",[394,395,39,211,396,39],"42681421",27,"prmoustache",[131,398,44,277,132,39],28,[189,398,39,400,11,34],"maker\u002Fneutral\u002Fexecution",[402,398,44,403,132,39],"42693303","project\u002Fmixed\u002Fexecution",[405,406,39,211,407,39],"42681123",29,"hoc",[409,410,39,211,411,39],"42704591",30,"standardly",[],[414,418,422,427,431,436],{"id":415,"name":416,"points":417,"category":20},"42645218","pdftris",1289,{"id":419,"name":420,"points":421,"category":20},"42644168","Factorio Blueprint Visualizer",450,{"id":423,"name":424,"points":425,"category":426},"42666492","dockview",334,"dev_tools",{"id":428,"name":429,"points":430,"category":426},"42712666","ItsLaunched",246,{"id":432,"name":433,"points":434,"category":435},"42697346","BadWebsiteBlocklist",225,"productivity",{"id":437,"name":438,"points":439,"category":440},"42700852","marimo",204,"languages",false,"v2",{"id":444,"name":5,"line":6,"ai":441,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":445,"top":18,"kw":446,"maker":11,"domain":10,"tier":19,"attempts":39,"strip":447,"url":9,"mix":448,"praise":73,"objection":105,"sub":21},42678754,0.16,[24,25,26,27,28],"5350000000000003110330351503305333350330",[32,33,34,35],1794036667821]