<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: andrewray</title><link>https://news.ycombinator.com/user?id=andrewray</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Mon, 14 Sep 2026 19:22:32 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=andrewray" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by andrewray in "Ask HN: What are you working on? (March 2025)"]]></title><description><![CDATA[
<p>Taking shader programs (they have a main() functions), hacking up their source code / AST to turn the into modularized code packages, and then enabling composition of shaders by injecting the output of one module into another (essentially calling the main function of one shader in another). This enables arbitrary shader composition. One application is Photoshop-style stacking of shaders as layers, like <a href="https://shaderfrog.com/2/editor/cm6y90vai002mpaxio3zjhfvq" rel="nofollow">https://shaderfrog.com/2/editor/cm6y90vai002mpaxio3zjhfvq</a><p>Or getting real freaky with it by composing many effects deep <a href="https://shaderfrog.com/2/editor/cm1s7w23w000apar738s9d1x0" rel="nofollow">https://shaderfrog.com/2/editor/cm1s7w23w000apar738s9d1x0</a></p>
]]></description><pubDate>Sun, 30 Mar 2025 21:00:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=43527587</link><dc:creator>andrewray</dc:creator><comments>https://news.ycombinator.com/item?id=43527587</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43527587</guid></item><item><title><![CDATA[Prisma now supports SQL joins]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.prisma.io/blog/prisma-orm-now-lets-you-choose-the-best-join-strategy-preview">https://www.prisma.io/blog/prisma-orm-now-lets-you-choose-the-best-join-strategy-preview</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=40176489">https://news.ycombinator.com/item?id=40176489</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Sat, 27 Apr 2024 02:08:59 +0000</pubDate><link>https://www.prisma.io/blog/prisma-orm-now-lets-you-choose-the-best-join-strategy-preview</link><dc:creator>andrewray</dc:creator><comments>https://news.ycombinator.com/item?id=40176489</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40176489</guid></item><item><title><![CDATA[New comment by andrewray in "Why I moved from Angular to React"]]></title><description><![CDATA[
<p>You're missing the point of JSX <a href="http://blog.andrewray.me/youre-missing-the-point-of-jsx/" rel="nofollow">http://blog.andrewray.me/youre-missing-the-point-of-jsx/</a></p>
]]></description><pubDate>Mon, 06 Feb 2017 22:59:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=13585140</link><dc:creator>andrewray</dc:creator><comments>https://news.ycombinator.com/item?id=13585140</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=13585140</guid></item><item><title><![CDATA[New comment by andrewray in "Git-blame-someone-else – Blame someone else for your bad code"]]></title><description><![CDATA[
<p>It's been my experience, especially in the startup scene where business requirements change often, that `git blame` rarely shows you what you want. Files get renamed, moved, re-indented, etc, frequently.<p>I wrote a tutorial on a more effective (at least for me) solution to find the true author of a change: <a href="http://blog.andrewray.me/a-better-git-blame/" rel="nofollow">http://blog.andrewray.me/a-better-git-blame/</a></p>
]]></description><pubDate>Sun, 07 Feb 2016 20:18:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=11054607</link><dc:creator>andrewray</dc:creator><comments>https://news.ycombinator.com/item?id=11054607</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=11054607</guid></item><item><title><![CDATA[New comment by andrewray in "Visual Studio Code is now open source"]]></title><description><![CDATA[
<p>Hi! I'm having trouble with both of these.<p><a href="https://github.com/Microsoft/vscode/issues/95" rel="nofollow">https://github.com/Microsoft/vscode/issues/95</a> <a href="https://github.com/Microsoft/vscode/issues/81" rel="nofollow">https://github.com/Microsoft/vscode/issues/81</a><p>Also can you comment on why a jsconfig.json file is needed, as opposed to some in-editor setting, or reading from the config files the user already has installed, like an .eslintrc?</p>
]]></description><pubDate>Thu, 19 Nov 2015 02:21:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=10592345</link><dc:creator>andrewray</dc:creator><comments>https://news.ycombinator.com/item?id=10592345</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=10592345</guid></item><item><title><![CDATA[New comment by andrewray in "Git freebase"]]></title><description><![CDATA[
<p>If your branch conflicts, rebase off master (the branch you're making a pull request to). Then it will merge cleanly. There's no practical downsides to having merge commits in master, but you should never (or rarely) see merge conflict resolution commits. You should be able to rebase to a mergeable state before merge.</p>
]]></description><pubDate>Sat, 31 Oct 2015 23:15:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=10484635</link><dc:creator>andrewray</dc:creator><comments>https://news.ycombinator.com/item?id=10484635</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=10484635</guid></item><item><title><![CDATA[New comment by andrewray in "Vue.js 1.0.0"]]></title><description><![CDATA[
<p>I've always heard good things about Vue from its users. I have to compare all Javascript frameworks to React, because to me React feels like the first framework that got it "right." The API of React is surprisingly thin. Looking at Vue templates, the syntax seems quite alien, halfway between Django and Angular:<p><pre><code>    <th v-for="key in columns" @click="sortBy(key)" :class="{active: sortKey == key}">
</code></pre>
And the API seems to needlessly separate HTML and Javascript, with some strange (to a newcomer) API calls:<p><pre><code>    Vue.component('demo-grid', {     // moving away from JS classes
        template: '#grid-template',  // Why separate view code from view code?
        replace: true,               // what is this?
</code></pre>
Has anyone heavily used React and Vue and have an argument for what this thicker API affords?</p>
]]></description><pubDate>Tue, 27 Oct 2015 05:09:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=10456407</link><dc:creator>andrewray</dc:creator><comments>https://news.ycombinator.com/item?id=10456407</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=10456407</guid></item><item><title><![CDATA[New comment by andrewray in "Gnuspeech"]]></title><description><![CDATA[
<p>If you're on a Mac, you can have some fun with voices (plenty designed for multiple languages):<p><pre><code>    say -v ?
</code></pre>
Or just run this script to pass hours of time in joy and terror: <a href="https://gist.github.com/DelvarWorld/3f700aac8d7972b053f0" rel="nofollow">https://gist.github.com/DelvarWorld/3f700aac8d7972b053f0</a></p>
]]></description><pubDate>Tue, 20 Oct 2015 23:30:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=10422586</link><dc:creator>andrewray</dc:creator><comments>https://news.ycombinator.com/item?id=10422586</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=10422586</guid></item><item><title><![CDATA[New comment by andrewray in "Should cars be fully driverless? No, says an MIT engineer and historian"]]></title><description><![CDATA[
<p>Cars seem fundamentally different than his other examples: Spacecraft, underwater vehicles, and airplanes. The importance difference is cars have a clear, visual grid of where they can travel and where they cannot travel. Painted lines on the road  and navigational signs provide a construct of the environment around them.<p>Maybe the closest comparison is subway / metro rails. There are already many fully automated subway systems: <a href="https://en.wikipedia.org/wiki/List_of_automated_urban_metro_subway_systems#Grade_of_Automation_4_Systems" rel="nofollow">https://en.wikipedia.org/wiki/List_of_automated_urban_metro_...</a></p>
]]></description><pubDate>Thu, 15 Oct 2015 03:55:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=10391247</link><dc:creator>andrewray</dc:creator><comments>https://news.ycombinator.com/item?id=10391247</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=10391247</guid></item><item><title><![CDATA[New comment by andrewray in "Show HN: Rune.js – Graphic design systems with SVG in the browser or Node.js"]]></title><description><![CDATA[
<p>This seems to take the declarative nature of SVG and make it more imperative, like HTML5 Canvas, even though it ironically uses a virtual DOM implementation under the hood. For my React projects I chose SVG over canvas because I could write my layout declaratively, and avoided imperative manipulation libraries. How do you modify existing SVG shapes with this library?</p>
]]></description><pubDate>Wed, 14 Oct 2015 06:27:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=10385280</link><dc:creator>andrewray</dc:creator><comments>https://news.ycombinator.com/item?id=10385280</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=10385280</guid></item><item><title><![CDATA[New comment by andrewray in "I Was a Cybercrook for the FBI (2007)"]]></title><description><![CDATA[
<p>Remove the ?currentPage=all from the URL to get the non-broken version of the link.</p>
]]></description><pubDate>Sun, 20 Sep 2015 21:40:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=10249260</link><dc:creator>andrewray</dc:creator><comments>https://news.ycombinator.com/item?id=10249260</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=10249260</guid></item><item><title><![CDATA[New comment by andrewray in "ShaderFrog – Create and compose shaders in your browser"]]></title><description><![CDATA[
<p>This may be a silly question, but could you elaborate on why you prefer the project to be open sourced? I'm keeping it closed source now for potential business and security reasons.</p>
]]></description><pubDate>Thu, 10 Sep 2015 01:02:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=10195617</link><dc:creator>andrewray</dc:creator><comments>https://news.ycombinator.com/item?id=10195617</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=10195617</guid></item><item><title><![CDATA[New comment by andrewray in "ShaderFrog – Create and compose shaders in your browser"]]></title><description><![CDATA[
<p>All shaders are beautiful :)<p>This is a problem with user content submitted sites. It's hard not to conflate the quality of the content (shaders) with the quality of the product (ShaderFrog). There are no default ShaderFrog shaders, they're all user created.<p>The more oddball shaders (my favorites) are the composed shaders, which are <i>not</i> eligible to be used as inputs to other composed shaders. Only the basic shaders, which are generally higher quality because they require more knowledge of how GLSL works, can be inputs to composed shaders.</p>
]]></description><pubDate>Wed, 09 Sep 2015 20:13:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=10194215</link><dc:creator>andrewray</dc:creator><comments>https://news.ycombinator.com/item?id=10194215</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=10194215</guid></item><item><title><![CDATA[New comment by andrewray in "ShaderFrog – Create and compose shaders in your browser"]]></title><description><![CDATA[
<p>Hey folks! All this traffic has got our server a little excited. We're working on restoring full service. Check @shaderfrog for updates  <a href="https://twitter.com/shaderfrog/status/641645102960500738" rel="nofollow">https://twitter.com/shaderfrog/status/641645102960500738</a></p>
]]></description><pubDate>Wed, 09 Sep 2015 16:30:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=10192377</link><dc:creator>andrewray</dc:creator><comments>https://news.ycombinator.com/item?id=10192377</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=10192377</guid></item><item><title><![CDATA[ShaderFrog: Create complex, beautiful shaders with no code]]></title><description><![CDATA[
<p>Article URL: <a href="http://shaderfrog.com/">http://shaderfrog.com/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=10186360">https://news.ycombinator.com/item?id=10186360</a></p>
<p>Points: 21</p>
<p># Comments: 2</p>
]]></description><pubDate>Tue, 08 Sep 2015 15:45:12 +0000</pubDate><link>http://shaderfrog.com/</link><dc:creator>andrewray</dc:creator><comments>https://news.ycombinator.com/item?id=10186360</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=10186360</guid></item><item><title><![CDATA[The ReactJS Controller View Pattern]]></title><description><![CDATA[
<p>Article URL: <a href="http://blog.andrewray.me/the-reactjs-controller-view-pattern/">http://blog.andrewray.me/the-reactjs-controller-view-pattern/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=9853436">https://news.ycombinator.com/item?id=9853436</a></p>
<p>Points: 12</p>
<p># Comments: 0</p>
]]></description><pubDate>Wed, 08 Jul 2015 17:52:22 +0000</pubDate><link>http://blog.andrewray.me/the-reactjs-controller-view-pattern/</link><dc:creator>andrewray</dc:creator><comments>https://news.ycombinator.com/item?id=9853436</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=9853436</guid></item></channel></rss>