[{"data":1,"prerenderedAt":875},["ShallowReactive",2],{"project-48080587":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":28,"sentiment":29,"stance_mix":30,"scored_comments":35,"aspects":36,"strip":47,"post_text":49,"what":50,"said":81,"maker_in_thread":215,"shape":226,"grid":230,"attempts":836,"same_week":837,"maker_shows":18,"maker_hidden":867,"reader_version":868,"card":869},"48080587","ymawky","Building a web server in assembly to give my life (a lack of) meaning","title","Show HN: Building a web server in assembly to give my life (a lack of) meaning","https:\u002F\u002Fgithub.com\u002Fimtomt\u002Fymawky","github.com","imtomt",1778382104,2026,430,227,71,4366,2,"legend","infrastructure","web server","cli",[24,25,26,27],"arm64 assembly","static file server","macos","web server in assembly","mixed",0.474,{"positive":31,"neutral":32,"mixed":33,"critical":34},37,20,0,12,69,{"idea":37,"execution":40,"design":42,"performance":44,"docs":45},{"positive":38,"critical":39},15,8,{"positive":41,"critical":41},4,{"positive":43,"critical":33},3,{"positive":33,"critical":33},{"positive":46,"critical":33},1,[48,48,48,48,33,48,48,43,48,48,18,48,48,48,43,48,48,48,33,33,48,48,46,46,46,33,43,33,46,46,43,46,33,48,46,43,43,41,46,43],5,"This is ymawky, a static file web server for MacOS written entirely in ARM64 assembly. It supports GET, PUT, DELETE, HEAD, and OPTIONS requests, and supports Range: bytes=X-Y headers (which allows scrubbing for video streaming). It decodes percent-encoded URLs, strictly enforces docroot, serves custom error pages for any HTTP error response, supports directory listing, and has (some) mitigations against slowloris-like attacks.\n\nI’ve also written a more detailed writeup here: https:\u002F\u002Fimtomt.github.io\u002Fymawky\u002F",{"problem":51,"audience":51,"pricing":51,"motivation":52,"time_to_build":51,"stack":64,"openness":78,"stage":79,"team_size":80},null,{"value":53,"source":54,"evidence":55},"Learning project to build meaning and understand how CPUs work","maker",[56,58,61],{"id":57},"post",{"id":59,"by":11,"text":60},"48080742","Thank you! I've been obsessed with this idea for a while, finally decided to start on it, then obsessed over it for a couple weeks. I'd love to see some of your projects if you…",{"id":62,"by":11,"text":63},"48080790","Hey, thank you! Means a lot. It's an odd sort of meditation, but is surprisingly the most almost-therapeutic project I've worked on. Something about the constraints of Assembly…",[65,69],{"value":66,"source":54,"evidence":67},"ARM64 assembly",[68],{"id":57},{"value":70,"source":54,"evidence":71},"macOS syscalls",[72,75],{"id":73,"by":11,"text":74},"48081391","Yeah, I know MacOS syscalls aren't stable. Interesting point about Go, I hadn't heard about that. Unfortunately I'm a masochist though, and want to avoid libSystem.dylib as much…",{"id":76,"by":11,"text":77},"48080982","I wrote it for MacOS because I don't have a Linux machine right now :( Once I get one up and running again, I'll probably work on porting this. As for why it wouldn't run on…","open_source","launched","solo",{"praise":82,"objections":128,"requests":153,"questions":177,"alternatives":196},[83,103,118],{"value":84,"source":85,"evidence":86},"Admiration for the craft and assembly-level skill","commenter",[87,91,95,99],{"id":88,"by":89,"text":90},"48081948","matteohorvath","It's a beautiful project, well crafted. To reflect to the other comments, projects like this are more like a Minecraft map for me. There are giant and amazing maps, small…",{"id":92,"by":93,"text":94},"48081336","Ati985","Your determination to make this happen was remarkable — and you truly accomplished it. Congratulations",{"id":96,"by":97,"text":98},"48080876","jjbigs","This is fucking nuts",{"id":100,"by":101,"text":102},"48084274","souro26","This looks genuinely great. Well done.",{"value":104,"source":85,"evidence":105},"Fun, unusual project that feels refreshing amid AI coding",[106,110,114],{"id":107,"by":108,"text":109},"48081342","ybouane","We are moving to AI and stopped writing code \u002F scratching our heads, and you're here writing a web server in assembly. Humbling.",{"id":111,"by":112,"text":113},"48081487","dalleh","With the bubble of LLMs, these projects are really appreciated. Keep up the good work! P.S.: I would love a copy of that book please!",{"id":115,"by":116,"text":117},"48080828","digitaltrees","I don’t know why, but this project has me irrationally excited!",{"value":119,"source":85,"evidence":120},"Clean Makefile and readable code comments",[121,125],{"id":122,"by":123,"text":124},"48100271","ontouchstart","What I love most about your project is the super clean Makefile (https:\u002F\u002Fgithub.com\u002Fimtomt\u002Fymawky\u002Fblob\u002Fmain\u002FMakefile). It is a great template to jump start an ARM64 assembly…",{"id":126,"by":11,"text":127},"48080713","Thanks, I appreciate it a lot! I tried to comment my code pretty heavily (~3000 lines of code, ~1000 lines of comments all together), since this was a learning project for myself…",[129,140,146],{"value":130,"source":85,"evidence":131},"Not portable: macOS-only syscalls and conventions",[132,136],{"id":133,"by":134,"text":135},"48081588","shevy-java","If it is written in assembly, why is it for MacOS only?",{"id":137,"by":138,"text":139},"48080896","OutOfHere","An agentic LLM should be pretty good at Arm64 assembly generation, but maintainability of large code could become an issue. Why would it not run on Linux?",{"value":141,"source":85,"evidence":142},"Likely much slower than production servers due to fork-per-connection",[143],{"id":144,"by":11,"text":145},"48081372","Honestly haven't benchmarked it, but I would imagine ymawky would be considerably slower than most fully-featured web servers. ymawky uses fork-per-connection, which is…",{"value":147,"source":85,"evidence":148},"Test suite and benchmarks absent",[149],{"id":150,"by":151,"text":152},"48081261","dddddaviddddd","Even though it's a meaningless comparison, I'd be interested to see how performance compares (max requests per second?) for this compared to fully-featured web servers.",[154,165,173],{"value":155,"source":85,"evidence":156},"Add in-depth architecture docs and a blog post",[157,161],{"id":158,"by":159,"text":160},"48080676","thatxliner","I'm wanting to read this repository as a learning tool, so it'd also be nice to include docs—even AI-generated docs, but obvious I'd prefer docs with your own design notes and…",{"id":162,"by":163,"text":164},"48083053","scuff3d","This is awesome! I'll have to try reading through the code when I have more time. It would be awesome to read a blog post about the project. Your approach, lessons learned,…",{"value":166,"source":85,"evidence":167},"Port to Linux",[168,172],{"id":169,"by":170,"text":171},"48081011","xyst","Need a straight binary port now",{"id":137,"by":138,"text":139},{"value":174,"source":85,"evidence":175},"Benchmark against other servers",[176],{"id":150,"by":151,"text":152},[178,182,189],{"value":179,"source":85,"evidence":180},"Why is it macOS only if written in assembly?",[181],{"id":133,"by":134,"text":135},{"value":183,"source":85,"evidence":184},"What was the hardest part to implement?",[185],{"id":186,"by":187,"text":188},"48120926","ksi23","What was the hardest part, Range header handling or the slowloris mitigations? Both seem like they'd be a nightmare without higher-level state machines.",{"value":190,"source":85,"evidence":191},"Resources to learn ARM assembly?",[192],{"id":193,"by":194,"text":195},"48080925","rogeliodh","Awesome. Any resource recommendations to learn ARM assembly?",[197,204,208],{"value":198,"source":85,"evidence":199},"asmhttpd (x86 Linux minimal assembly server)",[200],{"id":201,"by":202,"text":203},"48085902","jcalvinowens","This is fun, thanks for sharing. I have a much more minimalist one for x86 Linux if you want to see what that looks like: https:\u002F\u002Fgithub.com\u002Fjcalvinowens\u002Fasmhttpd",{"value":205,"source":85,"evidence":206},"nginx and Apache",[207],{"id":144,"by":11,"text":145},{"value":209,"source":85,"evidence":210},"rwasa",[211],{"id":212,"by":213,"text":214},"48083065","polotics","do you know about rwasa? https:\u002F\u002F2ton.com.au\u002Frwasa\u002F ...",{"comments":216,"answered":217,"key":218},24,9,[219,222,223],{"id":220,"text":221},"48081804","Yeah, that's what I realized during this, too. You need to be much more explicit, but the way any given function works isn't fundamentally different. \"strlen\" will always iterate…",{"id":59,"text":60},{"id":224,"text":225},"48080721","That book is exactly what inspired me to make this in the first place, haha. The subtitle of the book gave me the acronym I named it.",{"commenters":227,"max_depth":228,"maker_replies":216,"first_comment_mins":33,"lifespan_hours":229},133,10,164,[231,235,237,241,244,247,250,252,254,255,258,259,261,263,267,268,271,274,276,277,280,285,288,290,293,295,298,301,304,306,308,310,313,317,319,321,324,325,328,331,334,336,338,340,343,345,347,348,350,352,355,356,358,360,363,367,370,372,377,379,382,387,389,392,394,397,400,402,406,408,412,415,418,420,423,425,428,430,434,437,440,442,444,446,449,452,456,459,461,465,469,471,475,477,480,483,487,489,491,495,498,500,502,505,507,509,511,514,517,520,524,527,529,532,535,538,541,544,546,549,551,553,556,560,561,565,568,571,573,575,578,580,583,585,587,590,594,597,600,603,606,608,611,614,616,619,622,624,627,629,632,635,638,641,643,646,648,650,652,654,656,658,661,664,667,670,672,675,677,680,683,686,689,692,694,697,700,703,706,709,711,713,716,719,721,723,726,728,730,733,736,738,741,743,746,749,751,754,757,760,762,764,766,768,770,772,775,778,781,784,786,790,794,798,800,803,805,808,810,812,814,816,818,820,821,824,826,828,833],[232,33,33,233,234,33],"48081736","other\u002Fneutral\u002Fnone","tgma",[220,33,33,236,11,46],"commenter\u002Fneutral\u002Fnone",[238,33,48,239,240,33],"48081867","project\u002Fpositive\u002Fidea","sureglymop",[242,33,33,236,243,33],"48082706","wkjagt",[245,33,33,236,246,33],"48086852","fragmede",[248,33,33,236,249,33],"48088544","jchw",[251,33,33,236,246,33],"48101520",[253,33,33,236,234,33],"48090107",[88,46,48,239,89,33],[256,18,48,239,257,33],"48080711","trollbridge",[59,18,33,236,11,46],[122,43,48,260,123,33],"project\u002Fpositive\u002Fexecution",[262,43,33,233,123,33],"48101869",[264,41,48,265,266,33],"48080693","project\u002Fpositive\u002Fdesign","chrisweekly",[224,41,33,236,11,46],[269,41,48,239,270,33],"48085785","orthogonal_cube",[272,41,48,265,273,33],"48081322","____tom____",[150,48,43,275,151,33],"project\u002Fneutral\u002Fperformance",[144,48,33,275,11,46],[278,48,33,233,279,33],"48081410","arrty88",[281,282,48,283,284,33],"48081452",6,"maker\u002Fpositive\u002Fnone","stbev",[286,282,33,233,287,33],"48081475","PacificSpecific",[289,282,33,233,284,33],"48082107",[291,282,33,233,292,33],"48081784","qingcharles",[294,282,33,233,284,33],"48082099",[296,282,33,236,297,33],"48082261","MagicMoonlight",[299,282,33,236,300,33],"48082368","moregrist",[302,282,33,236,303,33],"48083671","bananaboy",[305,282,33,233,303,33],"48083640",[307,282,33,233,292,33],"48085040",[309,282,33,233,303,33],"48094782",[311,282,33,233,312,33],"48082077","polaris64",[314,315,48,239,316,33],"48081753",7,"behaviors",[318,315,33,233,11,46],"48081763",[320,315,48,239,316,33],"48082052",[322,39,48,265,323,33],"48081384","marc_g",[107,217,33,233,108,33],[326,217,33,233,327,33],"48081566","dwedge",[329,217,33,233,330,33],"48086953","bigstrat2003",[332,228,48,239,333,33],"48081567","dragontamer",[335,228,33,233,11,46],"48082086",[337,228,33,233,333,33],"48082245",[339,228,33,236,11,46],"48088745",[341,228,43,342,257,33],"48090640","project\u002Fneutral\u002Fidea",[344,228,33,233,333,33],"48115100",[111,346,48,239,112,33],11,[201,34,33,233,202,33],[349,34,33,233,11,46],"48089106",[351,34,33,233,202,33],"48095744",[158,353,43,354,159,33],13,"project\u002Fneutral\u002Fdocs",[126,353,33,354,11,46],[357,353,43,354,159,33],"48080723",[359,353,33,354,11,46],"48080774",[361,353,33,236,362,33],"48081341","vasco",[364,365,48,239,366,33],"48083165",14,"toshikatsu-oga",[368,38,48,239,369,33],"48090878","sen",[371,38,33,233,11,46],"48093618",[373,374,46,375,376,33],"48081329",16,"project\u002Fcritical\u002Fexecution","mappu",[73,374,33,378,11,46],"project\u002Fneutral\u002Fexecution",[380,374,43,378,381,33],"48088446","not_a9",[383,384,43,385,386,33],"48080960",17,"project\u002Fneutral\u002Fnone","cylinder714",[388,384,33,378,11,46],"48081044",[115,390,48,391,116,33],18,"project\u002Fpositive\u002Fnone",[92,393,48,391,93,33],19,[395,32,48,283,396,33],"48080741","_the_inflator",[398,32,33,399,11,46],"48080865","maker\u002Fneutral\u002Fnone",[401,32,33,233,292,33],"48081808",[403,404,48,391,405,33],"48080942",21,"boring-human",[407,404,33,283,11,46],"48081111",[409,410,33,233,411,33],"48081627",22,"AppAttestationz",[413,410,33,233,414,33],"48098644","asalahli",[186,416,43,417,187,33],23,"maker\u002Fneutral\u002Fexecution",[419,416,33,417,11,46],"48128777",[421,416,48,422,187,33],"48144475","maker\u002Fpositive\u002Fexecution",[162,216,48,424,163,33],"project\u002Fpositive\u002Fdocs",[193,426,43,427,194,33],25,"maker\u002Fneutral\u002Fdocs",[429,426,33,427,11,46],"48081165",[431,432,43,385,433,33],"48081382",26,"washingupliquid",[435,432,33,236,436,33],"48081405","eptcyka",[438,439,48,391,303,33],"48081170",27,[169,441,43,378,170,33],28,[443,441,33,399,11,46],"48081089",[133,445,43,378,134,33],29,[447,445,43,378,448,33],"48081743","DavidPiper",[450,445,43,378,451,33],"48082625","gsliepen",[453,454,48,391,455,33],"48084629",30,"camel_gopher",[457,458,48,391,279,33],"48081404",31,[100,460,48,391,101,33],32,[462,463,48,391,464,33],"48081963",33,"niftynanometer",[466,467,48,391,468,33],"48081179",34,"nunez",[470,467,33,399,11,46],"48081235",[472,473,33,236,474,33],"48084849",35,"maniiijiii",[212,476,43,385,213,33],36,[478,31,48,391,479,33],"48081101","JSR_FDED",[481,31,33,233,482,33],"48081258","t-3",[484,31,33,485,486,33],"48082502","commenter\u002Fcritical\u002Fnone","userbinator",[488,31,33,236,482,33],"48084535",[96,490,48,391,97,33],38,[492,493,33,233,494,33],"48081343",39,"Thanemate",[496,493,33,233,497,33],"48081398","noduerme",[499,493,33,233,327,33],"48081559",[501,493,33,233,497,33],"48081922",[503,493,33,236,504,33],"48082224","yolo3000",[506,493,33,233,497,33],"48082360",[508,493,33,233,134,33],"48081603",[510,493,33,236,497,33],"48081709",[512,493,33,233,513,33],"48081708","dinkumthinkum",[515,493,33,233,516,33],"48083056","tkiolp4",[518,493,33,233,519,33],"48082142","lofaszvanitt",[521,522,33,233,523,33],"48080971",40,"faangguyindia",[525,522,33,236,526,33],"48081022","sampullman",[528,522,33,233,523,33],"48081045",[530,522,33,233,531,33],"48081144","tonyedgecombe",[533,522,33,233,534,33],"48081035","iamgopal",[536,522,33,236,537,33],"48081107","lelandbatey",[539,522,33,233,540,33],"48081083","losteric",[542,522,33,236,543,33],"48081086","plusplusungood",[545,522,33,236,523,33],"48081104",[547,522,48,391,548,33],"48081149","ericbarrett",[550,522,33,399,11,46],"48081208",[552,522,33,236,279,33],"48081420",[554,555,33,427,11,46],"48080618",41,[557,555,48,558,559,33],"48080728","maker\u002Fpositive\u002Fidea","dang",[62,555,33,239,11,46],[562,563,48,422,564,33],"48081430",42,"rdevilla",[566,563,33,236,567,33],"48081554","wewewedxfgdf",[569,563,46,375,570,33],"48081572","nzhsbdb",[572,563,33,236,567,33],"48081631",[574,563,33,233,494,33],"48081831",[576,563,33,233,577,33],"48082177","vladms",[579,563,33,233,494,33],"48082426",[581,563,33,233,582,33],"48082229","srean",[584,563,33,233,297,33],"48082244",[586,563,33,236,300,33],"48082333",[588,563,33,233,589,33],"48083880","hallway_monitor",[591,563,46,592,593,33],"48081660","project\u002Fcritical\u002Fidea","georgemcbay",[595,563,33,233,596,33],"48081732","mcintyre1994",[598,563,33,233,599,33],"48081934","pixelesque",[601,563,46,592,602,33],"48081670","estebarb",[604,563,33,236,605,33],"48081701","menzoic",[607,563,33,233,564,33],"48081737",[609,563,33,233,610,33],"48082431","ratorx",[612,563,33,233,613,33],"48082716","CoastalCoder",[615,563,33,233,602,33],"48085003",[617,563,33,233,618,33],"48082557","_factor",[620,563,33,233,621,33],"48084950","risyachka",[623,563,33,233,618,33],"48091040",[625,563,33,233,626,33],"48082569","ninalanyon",[628,563,33,233,602,33],"48084799",[630,563,46,592,631,33],"48081870","locknitpicker",[633,563,48,239,634,33],"48082414","wtetzner",[636,563,33,236,637,33],"48083802","Pannoniae",[639,563,33,233,640,33],"48083977","layer8",[642,563,33,233,519,33],"48082104",[644,563,33,233,645,33],"48082424","wartywhoa23",[647,563,33,236,513,33],"48081679",[649,563,33,236,577,33],"48082196",[651,563,33,236,640,33],"48084066",[653,563,33,236,577,33],"48087598",[655,563,33,236,640,33],"48087757",[657,563,33,233,316,33],"48082008",[659,563,33,233,660,33],"48082140","pjmlp",[662,563,46,592,663,33],"48082720","pocksuppet",[665,563,33,666,637,33],"48083397","other\u002Fneutral\u002Fperformance",[668,563,33,669,663,33],"48091925","commenter\u002Fneutral\u002Fperformance",[671,563,33,669,637,33],"48100628",[673,563,46,375,674,33],"48082783","andyjohnson0",[676,563,33,233,516,33],"48083027",[678,563,33,233,679,33],"48084694","saulpw",[681,563,33,233,682,33],"48084875","appreciatorBus",[684,563,33,233,685,33],"48085826","hombre_fatal",[687,563,46,592,688,33],"48083330","markus_zhang",[690,563,33,233,691,33],"48084094","moron4hire",[693,563,33,233,621,33],"48084916",[695,563,33,233,696,33],"48088168","nocman",[698,563,48,239,699,33],"48081629","isatty",[701,563,33,233,702,33],"48082295","alex_suzuki",[704,563,33,233,705,33],"48081680","altmanaltman",[707,563,33,233,708,33],"48084561","entrox",[710,563,33,233,292,33],"48081741",[712,563,46,592,631,33],"48081851",[714,563,33,236,715,33],"48082126","fuzzy2",[717,563,33,718,631,33],"48082331","commenter\u002Fcritical\u002Fdesign",[720,563,33,236,645,33],"48082635",[722,563,33,236,663,33],"48082889",[724,563,33,233,725,33],"48081952","designerarvid",[727,563,33,233,621,33],"48084969",[729,563,33,233,725,33],"48164650",[731,563,33,236,732,33],"48082427","aurareturn",[734,563,33,233,735,33],"48082524","BuyG1n",[737,563,48,239,243,33],"48082823",[739,563,33,236,740,33],"48084009","quirino",[742,563,43,354,243,33],"48088444",[744,563,33,233,745,33],"48083265","i_love_retros",[747,563,33,236,748,33],"48083756","KaseKun",[750,563,33,236,745,33],"48087156",[752,563,33,233,753,33],"48083379","katzito",[755,563,46,592,756,33],"48083607","renticulous",[758,563,33,236,759,33],"48084023","beedle_mcdeedle",[761,563,33,236,756,33],"48084176",[763,563,43,399,753,33],"48084084",[765,563,33,233,637,33],"48083837",[767,563,33,233,691,33],"48083888",[769,563,33,236,637,33],"48083912",[771,563,33,233,691,33],"48084564",[773,563,33,233,774,33],"48083879","UltraSane",[776,563,43,385,777,33],"48084605","TZubiri",[779,563,33,233,780,33],"48084614","mathgladiator",[782,563,33,233,783,33],"48085306","f1shy",[785,563,33,233,696,33],"48087780",[787,788,33,236,789,33],"48085884",43,"specwiseai",[791,792,48,239,793,33],"48085318",44,"smy_smy",[795,796,48,422,797,33],"48081330",45,"maomaoati985",[137,799,43,385,138,33],46,[801,799,33,236,802,33],"48080905","shepherdjerred",[804,799,46,592,138,33],"48081960",[806,799,33,236,807,33],"48083664","verandaguy",[809,799,33,236,138,33],"48084333",[811,799,33,236,807,33],"48088185",[813,799,33,236,138,33],"48089868",[815,799,33,236,807,33],"48090090",[817,799,46,375,138,33],"48090675",[819,799,33,233,807,33],"48099722",[76,799,33,417,11,46],[822,799,43,417,823,33],"48081361","tgv",[825,799,43,417,138,33],"48084395",[827,799,33,417,11,46],"48087987",[829,830,33,831,832,33],"48083719",47,"other\u002Fcritical\u002Fnone","dennis_jeeves2",[834,830,33,236,835,33],"48083759","sp9k",[],[838,843,848,853,857,862],{"id":839,"name":840,"points":841,"category":842},"48111896","Needle",776,"ai",{"id":844,"name":845,"points":846,"category":847},"48076815","let-go",292,"languages",{"id":849,"name":850,"points":851,"category":852},"48123359","Number Gacha",268,"games",{"id":854,"name":855,"points":856,"category":847},"48078575","Rust but Lisp",218,{"id":858,"name":859,"points":860,"category":861},"48096842","website",200,"productivity",{"id":863,"name":864,"points":865,"category":866},"48045939","TRUST",178,"dev_tools",false,"v2",{"id":870,"name":5,"line":6,"ai":867,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":871,"top":18,"kw":872,"maker":11,"domain":10,"tier":19,"attempts":33,"strip":873,"url":9,"mix":874,"praise":84,"objection":130,"sub":21},48080587,0.47,[24,25,26,27],"5555055355255535550055111030113105133413",[31,32,33,34],1793991153943]