{"generator":"GNU social 2.0.2-dev","title":"Conversation","totalItems":3,"items":[{"actor":{"id":"https:\/\/mastodon.gamedev.place\/users\/nh","displayName":"Nicolai H\u00e4hnle","status_net":{"avatarLinks":[{"url":"https:\/\/gnusocial.jp\/avatar\/291637-original-tmp20241103114012.webp","rel":"avatar","type":"image\/webp","width":128,"height":128},{"url":"https:\/\/gnusocial.jp\/avatar\/291637-96-20241103114012.webp","rel":"avatar","type":"image\/webp","width":96,"height":96},{"url":"https:\/\/gnusocial.jp\/avatar\/291637-48-20241103114012.webp","rel":"avatar","type":"image\/webp","width":48,"height":48},{"url":"https:\/\/gnusocial.jp\/avatar\/291637-24-20241103114012.webp","rel":"avatar","type":"image\/webp","width":24,"height":24}],"profile_info":{"local_id":"291637"}},"image":{"url":"https:\/\/gnusocial.jp\/avatar\/291637-96-20241103114012.webp","rel":"avatar","type":"image\/webp","width":96,"height":96},"objectType":"person","summary":"Math, compilers, GPUs, horrible puns, off-by-one errors, and Oxford commas.","url":"https:\/\/mastodon.gamedev.place\/@nh","portablecontacts_net":{"preferredUsername":"nh","displayName":"Nicolai H\u00e4hnle","note":"Math, compilers, GPUs, horrible puns, off-by-one errors, and Oxford commas."}},"content":"<p><a href=\"https:\/\/mastodon.social\/@pervognsen\" class=\"u-url mention\">@pervognsen<\/a> What struck me when I looked at modern attempts to Verilog\/VHDL is that for many, their code read not like I was programming what the hardware would look like, but like I was writing a program that would assemble the hardware. E.g., you have to \"make_signal\" instead of just having the signal as part of the language.<\/p><p>It's a subtle distinction, and I'm now a HW person, but it felt really odd to me because SW languages don't work that way. We don't say \"make_loop\", we say \"for\".<\/p>","generator":{"id":"tag:gnusocial.jp,2026-07-07:notice-source:ActivityPub","objectType":"application","status_net":{"source_code":"ActivityPub"}},"id":"https:\/\/mastodon.gamedev.place\/users\/nh\/statuses\/114687840135613739","object":{"id":"https:\/\/mastodon.gamedev.place\/users\/nh\/statuses\/114687840135613739","objectType":"note","content":"<p><a href=\"https:\/\/mastodon.social\/@pervognsen\" class=\"u-url mention\">@pervognsen<\/a> What struck me when I looked at modern attempts to Verilog\/VHDL is that for many, their code read not like I was programming what the hardware would look like, but like I was writing a program that would assemble the hardware. E.g., you have to \"make_signal\" instead of just having the signal as part of the language.<\/p><p>It's a subtle distinction, and I'm now a HW person, but it felt really odd to me because SW languages don't work that way. We don't say \"make_loop\", we say \"for\".<\/p>","url":"https:\/\/mastodon.gamedev.place\/@nh\/114687840135613739","status_net":{"notice_id":null},"inReplyTo":{"objectType":"note","id":"https:\/\/mastodon.social\/users\/pervognsen\/statuses\/114687810170381453","url":"https:\/\/mastodon.social\/@pervognsen\/114687810170381453"}},"to":[{"objectType":"http:\/\/activitystrea.ms\/schema\/1.0\/person","id":"https:\/\/mastodon.social\/users\/pervognsen"},{"objectType":"http:\/\/activitystrea.ms\/schema\/1.0\/collection","id":"http:\/\/activityschema.org\/collection\/public"}],"status_net":{"conversation":"tag:gnusocial.jp,2025-06-30:objectType=thread:nonce=42968807e8c5f149","notice_info":{"local_id":"10364325","source":"ActivityPub"}},"published":"2025-06-30T18:56:40+00:00","provider":{"objectType":"service","displayName":"GNU social JP","url":"https:\/\/gnusocial.jp\/"},"verb":"post","url":"https:\/\/mastodon.gamedev.place\/@nh\/114687840135613739"},{"actor":{"id":"https:\/\/mastodon.social\/users\/pervognsen","displayName":"Per Vognsen","status_net":{"avatarLinks":[{"url":"https:\/\/gnusocial.jp\/avatar\/266361-original-tmp20240621194557.webp","rel":"avatar","type":"image\/webp","width":285,"height":285},{"url":"https:\/\/gnusocial.jp\/avatar\/266361-96-20240629015719.webp","rel":"avatar","type":"image\/webp","width":96,"height":96},{"url":"https:\/\/gnusocial.jp\/avatar\/266361-48-20240705223844.webp","rel":"avatar","type":"image\/webp","width":48,"height":48},{"url":"https:\/\/gnusocial.jp\/avatar\/266361-24-20240705223844.webp","rel":"avatar","type":"image\/webp","width":24,"height":24}],"profile_info":{"local_id":"266361"}},"image":{"url":"https:\/\/gnusocial.jp\/avatar\/266361-96-20240629015719.webp","rel":"avatar","type":"image\/webp","width":96,"height":96},"objectType":"person","summary":"Performance, compilers, hardware, mathematics, computer science.I&#39;ve worked in or adjacent to the video game industry for most of my career.","url":"https:\/\/mastodon.social\/@pervognsen","portablecontacts_net":{"preferredUsername":"pervognsen","displayName":"Per Vognsen","note":"Performance, compilers, hardware, mathematics, computer science.I&#39;ve worked in or adjacent to the video game industry for most of my career."}},"content":"<p>Revisiting some of my old Rattle HDL design ideas for Python (with a Rust-based core) with an eye towards seeing how much you can make things work with a statically type checkable facade while doing metaprogramming behind the static type checker's back. This statically type checks with pyright: <a href=\"https:\/\/gist.github.com\/pervognsen\/fc6a19d6c021f49826beea0c8840cc53\" rel=\"nofollow\">https:\/\/gist.github.com\/pervognsen\/fc6a19d6c021f49826beea0c8840cc53<\/a><\/p>","generator":{"id":"tag:gnusocial.jp,2026-07-07:notice-source:ActivityPub","objectType":"application","status_net":{"source_code":"ActivityPub"}},"id":"https:\/\/mastodon.social\/users\/pervognsen\/statuses\/114687810170381453","object":{"id":"https:\/\/mastodon.social\/users\/pervognsen\/statuses\/114687810170381453","objectType":"note","content":"<p>Revisiting some of my old Rattle HDL design ideas for Python (with a Rust-based core) with an eye towards seeing how much you can make things work with a statically type checkable facade while doing metaprogramming behind the static type checker's back. This statically type checks with pyright: <a href=\"https:\/\/gist.github.com\/pervognsen\/fc6a19d6c021f49826beea0c8840cc53\" rel=\"nofollow\">https:\/\/gist.github.com\/pervognsen\/fc6a19d6c021f49826beea0c8840cc53<\/a><\/p>","url":"https:\/\/mastodon.social\/@pervognsen\/114687810170381453","status_net":{"notice_id":null}},"to":[{"objectType":"http:\/\/activitystrea.ms\/schema\/1.0\/collection","id":"http:\/\/activityschema.org\/collection\/public"}],"status_net":{"conversation":"tag:gnusocial.jp,2025-06-30:objectType=thread:nonce=42968807e8c5f149","notice_info":{"local_id":"10364324","source":"ActivityPub"}},"published":"2025-06-30T18:56:40+00:00","provider":{"objectType":"service","displayName":"GNU social JP","url":"https:\/\/gnusocial.jp\/"},"verb":"post","url":"https:\/\/mastodon.social\/@pervognsen\/114687810170381453"},{"actor":{"id":"https:\/\/mastodon.social\/users\/amszmidt","displayName":"Alfred M. Szmidt","status_net":{"avatarLinks":[{"url":"https:\/\/gnusocial.jp\/avatar\/130031-original-tmp20230521113316.webp","rel":"avatar","type":"image\/webp","width":400,"height":400},{"url":"https:\/\/gnusocial.jp\/avatar\/130031-96-20230602002144.webp","rel":"avatar","type":"image\/webp","width":96,"height":96},{"url":"https:\/\/gnusocial.jp\/avatar\/130031-48-20230602002144.webp","rel":"avatar","type":"image\/webp","width":48,"height":48},{"url":"https:\/\/gnusocial.jp\/avatar\/130031-24-20230602002144.webp","rel":"avatar","type":"image\/webp","width":24,"height":24}],"profile_info":{"local_id":"130031"}},"image":{"url":"https:\/\/gnusocial.jp\/avatar\/130031-96-20230602002144.webp","rel":"avatar","type":"image\/webp","width":96,"height":96},"objectType":"person","summary":"software freedom or bust \/ lisp machine revolutionary \/ sauerpunk gnu hacker \/ wizard of zymurgy \/ professional curmudgeon#LispM #LispMachine #GNU","url":"https:\/\/mastodon.social\/@amszmidt","portablecontacts_net":{"preferredUsername":"amszmidt","displayName":"Alfred M. Szmidt","note":"software freedom or bust \/ lisp machine revolutionary \/ sauerpunk gnu hacker \/ wizard of zymurgy \/ professional curmudgeon#LispM #LispMachine #GNU"}},"content":"<p><a href=\"https:\/\/mastodon.gamedev.place\/@nh\" class=\"u-url mention\">@nh<\/a> <a href=\"https:\/\/mastodon.social\/@pervognsen\" class=\"u-url mention\">@pervognsen<\/a> Why not just .. use VHDL?  It is quite OK, even modern versions for HDL.<\/p>","generator":{"id":"tag:gnusocial.jp,2026-07-07:notice-source:ActivityPub","objectType":"application","status_net":{"source_code":"ActivityPub"}},"id":"https:\/\/mastodon.social\/users\/amszmidt\/statuses\/114773838787773232","object":{"id":"https:\/\/mastodon.social\/users\/amszmidt\/statuses\/114773838787773232","objectType":"note","content":"<p><a href=\"https:\/\/mastodon.gamedev.place\/@nh\" class=\"u-url mention\">@nh<\/a> <a href=\"https:\/\/mastodon.social\/@pervognsen\" class=\"u-url mention\">@pervognsen<\/a> Why not just .. use VHDL?  It is quite OK, even modern versions for HDL.<\/p>","url":"https:\/\/mastodon.social\/@amszmidt\/114773838787773232","status_net":{"notice_id":null},"inReplyTo":{"objectType":"note","id":"https:\/\/mastodon.gamedev.place\/users\/nh\/statuses\/114687840135613739","url":"https:\/\/mastodon.gamedev.place\/@nh\/114687840135613739"}},"to":[{"objectType":"http:\/\/activitystrea.ms\/schema\/1.0\/person","id":"https:\/\/mastodon.social\/users\/pervognsen"},{"objectType":"http:\/\/activitystrea.ms\/schema\/1.0\/person","id":"https:\/\/mastodon.gamedev.place\/users\/nh"},{"objectType":"http:\/\/activitystrea.ms\/schema\/1.0\/collection","id":"http:\/\/activityschema.org\/collection\/public"}],"status_net":{"conversation":"tag:gnusocial.jp,2025-06-30:objectType=thread:nonce=42968807e8c5f149","notice_info":{"local_id":"10364326","source":"ActivityPub"}},"published":"2025-06-30T18:56:38+00:00","provider":{"objectType":"service","displayName":"GNU social JP","url":"https:\/\/gnusocial.jp\/"},"verb":"post","url":"https:\/\/mastodon.social\/@amszmidt\/114773838787773232"}],"links":[{"url":"https:\/\/gnusocial.jp\/conversation\/5281479","rel":"alternate","type":"text\/html"}]}