{"id":99,"date":"2010-02-08T21:10:02","date_gmt":"2010-02-08T20:10:02","guid":{"rendered":"http:\/\/blog.blockos.org\/?p=99"},"modified":"2014-09-21T17:10:58","modified_gmt":"2014-09-21T16:10:58","slug":"malevitch-cant-code","status":"publish","type":"post","link":"https:\/\/blog.blockos.org\/?p=99","title":{"rendered":"Malevitch can&#8217;t code!"},"content":{"rendered":"<p>Some months ago, <a href=\"http:\/\/www.iquilezles.org\">Iq<\/a> asked on <a href=\"http:\/\/pouet.net\/topic.php?which=7014\">Pouet bbs<\/a> if anyone had some tip and tricks on creating a minimal glx framework.<br \/>\n<a href=\"http:\/\/www.pelulamu.net\/viznut\/\">Viznut<\/a> answered that he managed to have open a window and refresh a framebuffer in 300 bytes using kernel syscalls.<br \/>\nSo I jumped on the bandwagon and decided to code my own minimal X client using raw X11 protocol.<br \/>\nHere&#8217;s my <a href=\"http:\/\/gist.github.com\/252808\">miserable attempt<\/a>. Looking at <a href=\"http:\/\/cgit.freedesktop.org\/xcb\/\">xcb<\/a> and <a href=\"http:\/\/cgit.freedesktop.org\/xorg\/lib\/libX11\/tree\/\">Xlib<\/a> code helped a lot. Unfortunately it failed on half of the boxes where it was tested because of authentication.<br \/>\n<a href=\"http:\/\/kernel-error.tuxfamily.org\/\">Kernel_error<\/a> tried to add it but he said it&#8217;s a pain in the harp.<br \/>\nOh by the way, it&#8217;ll crash on x64&#8230; Here&#8217;s <a href=\"http:\/\/nibbles.tuxfamily.org\/?p=558\">small article in french <\/a> about the different syscall conventions. And you&#8217;ll surely understand why it&#8217;ll crash \ud83d\ude42<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Some months ago, Iq asked on Pouet bbs if anyone had some tip and tricks on creating a minimal glx framework. Viznut answered that he managed to have open a window and refresh a framebuffer in 300 bytes using kernel syscalls. So I jumped on the bandwagon and decided to\u2026 <a class=\"continue-reading-link\" href=\"https:\/\/blog.blockos.org\/?p=99\">Continue reading<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[27,23,12,22],"_links":{"self":[{"href":"https:\/\/blog.blockos.org\/index.php?rest_route=\/wp\/v2\/posts\/99"}],"collection":[{"href":"https:\/\/blog.blockos.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.blockos.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.blockos.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.blockos.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=99"}],"version-history":[{"count":10,"href":"https:\/\/blog.blockos.org\/index.php?rest_route=\/wp\/v2\/posts\/99\/revisions"}],"predecessor-version":[{"id":978,"href":"https:\/\/blog.blockos.org\/index.php?rest_route=\/wp\/v2\/posts\/99\/revisions\/978"}],"wp:attachment":[{"href":"https:\/\/blog.blockos.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=99"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.blockos.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=99"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.blockos.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=99"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}