<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: avaq</title><link>https://news.ycombinator.com/user?id=avaq</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sun, 21 Jun 2026 09:25:14 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=avaq" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by avaq in "Software is made between commits"]]></title><description><![CDATA[
<p>Imagine a feature in git, where when you merge, you get a single new commit on the main branch like you want, where the message could describe the changes in summary, like you want. But also: the commit contains a reference to the source branch so you can easily find it back, break it down, bisect into it, all without having to leave git or rely on data stored at 3d parties. That would be pretty neat! It's like, the best of both worlds, but all inside git!<p>Well. That's what a merge commit is.<p>Your approach is nearly identical to creating a merge commit, except the pointer to the second parent (the "original branch") is indirectly recorded via the PR link, instead of directly inside git.<p>If you create merge commits, then you have your "clean main branch" (via git log --first-parent), as well as the extended history with all the source commits (via git log). And as a bonus, merge commits are supported by every git host, and they work the same in all of them.<p>I think the whole "squash merge vs merge commit" discussions would be a lot less prevalent if --first-parent would be how git and git hosts displayed commit histories by default. :(</p>
]]></description><pubDate>Sat, 13 Jun 2026 18:12:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=48519894</link><dc:creator>avaq</dc:creator><comments>https://news.ycombinator.com/item?id=48519894</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48519894</guid></item><item><title><![CDATA[New comment by avaq in "Postmortem: TanStack NPM supply-chain compromise"]]></title><description><![CDATA[
<p>The point is to dissuade mass token revocations.<p>Let's say the attack becomes hugely succesful and the worm spreads to thousands of devices. GitHub/NPM could just revoke all compromised tokens (assuming they have a way to query) stopping the worm in its tracks. But because of the Dead Mans Switch, they'd know that in doing so, they'd be bricking thousands of their user's devices. So it effectively moves the responsibility to revoke compromised tokens from a central authority that could do it en-masse, to each individual who got compromised, greatly improving the worm's chances of survival.</p>
]]></description><pubDate>Tue, 12 May 2026 05:30:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=48104553</link><dc:creator>avaq</dc:creator><comments>https://news.ycombinator.com/item?id=48104553</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48104553</guid></item><item><title><![CDATA[New comment by avaq in "Answering questions about Android developer verification"]]></title><description><![CDATA[
<p>> I wouldn't even be against requiring a professional certification organization for developers before they're allowed to publish software to the masses<p>Is Google that organization? Because they themselves have decided that they are. I think what people are worried about is that Google is positioning itself to be the judge, jury, and executioner within such a licensing framework, not necessarily the licensing itself.<p>> This is just to address malicious code.<p>Yes, and if Google had shown that it's capable of identifying and rejecting malicious code distributed via its own app store, then maybe their proposed expansion of that security program to the entirety of the Android app ecosystem would carry some weight. But as it stands, their Play Store is full of user-hostile and often malicious apps[1].<p>> If you publish software for a private group of people, there should be no restrictions. If you're publishing it on a platform that would expose your software to billions of people, get a license after id verification<p>But that's exactly the opposite of what Google is doing, here, and why people are mad. Google isn't adding a new policy to their app distribution platform (the play store that grants exposure to billions of users), but rather they are forcing ID verification on any form of app distribution: If you want any regular user to be able to install your code, no matter how small the audience, you'll need to first give your identity to Google, and obtain a (paid[1]?) license. So the restrictions do apply to "a private group of people" too.<p>The crux, and what has people up in arms I think, is the overreach of Google's peoposed licensing policy to cover not only their own app distribution ecosystem, but all others targeting Android.<p>Many technical users of Android consider it to be a general purpose computing platform, and they want to retain the freedom to install and run whatever software they trust.<p>Google should focus their supposed concerns about regular user's safety on the user-hostile apps that they allow to exist in their own app store, rather than grasping for broader control that they'll "probably use at some point but only for good things like user security".<p>1: <a href="https://f-droid.org/en/2025/09/29/google-developer-registration-decree.html" rel="nofollow">https://f-droid.org/en/2025/09/29/google-developer-registrat...</a></p>
]]></description><pubDate>Sat, 04 Oct 2025 08:13:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=45471631</link><dc:creator>avaq</dc:creator><comments>https://news.ycombinator.com/item?id=45471631</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45471631</guid></item><item><title><![CDATA[New comment by avaq in "PHP 8.5 adds pipe operator"]]></title><description><![CDATA[
<p>Uhm, don't do it, then. That's like arguing that the addition of the ternary operator is a bad one because not all if/else blocks look better when translated into it.<p>The goal is to linearlize unary function application, not to make all code look better.</p>
]]></description><pubDate>Tue, 05 Aug 2025 11:25:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=44796748</link><dc:creator>avaq</dc:creator><comments>https://news.ycombinator.com/item?id=44796748</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44796748</guid></item><item><title><![CDATA[New comment by avaq in "PHP 8.5 adds pipe operator"]]></title><description><![CDATA[
<p>They can't implement function application without tanking performance? I find that hard to believe. Especially considering that function application is already a commonly used (and, dare I say: essential) feature in the language, eg: `Math.sqrt(2)`.<p>All we're asking for is the ability to rewrite that as `2 |> Math.sqrt`.<p>What they're afraid of, my understanding goes, is that people <i>hypothetically</i>, may start leaning more on closures, which themselves perform worse than classes.<p>However I'm of the opinion that the engine implementors shouldn't really concern themselves to that extent with how people write their code. People can always write slow code, and that's their own responsibility. So I don't know about "silly", but I don't agree with it.<p>Unless I misunderstood and somehow doing function application a little different is actually a really hard problem. Who knows.</p>
]]></description><pubDate>Tue, 05 Aug 2025 08:45:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=44795728</link><dc:creator>avaq</dc:creator><comments>https://news.ycombinator.com/item?id=44795728</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44795728</guid></item><item><title><![CDATA[New comment by avaq in "PHP 8.5 adds pipe operator"]]></title><description><![CDATA[
<p>Not only have we been waiting for 10 years, the most likely candidate to go forward is not at all what we wanted when the proposal was created:<p>We wanted a pipe operator that would pair well with unary functions (like those created by partial function application, which could get its own syntax), but that got rejected on the premise that it would lead to a programming style that utilizes too many closures[0], and which could divide the ecosystem[1].<p>Yet somehow PHP was not limited by these hypotheticals, and simply gave people the feature they wanted, in exactly the form it makes most sense in.<p>[0]: <a href="https://github.com/tc39/proposal-pipeline-operator/issues/221#issue-999806278" rel="nofollow">https://github.com/tc39/proposal-pipeline-operator/issues/22...</a>
[1]: <a href="https://github.com/tc39/proposal-pipeline-operator/issues/233#issuecomment-928217657" rel="nofollow">https://github.com/tc39/proposal-pipeline-operator/issues/23...</a></p>
]]></description><pubDate>Tue, 05 Aug 2025 07:48:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=44795371</link><dc:creator>avaq</dc:creator><comments>https://news.ycombinator.com/item?id=44795371</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44795371</guid></item><item><title><![CDATA[New comment by avaq in "Ask HN: Freelancer? Seeking freelancer? (January 2024)"]]></title><description><![CDATA[
<p>SEEKING WORK | Rotterdam, the Netherlands | Remote okay (prefer EU timezone)<p><pre><code>  Technologies: Functional Programming, React, Node.js, Linux, NixOS, JavaScript, TypeScript, Haskell, fp-ts, io-ts, effect-ts, rxjs, Deno, Docker, Git, CouchDB, MySQL, PostgreSQL, ElasticSearch, Fluture, Sanctuary, Ramda
  GitHub: https://github.com/Avaq/
  Résumé/CV: https://altshift.win/
  Email: aldwin/at/altshift.win
</code></pre>
Hi I'm Aldwin: A functional programming expert, full stack developer, and software architect. I have over 13 years of full-time professional (plus years of hobby and open source coding) experience. My website has all the details: <a href="https://altshift.win/" rel="nofollow">https://altshift.win/</a><p>I can design and/or build you a system, offer consultancy and code reviews, or coach your development team to improve development processes and code quality.</p>
]]></description><pubDate>Sun, 07 Jan 2024 19:56:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=38904580</link><dc:creator>avaq</dc:creator><comments>https://news.ycombinator.com/item?id=38904580</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38904580</guid></item><item><title><![CDATA[New comment by avaq in "Ask HN: Who wants to be hired? (January 2024)"]]></title><description><![CDATA[
<p><p><pre><code>  Location: Rotterdam, the Netherlands
  Remote: Yes
  Willing to relocate: Unlikely
  Technologies: Functional Programming, React, Node.js, Linux, NixOS, JavaScript, TypeScript, Haskell, fp-ts, io-ts, effect-ts, rxjs, Deno, Docker, Git, CouchDB, MySQL, PostgreSQL, ElasticSearch, Fluture, Sanctuary, Ramda
  GitHub: https://github.com/Avaq/
  Résumé/CV: https://altshift.win/
  Email: aldwin/at/altshift.win
</code></pre>
Functional programming expert looking for freelance opportunities. Over 13 years of full-time experience plus years of hobby and open source coding. My website has all the details.</p>
]]></description><pubDate>Thu, 04 Jan 2024 16:11:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=38868704</link><dc:creator>avaq</dc:creator><comments>https://news.ycombinator.com/item?id=38868704</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38868704</guid></item><item><title><![CDATA[New comment by avaq in "Ask HN: Who wants to be hired? (December 2023)"]]></title><description><![CDATA[
<p><p><pre><code>  Location: Rotterdam, the Netherlands
  Remote: Yes
  Willing to relocate: Unlikely
  Technologies: JavaScript, TypeScript, React, Linux, NixOS, Haskell, Node.js, fp-ts, Deno, Docker, Git, CouchDB, MySQL, PostgreSQL, ElasticSearch, PHP, Laravel, Fluture, Sanctuary, Ramda
  GitHub: https://github.com/Avaq/
  Résumé/CV: https://altshift.win/
  Email: aldwin/at/altshift.win

</code></pre>
My name is Aldwin. I'm a back-end-leaning full-stack (web-) developer with over 13 years of full time professional experience at various software development agencies. Besides that, I have years of hobby-programming and open-source experience, with Fluture[1] being my most well-received open source library.<p>I've been leading small teams for the last eight years, focusing on developer enabling work such as process management, devops, software architecture, and coaching.<p>I'm very passionate in particular about functional programming, and I'm hoping to coach teams when it comes to the cross-over between functional programming and software architecture - something a lot of developers who are new to FP struggle with.<p>Although I have been involved in a huge variety of software types, I'm particularly well-experienced when it comes to real-time, offline-first web-applications and real-time data processing.<p>I'm looking for (ideally) part-time (up to 28h) freelancing opportunities.<p>[1]: <a href="https://github.com/fluture-js/Fluture">https://github.com/fluture-js/Fluture</a></p>
]]></description><pubDate>Fri, 01 Dec 2023 20:10:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=38491623</link><dc:creator>avaq</dc:creator><comments>https://news.ycombinator.com/item?id=38491623</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38491623</guid></item><item><title><![CDATA[New comment by avaq in "Ask Wirecutter: Can you recommend a not-smart TV for me?"]]></title><description><![CDATA[
<p>Suggestion: NoTelly</p>
]]></description><pubDate>Sat, 08 Apr 2023 05:42:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=35490865</link><dc:creator>avaq</dc:creator><comments>https://news.ycombinator.com/item?id=35490865</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=35490865</guid></item><item><title><![CDATA[New comment by avaq in "Psychological and psychiatric terms to avoid"]]></title><description><![CDATA[
<p>> I envisioned a plot, with a steep curve: x is time, but what’s on y?<p>This question really got me thinking, because I've always envisioned a plot as well, but the phrase always made sense to me.<p>I realized that I think of x being "mastery" and y being "knowledge required". On such a plot, you'd see a steep curve if one needs a relatively large amount of knowledge to progress to the next level of mastery.<p>I've never thought of it differently, and so never realized that the phrase is ambiguous until reading the article. Upon reflection, it makes much more sense plotting time on x and mastery on y when talking about learning.</p>
]]></description><pubDate>Thu, 17 Nov 2022 04:38:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=33635036</link><dc:creator>avaq</dc:creator><comments>https://news.ycombinator.com/item?id=33635036</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33635036</guid></item><item><title><![CDATA[New comment by avaq in "GitHub Copilot is not infringing copyright"]]></title><description><![CDATA[
<p>Yeah, I've heard about some of those cases. It's surprising how far copyright can be stretched sometimes.<p>What's more surprising is to see copyleft advocates positioned so strongly in favour of giving copyright that kind of reach. I think that in a different context, some of the cases you refer to would be used by these same copyleft supporters as examples of why copyright needs to be more weakly enforced, not more strongly.</p>
]]></description><pubDate>Tue, 06 Jul 2021 12:39:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=27747666</link><dc:creator>avaq</dc:creator><comments>https://news.ycombinator.com/item?id=27747666</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=27747666</guid></item><item><title><![CDATA[New comment by avaq in "GitHub Copilot is not infringing copyright"]]></title><description><![CDATA[
<p>The way I see it, if you would use Copilot to completely (or largely) reproduce an existing work (software), then you would be infringing copyright. This is similar to using an AI to largely replicate a piece of music.<p>If you are using it to mix a snippet of code (from a sufficiently large code base) into a large code base of your own, then you are just remixing. That is not infringement. In music, there are entire genres based on remixing. You could even take it a step further and ask yourself: what is not a remix?</p>
]]></description><pubDate>Tue, 06 Jul 2021 06:26:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=27744840</link><dc:creator>avaq</dc:creator><comments>https://news.ycombinator.com/item?id=27744840</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=27744840</guid></item><item><title><![CDATA[New comment by avaq in "Promises are not neutral enough"]]></title><description><![CDATA[
<p>This article is a bit similar to one I wrote a while ago: <a href="https://medium.com/@avaq/broken-promises-2ae92780f33" rel="nofollow">https://medium.com/@avaq/broken-promises-2ae92780f33</a></p>
]]></description><pubDate>Fri, 16 Feb 2018 09:28:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=16391051</link><dc:creator>avaq</dc:creator><comments>https://news.ycombinator.com/item?id=16391051</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=16391051</guid></item><item><title><![CDATA[New comment by avaq in "Broken Promises: The Unspoken Flaws of JavaScript Promises"]]></title><description><![CDATA[
<p>Thank you!</p>
]]></description><pubDate>Mon, 28 Aug 2017 17:49:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=15118590</link><dc:creator>avaq</dc:creator><comments>https://news.ycombinator.com/item?id=15118590</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=15118590</guid></item><item><title><![CDATA[Broken Promises: The Unspoken Flaws of JavaScript Promises]]></title><description><![CDATA[
<p>Article URL: <a href="https://medium.com/@avaq/broken-promises-2ae92780f33">https://medium.com/@avaq/broken-promises-2ae92780f33</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=15116722">https://news.ycombinator.com/item?id=15116722</a></p>
<p>Points: 9</p>
<p># Comments: 2</p>
]]></description><pubDate>Mon, 28 Aug 2017 14:27:38 +0000</pubDate><link>https://medium.com/@avaq/broken-promises-2ae92780f33</link><dc:creator>avaq</dc:creator><comments>https://news.ycombinator.com/item?id=15116722</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=15116722</guid></item></channel></rss>