{"id":342,"date":"2015-03-01T01:47:18","date_gmt":"2015-03-01T01:47:18","guid":{"rendered":"http:\/\/mjdarby.net\/blog\/?page_id=342"},"modified":"2015-03-01T19:38:37","modified_gmt":"2015-03-01T19:38:37","slug":"projects","status":"publish","type":"page","link":"http:\/\/mjdarby.net\/blog\/projects\/","title":{"rendered":"Projects"},"content":{"rendered":"<p>I try and keep busy, even if what I&#8217;m working on isn&#8217;t &#8216;useful&#8217; or &#8216;thought through&#8217;. You can find basically everything programming related thing I do on <a title=\"Github\" href=\"https:\/\/github.com\/mjdarby\">my Github<\/a>, but why go through all that when I can give you the low-down on the down-low right here?<\/p>\n<h3>BrainNyan<\/h3>\n<p><a href=\"https:\/\/github.com\/mjdarby\/BrainNyan\">BrainNyan<\/a> is a <a href=\"http:\/\/en.wikipedia.org\/wiki\/Brainfuck\">BF<\/a> interpreter written in Python. Seriously, that&#8217;s about it. It has one special property however: All of the keywords of the language can be remapped to arbitrary strings. For instance, the following is a valid BrainNyan program:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">Ahem. This is a BrainNy4n program. It will read like the ramblings of a mad\r\nman, but that is entirely normal.\r\n\r\nTsun! I love a bit of tsun. Tsun is the way to be. If you're doubly so, are\r\nyou tsuntsun? Tsun... Tsun is a state of mind!? Tsun is life! Anta wouldn't\r\nunderstand~ Nyan, tsuntsun! A cat who is tsuntsun! Don't you think that's the\r\nbest? If not, ANTA BWAKA! Nyancore is the best music genre. I'm tsun for\r\ngrunge, but not so tsun for indie rock.\r\n\r\nMy cat has something to say: Nyan! I think my cat is tsun for me. Then again,\r\none might suppose cats are tsun for most things. If they weren't so tsun,\r\nmaybe we'd hear less nyan and more purring. They always start off tsun, but\r\nwith a bit of effort you can reduce the tsun levels with treats. But screw up,\r\nand they'll be back to super tsun faster than you can say nyan! Or even tsun!\r\n\r\nA dog goes wan wan and it makes my heart go wan wan kyun! So dere! Not baka at\r\nat all. If a dog hears a nyan, it goes all tsun! Nyan: Tsun. No nyan: Dere!\r\nNyannyan is way out. All you get for that is tsun. Anta! Do you understand the\r\npower of the wan yet, baka? Wan: Dere! Baka: Nyan! Nyan comes from nekos! Nyan\r\nis not dere! Only dere is dere!\r\n\r\nNever fear the power of the neko. Though their tsun power is unrivalled,\r\ntheir tsun nature makes them woefully weak against puppies. Tsun is only good\r\nfor one thing: Generating more tsun! Tsun can be beautiful, but only if you\r\nlike tsun! If you like tsun, you will like nekos. Neko = Tsun! Tsun = Tsun!\r\nNekos go nyan! Nyan = Neko! Wan = Dere! I'm losing my mind! Neko! Wan Neko!\r\nTsun! Tsun! Tsun! Neko! Dere! Dere! Dere! Dere! Dere! Dere! Neko! Dere! Dere!\r\nDere! Dere! Dere! Dere! Dere! Dere! Neko! Nyan! Nyan! Tsun! Neko! Nyan! Tsun!\r\nTsun! Nyan! Neko!<\/pre>\n<p>This outputs the following when run through BrainNyan with the appropriate keyword mapping:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">Hello World!<\/pre>\n<p>Quite horrifying, don&#8217;t you agree? Certain words in the above are &#8216;secretly&#8217; keywords replacing all\u00a0BF commands like\u00a0<code class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">+<\/code>, <code class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">-<\/code>, <code class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">&gt;<\/code>, etc. Check out the <a href=\"https:\/\/github.com\/mjdarby\/BrainNyan\">Github page<\/a>\u00a0for more info!<\/p>\n<h3>Brain2Speare and Speare2Brain<\/h3>\n<p>Two\u00a0<em>highly<\/em> pointless projects focusing on transpilation of BF to <a href=\"http:\/\/en.wikipedia.org\/wiki\/Shakespeare_(programming_language)\">Shakespeare<\/a>\u00a0and vice versa. <a href=\"https:\/\/github.com\/mjdarby\/Brain2Speare\">Brain2Speare<\/a> deals with, well, you can figure it out. I wrote a <a href=\"http:\/\/mjdarby.net\/blog\/2014\/10\/22\/brain2speare\/\">blog post<\/a> about it! <a href=\"https:\/\/github.com\/mjdarby\/Speare2Brain\">Speare2Brain<\/a> goes the other way! I didn&#8217;t finish it, but I learned quite a bit about using some of the parser and grammar tools out there. There&#8217;s a <a href=\"http:\/\/mjdarby.net\/blog\/2014\/11\/05\/speare2brain\/\">blog post<\/a> about that too.<\/p>\n<h3>Hermes<\/h3>\n<p>Hermes is my attempt at producing a textboard in Python and Django. It&#8217;s pretty full-featured, emulating most of the functionality available on any other given textboard. I&#8217;ve done a short post about textboards and the inspiration of the project <a href=\"%20http:\/\/mjdarby.net\/blog\/2015\/03\/01\/hermes-a-textboard\/\">here<\/a>. For your perusal, there is the <a href=\"https:\/\/github.com\/mjdarby\/Hermes\">Github page<\/a>, and also <a href=\"http:\/\/hermeschannel.herokuapp.com\/\">the demo<\/a>! I&#8217;m rather happy with Hermes: It didn&#8217;t take long to put together and it&#8217;s almost an actual piece of software that could be used for\u00a0<em>real\u00a0things<\/em>. That&#8217;s crazy!<\/p>\n<h3>password.py<\/h3>\n<p>Password.py is a keyboard layout generator for constructing strong passwords under a prefix-secret-site name scheme. That sounds complicated, but it&#8217;s actually pretty easy to get your head around! You can see the original Python implementation <a href=\"https:\/\/github.com\/mjdarby\/password.py\">here<\/a>, or you can check out <a href=\"http:\/\/quickpass.herokuapp.com\/\">QuickPass<\/a> if you want a good lookin&#8217; web interface.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I try and keep busy, even if what I&#8217;m working on isn&#8217;t &#8216;useful&#8217; or &#8216;thought through&#8217;. You can find basically everything programming related thing I do on my Github, but why go through all that when I can give you the low-down on the down-low right here? BrainNyan BrainNyan is a BF interpreter written in <a class=\"read-more\" href=\"http:\/\/mjdarby.net\/blog\/projects\/\">[&hellip;]<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"open","ping_status":"open","template":"","meta":{"footnotes":""},"class_list":["post-342","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"http:\/\/mjdarby.net\/blog\/wp-json\/wp\/v2\/pages\/342","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/mjdarby.net\/blog\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/mjdarby.net\/blog\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/mjdarby.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/mjdarby.net\/blog\/wp-json\/wp\/v2\/comments?post=342"}],"version-history":[{"count":13,"href":"http:\/\/mjdarby.net\/blog\/wp-json\/wp\/v2\/pages\/342\/revisions"}],"predecessor-version":[{"id":374,"href":"http:\/\/mjdarby.net\/blog\/wp-json\/wp\/v2\/pages\/342\/revisions\/374"}],"wp:attachment":[{"href":"http:\/\/mjdarby.net\/blog\/wp-json\/wp\/v2\/media?parent=342"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}