<?xml version='1.0' encoding='utf-8' ?>

<rss version='2.0' xmlns:lj='http://www.livejournal.org/rss/lj/1.0/' xmlns:atom10='http://www.w3.org/2005/Atom'>
<channel>
  <title>spinda&apos;s dreamwidth</title>
  <link>https://spindas.dreamwidth.org/</link>
  <description>spinda&apos;s dreamwidth - Dreamwidth Studios</description>
  <lastBuildDate>Tue, 27 Dec 2022 02:09:15 GMT</lastBuildDate>
  <generator>LiveJournal / Dreamwidth Studios</generator>
  <lj:journal>spindas</lj:journal>
  <lj:journaltype>personal</lj:journaltype>
  <image>
    <url>https://v2.dreamwidth.org/10984319/2331049</url>
    <title>spinda&apos;s dreamwidth</title>
    <link>https://spindas.dreamwidth.org/</link>
    <width>100</width>
    <height>100</height>
  </image>

<item>
  <guid isPermaLink='true'>https://spindas.dreamwidth.org/4207.html</guid>
  <pubDate>Tue, 27 Dec 2022 02:09:15 GMT</pubDate>
  <title>Who needs a backend? ChatGPT as the universal Redux reducer</title>
  <link>https://spindas.dreamwidth.org/4207.html</link>
  <description>&lt;p&gt;A React/Redux app is a &lt;a href=&quot;https://redux.js.org/tutorials/essentials/part-1-overview-concepts#redux-application-data-flow&quot;&gt;one-way data flow cycle&lt;/a&gt;. The user interacts with the UI, which produces Redux &lt;strong&gt;actions&lt;/strong&gt;, which get dispatched to &lt;strong&gt;reducer&lt;/strong&gt; functions, which update the app’s &lt;strong&gt;state&lt;/strong&gt; object, which gets passed back to React to re-render the UI.&lt;/p&gt;
&lt;p&gt;A conversation with &lt;a href=&quot;https://chat.openai.com&quot;&gt;ChatGPT&lt;/a&gt; is &lt;em&gt;also&lt;/em&gt; a one-way cycle. A human sends a &lt;strong&gt;prompt&lt;/strong&gt; (action), which gets passed to the &lt;strong&gt;language model&lt;/strong&gt; (reducer), which updates the &lt;strong&gt;conversation&lt;/strong&gt; (state) with its response.&lt;/p&gt;
&lt;p&gt;Can we use the latter to emulate the former? Spoilers: yes, we totally can! ChatGPT will happily act as your universal reducer, so you can prototype your app’s frontend without needing to mock up a backend or business logic right away. And after interacting with the frontend for a bit to teach the AI how the app works, you can even ask it to implement the reducer function for you.&lt;/p&gt;
&lt;p&gt;Here’s a quick demo of a basic counter app with my &lt;a href=&quot;https://github.com/spinda/react-redux-chatgpt/tree/main/react-redux-chatgpt&quot;&gt;&lt;code style=&quot;white-space:pre-wrap&quot;&gt;react-redux-chatgpt&lt;/code&gt;&lt;/a&gt; plugin doing the reducing (app on the left, behind-the-scenes ChatGPT conversation in the console on the right):&lt;/p&gt;
&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/u9rE7sfCmj8&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;allowfullscreen&quot;&gt;
&lt;/iframe&gt;
&lt;p&gt;And here’s ChatGPT powering the &lt;a href=&quot;https://github.com/reduxjs/redux/tree/master/examples/todomvc&quot;&gt;Redux TodoMVC example&lt;/a&gt;, unmodified except to delete the reducers and replace them with ChatGPT:&lt;/p&gt;
&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/GgR1QiPPie4&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;allowfullscreen&quot;&gt;
&lt;/iframe&gt;
&lt;p&gt;Check out the &lt;a href=&quot;https://github.com/spinda/react-redux-chatgpt&quot;&gt;source code&lt;/a&gt; on GitHub! Or keep reading for an in-depth explainer.&lt;/p&gt;
&lt;span class=&quot;cut-wrapper&quot;&gt;&lt;span style=&quot;display: none;&quot; id=&quot;span-cuttag___1&quot; class=&quot;cuttag&quot;&gt;&lt;/span&gt;&lt;b class=&quot;cut-open&quot;&gt;(&amp;nbsp;&lt;/b&gt;&lt;b class=&quot;cut-text&quot;&gt;&lt;a href=&quot;https://spindas.dreamwidth.org/4207.html#cutid1&quot;&gt;Read more...&lt;/a&gt;&lt;/b&gt;&lt;b class=&quot;cut-close&quot;&gt;&amp;nbsp;)&lt;/b&gt;&lt;/span&gt;&lt;div style=&quot;display: none;&quot; id=&quot;div-cuttag___1&quot; aria-live=&quot;assertive&quot;&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=spindas&amp;ditemid=4207&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://spindas.dreamwidth.org/4207.html</comments>
  <category>artificial intelligence</category>
  <category>javascript</category>
  <category>web</category>
  <category>machine learning</category>
  <category>redux</category>
  <category>react</category>
  <category>program synthesis</category>
  <lj:music>la pumpkin - BLOODY MEMOIR vol. II</lj:music>
  <lj:mood>artistic</lj:mood>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://spindas.dreamwidth.org/3908.html</guid>
  <pubDate>Wed, 16 Mar 2022 09:46:13 GMT</pubDate>
  <title>Software I rely on to make Windows usable</title>
  <link>https://spindas.dreamwidth.org/3908.html</link>
  <description>&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/valinet/ExplorerPatcher&quot;&gt;ExplorerPatcher&lt;/a&gt; by &lt;a href=&quot;https://valinet.ro&quot;&gt;Valentin-Gabriel Radu&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/mgth/LittleBigMouse&quot;&gt;LittleBigMouse&lt;/a&gt; by &lt;a href=&quot;http://mgth.fr&quot;&gt;Mathieu Grenet&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://eartrumpet.app&quot;&gt;EarTrumpet&lt;/a&gt; by &lt;a href=&quot;https://goldentao.net&quot;&gt;David Golden&lt;/a&gt; (of &lt;a href=&quot;https://metrotwit.com&quot;&gt;MetroTwit&lt;/a&gt; fame), &lt;a href=&quot;https://withinrafael.com&quot;&gt;Rafael Rivera&lt;/a&gt;, and &lt;a href=&quot;https://github.com/davuxcom&quot;&gt;Dave Amenta&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/AutoDarkMode/Windows-Auto-Night-Mode&quot;&gt;Auto Dark Mode&lt;/a&gt; by &lt;a href=&quot;https://github.com/Spiritreader&quot;&gt;Spiritreader&lt;/a&gt; and &lt;a href=&quot;https://github.com/Armin2208&quot;&gt;Armin Osaj&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://powerplan.forbootcamp.org&quot;&gt;Power Plan Assistant&lt;/a&gt; by &lt;a href=&quot;http://forbootcamp.org&quot;&gt;Vladimir Shoham/forBootCamp.org&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://wincompose.info&quot;&gt;WinCompose&lt;/a&gt; by &lt;a href=&quot;http://sam.hocevar.net&quot;&gt;Sam Hocevar&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Bonus:&lt;/strong&gt; &lt;a href=&quot;https://github.com/TranslucentTB/TranslucentTB&quot;&gt;TranslucentTB&lt;/a&gt; by &lt;a href=&quot;https://sylveon.dev&quot;&gt;Charles Milette&lt;/a&gt;.&lt;/p&gt;
&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=spindas&amp;ditemid=3908&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://spindas.dreamwidth.org/3908.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://spindas.dreamwidth.org/3811.html</guid>
  <pubDate>Tue, 26 Jan 2021 10:49:29 GMT</pubDate>
  <title>Modern Rocket Raccoon &amp; Groot Reading List (2021)</title>
  <link>https://spindas.dreamwidth.org/3811.html</link>
  <description>Sticking this here so I can stop re-compiling this info for myself. Here&apos;s the reading order for the modern Marvel comics featuring the characters Rocket Raccoon and Groot, for someone not interested in reading the mainline &lt;em&gt;Guardians of the Galaxy&lt;/em&gt; books, as of the start of 2021.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://marvel.fandom.com/wiki/Rocket_Raccoon_Vol_2&quot;&gt;&lt;i&gt;Rocket Raccoon Vol 2&lt;/i&gt; (2014-2015)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://marvel.fandom.com/wiki/Groot_Vol_1&quot;&gt;&lt;em&gt;Groot Vol 1&lt;/em&gt; (2015)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://marvel.fandom.com/wiki/Rocket_Raccoon_and_Groot_Vol_1&quot;&gt;&lt;em&gt;Rocket Raccoon and Groot Vol 1&lt;/em&gt; (2016)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://marvel.fandom.com/wiki/Rocket_Raccoon_Vol_3&quot;&gt;&lt;em&gt;Rocket Raccoon Vol 3&lt;/em&gt; (2017)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://marvel.fandom.com/wiki/I_Am_Groot_Vol_1&quot;&gt;&lt;em&gt;I Am Groot Vol 1&lt;/em&gt; (2017)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://marvel.fandom.com/wiki/Rocket_Vol_1&quot;&gt;&lt;em&gt;Rocket Vol 1&lt;/em&gt; (2017)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;Because really, Rocket and Groot are the only Guardians of the Galaxy you actually care about, right?&lt;br /&gt;&lt;br /&gt;&lt;footer&gt;&amp;mdash;&lt;i&gt;ROCKET RACCOON VOL. 1: A CHASING TALE (Trade Paperback)&lt;/i&gt;&lt;/footer&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=spindas&amp;ditemid=3811&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://spindas.dreamwidth.org/3811.html</comments>
  <category>marvel</category>
  <category>comics</category>
  <category>rocket raccoon</category>
  <category>guardians of the galaxy</category>
  <category>reading</category>
  <category>groot</category>
  <category>resource</category>
  <lj:music>Arctique Circles - Vesica Pisces</lj:music>
  <lj:mood>cold</lj:mood>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://spindas.dreamwidth.org/2765.html</guid>
  <pubDate>Sun, 28 Feb 2016 00:17:14 GMT</pubDate>
  <title>$ curl poptart.spinda.net</title>
  <link>https://spindas.dreamwidth.org/2765.html</link>
  <description>&lt;img alt=&quot;&quot; src=&quot;https://www.spinda.net/files/blog/nya.gif&quot; /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=spindas&amp;ditemid=2765&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://spindas.dreamwidth.org/2765.html</comments>
  <category>hacks</category>
  <category>web</category>
  <category>fun</category>
  <lj:music>Momo Momo - Nyanyanyanyanyanyanya!</lj:music>
  <lj:mood>amused</lj:mood>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://spindas.dreamwidth.org/2452.html</guid>
  <pubDate>Tue, 23 Feb 2016 01:39:29 GMT</pubDate>
  <title>A better rich text editor for Dreamwidth</title>
  <link>https://spindas.dreamwidth.org/2452.html</link>
  <description>&lt;p&gt;For whatever reason, Dreamwidth’s default rich text editor (built on an old version of FCKEditor) hides a lot of the available toolbar buttons. I’ve written a quick userscript that enables all available buttons in the editor, and also increases the height a bit to make writing more pleasant. I’ve tested it on Firefox with GreaseMonkey; presumably it should work on Chrome/Chromium as well.&lt;/p&gt;



&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code class=&quot;language-javascript hljs &quot;&gt;&lt;span class=&quot;hljs-comment&quot;&gt;// ==UserScript==&lt;/span&gt;
&lt;span class=&quot;hljs-comment&quot;&gt;// @name        Better Dreamwidth Editor&lt;/span&gt;
&lt;span class=&quot;hljs-comment&quot;&gt;// @namespace   betterdweditor&lt;/span&gt;
&lt;span class=&quot;hljs-comment&quot;&gt;// @include     https://www.dreamwidth.org/update?usejournal=spindas&lt;/span&gt;
&lt;span class=&quot;hljs-comment&quot;&gt;// @include     https://www.dreamwidth.org/editjournal*&lt;/span&gt;
&lt;span class=&quot;hljs-comment&quot;&gt;// @version     1&lt;/span&gt;
&lt;span class=&quot;hljs-comment&quot;&gt;// @grant       none&lt;/span&gt;
&lt;span class=&quot;hljs-comment&quot;&gt;// ==/UserScript==&lt;/span&gt;

window.onload = &lt;span class=&quot;hljs-function&quot;&gt;&lt;span class=&quot;hljs-keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;hljs-params&quot;&gt;()&lt;/span&gt; {&lt;/span&gt;
  &lt;span class=&quot;hljs-keyword&quot;&gt;var&lt;/span&gt; frame = document.getElementById(&lt;span class=&quot;hljs-string&quot;&gt;&apos;draft___Frame&apos;&lt;/span&gt;);
  frame.onload = &lt;span class=&quot;hljs-function&quot;&gt;&lt;span class=&quot;hljs-keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;hljs-params&quot;&gt;()&lt;/span&gt; {&lt;/span&gt;
    document.getElementById(&lt;span class=&quot;hljs-string&quot;&gt;&apos;draft___Frame&apos;&lt;/span&gt;).style.height = &lt;span class=&quot;hljs-string&quot;&gt;&apos;600px&apos;&lt;/span&gt;;
  };
  frame.src = &lt;span class=&quot;hljs-string&quot;&gt;&apos;https://www.dreamwidth.org/stc/fck/editor/fckeditor.html?InstanceName=draft&amp;amp;Toolbar=Default&apos;&lt;/span&gt;;
};&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=spindas&amp;ditemid=2452&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://spindas.dreamwidth.org/2452.html</comments>
  <category>userscripts</category>
  <category>snippets</category>
  <category>web</category>
  <category>tweaks</category>
  <category>dreamwidth</category>
  <lj:music>Mr Explicit, Balistik - Philadelphia Sunrise (Utah Jazz Remix)</lj:music>
  <lj:mood>busy</lj:mood>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://spindas.dreamwidth.org/2244.html</guid>
  <pubDate>Thu, 18 Feb 2016 23:22:05 GMT</pubDate>
  <title>Reverse engineering the Firewatch.camera API (and pranking r/Firewatch)</title>
  <link>https://spindas.dreamwidth.org/2244.html</link>
  <description>&lt;a href=&quot;http://firewatchgame.com&quot;&gt;Firewatch&lt;/a&gt; is a story-centric game by &lt;a href=&quot;http://camposanto.com&quot;&gt;Campo Santo&lt;/a&gt; and &lt;a href=&quot;https://panic.com&quot;&gt;Panic&lt;/a&gt;. I played it all the way through this weekend  and had a really great time with it. Besides the top-notch voice acting, gorgeous  visuals, and mystery-filled plot, one feature that&amp;rsquo;s been getting a lot of  attention is the disposable camera the player carries through most of the game.  Starting with 18 unused shots on the roll, you can fill it up with snaps of  trees and trails and plenty of sunsets peaking over the hills. At the end  they&amp;rsquo;re all uploaded to a personal page on &lt;a href=&quot;https://firewatch.camera&quot;&gt;Firewatch.camera&lt;/a&gt;, where you can share them  or order prints from the &amp;quot;Fotodome&amp;quot;.&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.spinda.net/files/blog/firewatch/photo_upload_screen.png&quot; alt=&quot;Firewatch photo upload screen&quot; width=&quot;690&quot; height=&quot;401&quot; /&gt;&lt;br /&gt;&lt;br /&gt;At the end of my own playthrough, I uploaded my shots and logged onto the site  to see them.&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.spinda.net/files/blog/firewatch/my_camera_roll.png&quot; alt=&quot;My camera roll&quot; width=&quot;684&quot; height=&quot;579&quot; /&gt;&lt;br /&gt;&lt;br /&gt;But one of them came out&amp;hellip; weird.&lt;span class=&quot;cut-wrapper&quot;&gt;&lt;span style=&quot;display: none;&quot; id=&quot;span-cuttag___1&quot; class=&quot;cuttag&quot;&gt;&lt;/span&gt;&lt;b class=&quot;cut-open&quot;&gt;(&amp;nbsp;&lt;/b&gt;&lt;b class=&quot;cut-text&quot;&gt;&lt;a href=&quot;https://spindas.dreamwidth.org/2244.html#cutid1&quot;&gt;Read more...&lt;/a&gt;&lt;/b&gt;&lt;b class=&quot;cut-close&quot;&gt;&amp;nbsp;)&lt;/b&gt;&lt;/span&gt;&lt;div style=&quot;display: none;&quot; id=&quot;div-cuttag___1&quot; aria-live=&quot;assertive&quot;&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=spindas&amp;ditemid=2244&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://spindas.dreamwidth.org/2244.html</comments>
  <category>firewatch</category>
  <category>code</category>
  <category>tutorial</category>
  <category>fun</category>
  <category>nodejs</category>
  <category>games</category>
  <category>hacks</category>
  <lj:music>she - Artifical Love</lj:music>
  <lj:mood>busy</lj:mood>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://spindas.dreamwidth.org/1988.html</guid>
  <pubDate>Tue, 19 Jan 2016 06:29:51 GMT</pubDate>
  <title>Internships 2016</title>
  <link>https://spindas.dreamwidth.org/1988.html</link>
  <description>&lt;p&gt;After doing Google Summer of Code last year, this is my first year of applying for internships. So I&amp;rsquo;m nervous-yet-excited, and am really hoping that resumes actually get looked at as I don&amp;rsquo;t have any &amp;ldquo;employers&amp;rdquo; to put down so far.&lt;/p&gt; &lt;p&gt;Places I&amp;rsquo;ve applied to:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href=&quot;https://careers.mozilla.org/en-US/university/&quot;&gt;&lt;strong&gt;Mozilla&lt;/strong&gt;&lt;/a&gt; in Mountain View &amp;ndash; open source, makers of Firefox and Rust!&amp;nbsp;This is kind of my dream job.&lt;/li&gt; &lt;li&gt;&lt;a href=&quot;https://www.adobe.com/careers/university/internships.html&quot;&gt;&lt;strong&gt;Adobe&lt;/strong&gt;&lt;/a&gt; in San Jose &amp;ndash; they&amp;rsquo;re really easy to get to from home, which is great since I don&amp;rsquo;t have my driver&amp;rsquo;s license yet.&lt;/li&gt; &lt;li&gt;&lt;a href=&quot;https://careers.yahoo.com/us/students&quot;&gt;&lt;strong&gt;Yahoo&lt;/strong&gt;&lt;/a&gt; in Sunnyvale &amp;ndash; also very reachable.&lt;/li&gt; &lt;li&gt;&lt;a href=&quot;https://www.facebook.com/careers/university/internships/engineering&quot;&gt;&lt;strong&gt;Facebook&lt;/strong&gt;&lt;/a&gt; in Mountain View &amp;ndash; one at WhatsApp, where they use Erlang! And two elsewhere in the company.&lt;br /&gt;Lesson learned: if you have a Facebook account, make sure you log in before applying, &lt;s&gt;and use Chrome &amp;ndash; the &amp;ldquo;Skills&amp;rdquo; field is currently broken on Firefox&lt;/s&gt; &lt;em&gt;(this seems to be fixed now)&lt;/em&gt;. Also, some fields have character caps that aren&apos;t apparent unless you proceed to the next page and then go back.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Places I&amp;rsquo;ve looked at:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href=&quot;https://www.janestreet.com/join-jane-street/internships/&quot;&gt;&lt;strong&gt;Jane Street&lt;/strong&gt;&lt;/a&gt; &amp;ndash; it&amp;rsquo;d be fun to work in a functional language like OCaml, but they only have positions in NYC, London, and Hong Kong.&lt;/li&gt; &lt;li&gt;&lt;a href=&quot;https://galois.com/careers/software-engineer-intern/&quot;&gt;&lt;strong&gt;Galois&lt;/strong&gt;&lt;/a&gt; &amp;ndash; another FP&amp;nbsp;(Haskell) shop that&amp;rsquo;s too far away (Portland).&lt;/li&gt; &lt;li&gt;&lt;a href=&quot;https://www.google.com/about/careers/students/&quot;&gt;&lt;strong&gt;Google&lt;/strong&gt;&lt;/a&gt; &amp;ndash; they&amp;rsquo;re all closed up for the summer internships. I&amp;rsquo;ll have to apply earlier next year.&lt;/li&gt; &lt;li&gt;&lt;a href=&quot;https://nest.com/careers/&quot;&gt;&lt;strong&gt;Nest&lt;/strong&gt;&lt;/a&gt; &amp;ndash; lots of positions open, but the closest office is in Palo Alto, which lacks good public transportation to and from San Jose.&lt;/li&gt; &lt;li&gt;&lt;a href=&quot;https://about.twitter.com/careers/teams/university&quot;&gt;&lt;strong&gt;Twitter&lt;/strong&gt;&lt;/a&gt; &amp;ndash; again, the nearest office is in-state but not close enough (San Francisco).&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;As it turns out, location is a major limiting factor for me. I definitely need to start driving soon.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=spindas&amp;ditemid=1988&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://spindas.dreamwidth.org/1988.html</comments>
  <category>status-update</category>
  <category>jobs</category>
  <category>internships</category>
  <lj:music>nil.team nest - its not truth, but i believe it.</lj:music>
  <lj:mood>excited</lj:mood>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://spindas.dreamwidth.org/1247.html</guid>
  <pubDate>Wed, 29 Apr 2015 03:57:27 GMT</pubDate>
  <title>Google Summer of Code 2015!</title>
  <link>https://spindas.dreamwidth.org/1247.html</link>
  <description>&lt;p&gt;My proposal for the Haskell&apos;s Google Summer of Code 2015 has been accepted!&amp;nbsp;I&apos;m super excited for this. There&apos;s a list of the other accepted proposals &lt;a href=&quot;https://www.reddit.com/r/haskell/comments/342rvp/google_summer_of_code_18_projects_accepted/cqqt8mw&quot;&gt;on reddit&lt;/a&gt;, and I&apos;ve posted my full proposal as a &lt;a href=&quot;https://gist.github.com/spinda/b261167303515cc8a1d9&quot;&gt;Gist&lt;/a&gt;. I&apos;ll be working on embedding &lt;a href=&quot;https://github.com/ucsd-progsys/liquidhaskell&quot;&gt;LiquidHaskell&lt;/a&gt; signatures in Haskell&apos;s native type system. Woo!&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=spindas&amp;ditemid=1247&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://spindas.dreamwidth.org/1247.html</comments>
  <category>gsoc</category>
  <category>haskell</category>
  <category>liquidhaskell</category>
  <lj:music>Two Cirrate Cubiforms - Darius + Rotteen</lj:music>
  <lj:mood>excited</lj:mood>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://spindas.dreamwidth.org/986.html</guid>
  <pubDate>Wed, 29 Apr 2015 01:02:02 GMT</pubDate>
  <title>More AUR Packages!</title>
  <link>https://spindas.dreamwidth.org/986.html</link>
  <description>&lt;strong&gt;New&amp;nbsp;Packages&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://aur.archlinux.org/packages/nemo-owncloud-git/&quot;&gt;nemo-owncloud-git&lt;/a&gt;, for my &lt;a href=&quot;https://github.com/spinda/nemo-owncloud&quot;&gt;port&lt;/a&gt; of the Nautilus ownCloud plugin to Nemo&lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;Adopted Packages&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://aur.archlinux.org/packages/gargoyle/&quot;&gt;gargoyle&lt;/a&gt;, an interactive fiction player&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://aur.archlinux.org/packages/nemo-dropbox-git/&quot;&gt;nemo-dropbox-git&lt;/a&gt;, Dropbox plugin for Nemo&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://aur.archlinux.org/packages/nemo-fileroller-git/&quot;&gt;nemo-fileroller-git&lt;/a&gt;, File Roller plugin for Nemo&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://aur.archlinux.org/packages/jips/&quot;&gt;jips&lt;/a&gt;, an IPS patcher&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=spindas&amp;ditemid=986&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://spindas.dreamwidth.org/986.html</comments>
  <category>arch</category>
  <category>aur</category>
  <category>nemo</category>
  <category>linux</category>
  <category>package</category>
  <lj:music>Sootopolis City (Re-Orchestrated), by GlitchxCity</lj:music>
  <lj:mood>accomplished</lj:mood>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://spindas.dreamwidth.org/717.html</guid>
  <pubDate>Sat, 01 Nov 2014 08:36:15 GMT</pubDate>
  <title>I submitted my first package to the AUR today.</title>
  <link>https://spindas.dreamwidth.org/717.html</link>
  <description>The existing package for the &lt;a href=&quot;https://satya164.deviantart.com/art/elementary-Dark-GTK3-Theme-244257862&quot;&gt;elementary Dark theme&lt;/a&gt;, aptly named &lt;a href=&quot;https://aur.archlinux.org/packages/elementary-dark-theme/&quot;&gt;elementary-dark-theme&lt;/a&gt;, is... really bad. It downloads the source archive over HTTP instead of HTTPS, doesn&apos;t use checksums to verify the download, gives the wrong source URL&amp;nbsp;and license... So I put up &lt;a href=&quot;https://aur.archlinux.org/packages/elementary-dark/&quot;&gt;elementary-dark&lt;/a&gt;, and filed a request to replace (&amp;quot;merge&amp;quot;) the old package with the new one. After doing a lot of work with Debian packaging in the past, I was pleasantly surprised by how easy the PKGBUILD format is to work with.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=spindas&amp;ditemid=717&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://spindas.dreamwidth.org/717.html</comments>
  <category>linux</category>
  <category>package</category>
  <category>theme</category>
  <category>arch</category>
  <category>aur</category>
  <lj:music>Soundscapes of Ur - Sketches</lj:music>
  <lj:mood>calm</lj:mood>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://spindas.dreamwidth.org/332.html</guid>
  <pubDate>Fri, 10 Oct 2014 04:17:54 GMT</pubDate>
  <title>OgreVR Milestone 1: Basic Head Tracking</title>
  <link>https://spindas.dreamwidth.org/332.html</link>
  <description>&lt;p&gt;I&apos;m working on integrating the Oculus Rift DK2 with the &lt;a href=&quot;http://ogre3d.org/&quot;&gt;Ogre3D engine&lt;/a&gt;. Last night I got basic head tracking working: moving the DK2 in real life translates into camera movement in-game. The goal is to build a toolkit that makes building something for the Rift in Ogre super duper easy.&lt;/p&gt;
&lt;iframe width=&quot;500&quot; height=&quot;281&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot; mozallowfullscreen=&quot;&quot; webkitallowfullscreen=&quot;&quot; src=&quot;//player.vimeo.com/video/103370362&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=spindas&amp;ditemid=332&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://spindas.dreamwidth.org/332.html</comments>
  <category>dk2</category>
  <category>oculus</category>
  <category>rift</category>
  <category>ogrevr</category>
  <category>ogre</category>
  <category>3d</category>
  <category>programming</category>
  <category>game</category>
  <lj:mood>busy</lj:mood>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
</channel>
</rss>
