[{"data":1,"prerenderedAt":540},["ShallowReactive",2],{"project-38230325":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":44,"post_text":46,"what":47,"said":86,"maker_in_thread":174,"shape":176,"grid":181,"attempts":503,"same_week":504,"maker_shows":33,"maker_hidden":532,"reader_version":533,"card":534},"38230325","Spray","I spent 6 months building a C debugger as a 17-year-old","title","Show HN: I spent 6 months building a C debugger as a 17-year-old","https:\u002F\u002Fgithub.com\u002Fd4ckard\u002Fspray","github.com","thasso",1699711156,2023,393,129,84,3109,3,"legend","dev_tools","debugger","cli",[24,21,25,26,27],"c debugger","ptrace","c development","linux debugging","loved",0.415,{"positive":31,"neutral":32,"mixed":33,"critical":34},21,17,2,4,44,{"execution":37,"design":40,"docs":42,"idea":43},{"positive":38,"critical":39},8,1,{"positive":41,"critical":39},0,{"positive":39,"critical":41},{"positive":39,"critical":41},[45,41,41,18,41,41,41,41,45,41,34,41,45,41,41,45,34,45,45,39,45,34,41,41,41,45,18,41,45,39,18,18,41,45,45,41,18,18,41,18],5,"Hey HN my name is Thassilo, I'm a student and passionate programmer from Germany.\n\nI want to showcase Spray, a small C debugger I've been working on for a few months now. Spray has a very simple and approachable interface. Its feature set is limited at this point, but it's already enough to tackle some basic problems. I stared to work on Spray because I was curious about how debuggers work. I am also trying to design Spray in such a way that it's easy to grasp and has a small mental overhead.\n\nIn general, I'm very interested in compilers and language tool chains. It feels harder to connect wit",{"problem":48,"audience":54,"pricing":54,"motivation":55,"time_to_build":63,"stack":67,"openness":83,"stage":84,"team_size":85},{"value":49,"source":50,"evidence":51},"Provides a simple, approachable debugger for C programs with a small mental overhead","maker",[52],{"id":53},"post",null,{"value":56,"source":50,"evidence":57},"Curiosity about how debuggers work",[58,59],{"id":53},{"id":60,"by":61,"text":62},"38237245","WalterBright","> I stared to work on Spray because I was curious about how debuggers work. Awesome. That's the way it's done!",{"value":64,"source":50,"evidence":65},"About 6 months",[66],{"id":53},[68,76],{"value":69,"source":70,"evidence":71},"C","commenter",[72],{"id":73,"by":74,"text":75},"38231354","bluetomcat","Looks especially clean, consistent and well-modularised, tackling a problem that requires non-trivial knowledge about binary formats and kernel APIs. Many \"senior\" programmers…",{"value":77,"source":70,"evidence":78},"Scheme (parts of the frontend)",[79],{"id":80,"by":81,"text":82},"38234136","forgotpwd16","Cool job. Grats! >Parts of the Spray frontend are written in Scheme Why you decided it do it that way rather fully in C or fully in Scheme?","open_source","prototype","solo",{"praise":87,"objections":118,"requests":141,"questions":153,"alternatives":173},[88,100,111],{"value":89,"source":70,"evidence":90},"Clean, well-organised code and tidy structure",[91,95,96],{"id":92,"by":93,"text":94},"38231246","koolba","First glance through the project and it seem well organized. Kudos! How long have you been programming and what languages did you start off with? I know quite a few developers…",{"id":73,"by":74,"text":75},{"id":97,"by":98,"text":99},"38236592","HybridCurve","I like reading young programmers' code: It's interesting to see how they design everything with a decently high level of knowledge, but not the years of experience. The author…",{"value":101,"source":70,"evidence":102},"Impressive for a 17-year-old",[103,107],{"id":104,"by":105,"text":106},"38230747","smithza","I want to only comment that your level of knowledge and maturity at the age of 17 is very impressive. The topics being investigated and exploited are expected at an undergraduate…",{"id":108,"by":109,"text":110},"38235196","SillyUsername","Well done. Achieving this at 17 is a rare feat even most supposed senior developers don't achieve and it ranks up there with writing an emulator. It was only in my late 20s I…",{"value":112,"source":70,"evidence":113},"Debuggers are hard to write, so this is good work",[114],{"id":115,"by":116,"text":117},"38230596","gumby","Debuggers are particularly tricky to write so this is quite good!",[119,134],{"value":120,"source":70,"evidence":121},"Mentioning the author's age is unnecessary self-promotion",[122,126,130],{"id":123,"by":124,"text":125},"38230755","jacknews","Very well done, and I hope you build this out further, but please leave out the 'as a 17 yo'. I really don't think it's relevant and risks coming across as cloying - your work…",{"id":127,"by":128,"text":129},"38234117","MuffinFlavored","I always found this a bit weird. Why do you want everybody to know how old you are? It's kind of like... hey, I did this impressive thing, please give me credit, but also, just…",{"id":131,"by":132,"text":133},"38234428","_Algernon_","This is a highly unusual and complex thing for anyone to accomplish. Why not let the achievement stand for itself? Mentioning one's age screams insecurity (though to be fair,…",{"value":135,"source":70,"evidence":136},"Debugger only supports self-hosted x86_64 Linux so far",[137],{"id":138,"by":139,"text":140},"38232737","bregma","So, only self-hosted debugging on x86_64 Linux. A good start. Now make it work for other common CPUs (aarch64, RISC-V). Make it work for other OSes (FreeBSD has ptrace, for…",[142,149],{"value":143,"source":70,"evidence":144},"Write a tutorial on building a debugger",[145],{"id":146,"by":147,"text":148},"38233015","zerr","Awesome! It might be boring for you, but accompanying that project with a \"Let's write a debugger\" tutorial would be very useful.",{"value":150,"source":70,"evidence":151},"Support more CPUs and operating systems",[152],{"id":138,"by":139,"text":140},[154,162,166],{"value":155,"source":70,"evidence":156},"How does a 17-year-old gain this level of knowledge?",[157,158],{"id":73,"by":74,"text":75},{"id":159,"by":160,"text":161},"38237375","sagarpatil","I'm impressed. What did your dad do to help you get interested in coding?",{"value":163,"source":70,"evidence":164},"Why are parts written in Scheme?",[165],{"id":80,"by":81,"text":82},{"value":167,"source":70,"evidence":168},"Why spaces between function names and arguments?",[169],{"id":170,"by":171,"text":172},"38234595","cyberpunk","Why do you put spaces between your function names and their arguments? I find it quite jarring, as someone who's spent a good 18 years reading C code :} ``` return…",[],{"comments":41,"answered":41,"key":175},[],{"commenters":177,"max_depth":178,"maker_replies":41,"first_comment_mins":179,"lifespan_hours":180},74,7,34,69,[182,184,188,192,196,199,202,204,207,210,213,214,217,220,223,226,229,232,234,236,239,242,244,246,248,251,254,258,260,263,265,266,268,270,273,275,278,279,282,285,288,290,292,295,297,299,301,303,308,311,314,318,320,322,324,326,328,331,335,338,341,343,346,349,351,353,357,360,363,365,368,370,373,376,379,381,383,385,388,391,393,396,399,402,405,407,409,412,415,418,420,422,423,425,427,429,432,434,437,439,442,444,446,449,451,454,456,459,463,466,469,472,476,479,482,484,486,488,490,493,495,497,500],[73,41,45,183,74,41],"maker\u002Fpositive\u002Fexecution",[185,41,18,186,187,41],"38231536","maker\u002Fneutral\u002Fnone","D4ckard",[189,41,41,190,191,41],"38232391","commenter\u002Fneutral\u002Fnone","manicennui",[193,41,41,194,195,41],"38234430","other\u002Fneutral\u002Fnone","flykespice",[197,41,41,190,198,41],"38235797","keyle",[200,41,41,190,201,41],"38237146","yi_xuan",[203,41,41,190,191,41],"38241483",[205,41,41,194,206,41],"38242765","bakuninsbart",[208,41,41,194,209,41],"38235623","uoaei",[211,41,41,194,212,41],"38236514","peruvian",[159,41,18,186,160,41],[215,41,41,194,216,41],"38231766","up2isomorphism",[218,41,41,194,219,41],"38232440","ManuelKiessling",[221,41,41,194,222,41],"38233050","sdwr",[224,41,41,194,225,41],"38235643","saagarjha",[227,41,41,194,228,41],"38232946","thibaut_barrere",[230,41,41,194,231,41],"38239418","seb1204",[233,41,41,194,228,41],"38239786",[235,41,41,194,187,41],"38239873",[237,41,41,190,238,41],"38245263","Sarkie",[240,41,41,194,241,41],"38233310","flashgordon",[243,41,41,190,225,41],"38235636",[245,41,41,190,81,41],"38234169",[247,41,41,194,187,41],"38239891",[249,41,41,194,250,41],"38251800","derangedHorse",[252,41,41,194,253,41],"38250972","JoeOfTexas",[255,39,45,256,257,41],"38231256","maker\u002Fpositive\u002Fnone","trmpakufnfee",[259,39,41,190,187,41],"38231512",[261,39,41,194,262,41],"38231783","xvilka",[264,39,41,190,187,41],"38232177",[92,33,45,256,93,41],[267,33,18,186,187,41],"38231592",[269,33,18,186,93,41],"38231770",[271,18,41,194,272,41],"38231277","pjmlp",[274,18,41,194,187,41],"38231614",[276,18,41,194,277,41],"38231702","junior44660",[104,34,45,256,105,41],[280,34,45,256,281,41],"38230975","fuzzfactor",[283,34,41,190,284,41],"38231985","superduty",[286,34,41,190,287,41],"38232217","thelock85",[289,34,41,194,281,41],"38254659",[291,34,41,194,281,41],"38254522",[293,34,41,190,294,41],"38246742","strikelaserclaw",[296,34,41,194,281,41],"38254354",[298,34,41,190,294,41],"38256458",[300,34,41,190,281,41],"38261919",[97,45,45,302,98,41],"project\u002Fpositive\u002Fexecution",[304,305,18,306,307,41],"38233417",6,"project\u002Fneutral\u002Fdesign","gdcbe",[309,178,45,256,310,41],"38231897","spiralx",[312,178,18,313,187,41],"38232162","project\u002Fneutral\u002Fexecution",[315,38,45,316,317,41],"38230652","project\u002Fpositive\u002Fnone","IamDaedalus",[319,38,18,186,187,41],"38231813",[115,321,45,302,116,41],9,[323,321,18,186,187,41],"38230610",[325,321,45,302,116,41],"38230836",[327,321,41,194,187,41],"38230878",[146,329,45,330,147,41],10,"project\u002Fpositive\u002Fdocs",[332,333,41,194,334,41],"38234954",11,"eliben",[170,336,39,337,171,41],12,"project\u002Fcritical\u002Fdesign",[339,336,18,306,340,41],"38234651","valleyer",[342,336,41,190,171,41],"38234667",[344,336,41,194,345,41],"38234763","darkwater",[60,347,45,348,61,41],13,"maker\u002Fpositive\u002Fidea",[80,350,18,306,81,41],14,[352,350,18,306,187,41],"38239966",[354,355,45,316,356,41],"38236160",15,"demyinn",[123,358,18,359,124,41],16,"maker\u002Fmixed\u002Fnone",[361,358,41,190,362,41],"38230840","raarts",[364,358,41,190,124,41],"38230927",[366,358,41,190,367,41],"38230994","InCityDreams",[369,358,41,190,362,41],"38231129",[371,358,41,190,372,41],"38231251","SushiHippie",[374,358,41,190,375,41],"38231352","ricardobeat",[377,358,41,190,378,41],"38231517","cinntaile",[380,358,41,190,372,41],"38236420",[382,358,41,190,378,41],"38238044",[384,358,41,190,195,41],"38231733",[386,358,45,302,387,41],"38230866","29athrowaway",[389,358,45,316,390,41],"38231117","brynbryn",[392,358,41,190,375,41],"38231295",[394,358,18,186,395,41],"38231562","schleck8",[397,32,45,256,398,41],"38231215","sneed_chucker",[127,400,39,401,128,41],18,"maker\u002Fcritical\u002Fnone",[403,400,41,190,404,41],"38234147","codetrotter",[406,400,41,190,128,41],"38234378",[408,400,41,190,228,41],"38234915",[410,400,41,190,411,41],"38236552","alex_lav",[413,400,45,302,414,41],"38234201","skullone",[416,400,41,190,417,41],"38234278","badrabbit",[419,400,41,190,414,41],"38242162",[421,400,41,190,417,41],"38243611",[131,400,39,401,132,41],[424,400,18,359,417,41],"38234267",[426,400,41,190,128,41],"38235642",[428,400,41,190,417,41],"38236316",[430,400,41,194,431,41],"38236577","pvg",[433,400,41,190,417,41],"38237606",[435,400,18,186,436,41],"38234776","2C64",[438,400,41,194,431,41],"38234975",[440,400,41,190,441,41],"38236842","w4yai",[443,400,41,190,98,41],"38237164",[108,445,45,302,109,41],19,[447,445,41,190,448,41],"38235357","silentsea90",[450,445,41,194,109,41],"38238411",[452,453,45,302,441,41],"38236905",20,[455,453,45,256,187,41],"38240012",[457,31,18,186,458,41],"38230775","MichaelRo",[460,461,41,194,462,41],"38232854",22,"lopkeny12ko",[464,461,41,194,465,41],"38232963","vimy",[467,461,41,190,468,41],"38232986","marcus0x62",[470,461,41,190,471,41],"38233354","dang",[473,474,45,316,475,41],"38230809",23,"white_beach",[138,477,39,478,139,41],24,"project\u002Fcritical\u002Fexecution",[480,477,18,313,481,41],"38232791","brancz",[483,477,18,313,187,41],"38232796",[485,477,41,190,228,41],"38232867",[487,477,41,190,462,41],"38232909",[489,477,41,190,228,41],"38232984",[491,477,41,190,492,41],"38233068","roadbuster",[494,477,41,194,471,41],"38233334",[496,477,41,190,471,41],"38233332",[498,477,41,190,499,41],"38233345","owenpalmer",[501,477,18,502,262,41],"38236619","project\u002Fneutral\u002Fnone",[],[505,510,515,519,523,527],{"id":506,"name":507,"points":508,"category":509},"38243949","dpoint",583,"hardware",{"id":511,"name":512,"points":513,"category":514},"38228788","DataSheetGrid",342,"languages",{"id":516,"name":517,"points":518,"category":514},"38202703","BabaBASIC",234,{"id":520,"name":521,"points":522,"category":20},"38230476","Flyscrape",208,{"id":524,"name":525,"points":526,"category":514},"38276430","Numbat",146,{"id":528,"name":529,"points":530,"category":531},"38236198","bulk_transcribe_youtube_videos_from_playlist",125,"ai",false,"v2",{"id":535,"name":5,"line":6,"ai":532,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":536,"top":18,"kw":537,"maker":11,"domain":10,"tier":19,"attempts":41,"strip":538,"url":9,"mix":539,"praise":89,"objection":120,"sub":21},38230325,0.42,[24,21,25,26,27],"5003000050405005455154000530513305503303",[31,32,33,34],1794036644534]