<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: molsson</title><link>https://news.ycombinator.com/user?id=molsson</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Fri, 07 Aug 2026 00:39:58 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=molsson" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by molsson in "GitHub Actions and Pages are experiencing degraded availability"]]></title><description><![CDATA[
<p>5 hours going now and the entire thing is still completely down. This level of incompetence and their total disrespect for their customers is unbelievable.</p>
]]></description><pubDate>Thu, 06 Aug 2026 20:31:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=49202093</link><dc:creator>molsson</dc:creator><comments>https://news.ycombinator.com/item?id=49202093</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49202093</guid></item><item><title><![CDATA[New comment by molsson in "NPM debug and chalk packages compromised"]]></title><description><![CDATA[
<p>I maintain a package on npm with >1M weekly downloads. I also got the same phishing e-mail, although I didn't click it.. here are the e-mail headers in the phishing e-mail I got:<p>Return-Path: <ndr-6be2b1e0-8c4b-11f0-0040-f184d6629049@mt86.npmjs.help>
X-Original-To: martin@minimum.se
Delivered-To: martin@minimum.se
Received: from mail-storage-03.fbg1.glesys.net (unknown [10.1.8.3])
 by mail-storage-04.fbg1.glesys.net (Postfix) with ESMTPS id 596B855C0082
 for <martin@minimum.se>; Mon,  8 Sep 2025 06:47:25 +0200 (CEST)
Received: from mail-halon-02.fbg1.glesys.net (37-152-59-100.static.glesys.net [37.152.59.100])
 by mail-storage-03.fbg1.glesys.net (Postfix) with ESMTPS id 493F2209A568
 for <martin@minimum.se>; Mon,  8 Sep 2025 06:47:25 +0200 (CEST)
X-SA-Rules: DATE_IN_PAST_03_06,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FROM_FMBLA_NEWDOM,HTML_FONT_LOW_CONTRAST,HTML_MESSAGE,MIME_HTML_ONLY,SPF_HELO_NONE,SPF_PASS
X-RPD-Score: 0
X-SA-Score: 1.1
X-Halon-ID: e9093e1f-8c6e-11f0-b535-1932b48ae8a8
Received: from smtp-83-4.mailtrap.live (smtp-83-4.mailtrap.live [45.158.83.4])
 by mail-halon-02.fbg1.glesys.net (Halon) with ESMTPS
 id e9093e1f-8c6e-11f0-b535-1932b48ae8a8;
 Mon, 08 Sep 2025 06:47:23 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; x=1757637200;
 d=smtp.mailtrap.live; s=rwmt1;
 h=content-transfer-encoding:content-type:from:to:subject:date:mime-version:
  message-id:feedback-id:cfbl-address:from;
 bh=46LbKElKI+JjrZc6EccpLxY7G+BazRijag+UbPv0J3Y=;
 b=Dc1BbAc9maHeyNKed/X7iAPabcuvlgAUP6xm5te6kkvGIJlame8Ti+ErH8yhFuRy/xhvQTSj8ETtV
  f3AElmzHDWcU3HoD/oiagTH9JbacmElSvwtCylHLriVeYbgwhZVzTm4rY7hw/TVqNE5xIZqWWCMrVG
  wi+k9uY+FUIQAh7Ta2WiPk/A4TPh04h3PzA50zathvYcIsPC0iSf7BBE+IIjdLXzDzNZwRmjgv2ZHW
  GAx/FRCPFgg0PbVvhJw98vSHnKmjPO/mmcotKFG+MUWkCtTu28Mm46t7MI7z5PrdCXZDA7L1nVnIwE
  ffIf0zED32Z6tFSJFNmYgFZlD6g+DnQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; x=1757637200;
 d=npmjs.help; s=rwmt1;
 h=content-transfer-encoding:content-type:from:to:subject:date:mime-version:
  message-id:feedback-id:cfbl-address:from;
 bh=46LbKElKI+JjrZc6EccpLxY7G+BazRijag+UbPv0J3Y=;
 b=DyWvxSOjMf7WfCVtmch+zw63kZ/OOBjcWnh1kIYs/hozgemb9mBIQCMqAdb4vSZChoW5uReVH5+k5
  Jaz7UodbPJksVkYWqJOVg6nyx5EaYMYdgcw1+BCct/Sf2ceFwWurhupa6y3FBTFWBYLhcsAXERlx2l
  IuxWlpZoMDEBqDxjs8yvx/rkBrcd/2SNTcI+ooKJkrBIGBKuELOd3A5C6jlup6JNA4bE7vzP3FUfKw
  y0357UMnn45zWHm9HvudO4269FRlNjpiJaW7XF1/ANVrnDlNWfUGNQ5yxLZqmQDTtxFI7HcOrF3bTQ
  O/nrmVOvN9ywMvk/cJU4qGHqD9lT32A==
CFBL-Address: fbl@smtp.mailtrap.live; report=arf
X-Report-Abuse-To: abuse@mailtrap.io
Received: from npmjs.help by smtp.mailtrap.live with ESMTPSA
 6aee9fff-8c4b-11f0-87bb-0e939677d2a1; Mon, Sep 08 2025 00:33:20 GMT
Feedback-ID: ss:770486:transactional:mailtrap.io
Message-ID: <6be2b1e0-8c4b-11f0-0040-f184d6629049@npmjs.help>
X-Mt-Data: bAX0GlwcNW6Dl_Qnkf3OnU.GLCSjw_4H01v67cuDIh2Jkf52mzsVFT_ZEVEe0W6Lf3qzW2LP_TCy93I46MCsoT0pB9HozQkvCw22ORSCt3JBma1G3v9aDEypT1DLmyqlb6hYLF3H7tJCgcxTU5pbijyNaOFtoUMdiTA6jxaONeZbBj.SKUa5CLT5TMpeNHG6oGIiY_jqlU.nQkxGPY3v9E34.Nz4ga8p9Pd_BplftaE~--2CLrluJMY65S5xFl--IISg0olYJu6DVyVDEcJ.AQ~~
MIME-Version: 1.0
Date: Mon, 08 Sep 2025 00:33:20 +0000
Subject: Two-Factor Authentication Update Required
To: "molsson" <martin@minimum.se>
From: "npm" <support@npmjs.help>
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable</p>
]]></description><pubDate>Mon, 08 Sep 2025 19:23:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=45172708</link><dc:creator>molsson</dc:creator><comments>https://news.ycombinator.com/item?id=45172708</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45172708</guid></item><item><title><![CDATA[New comment by molsson in "Show HN: Sharpe Ratio Calculation Tool"]]></title><description><![CDATA[
<p>I guess this is the 1yr sharpe plotted over time, ie the sharpe at date X considers the stddev within the previous 365 days etc?<p>Many brokers only show 1yr sharpe or perhaps 3yr sharpe (for example swedish nordnet has 1/3/5 year sharpe: <a href="https://www.nordnet.se/fonder/lista/jupiter-gold-silver-usd-b0ea606b?details" rel="nofollow">https://www.nordnet.se/fonder/lista/jupiter-gold-silver-usd-...</a> )... but very often stocks/funds go steadily upwards for several years in "good times" and then we have major drawdowns during turmoil like 2008 or 2020 etc. In these cases, a 1yr or 3yr sharpe can be very misleading.<p>Have you considered also plotting 3yr sharpe and 5yr sharpe over time? Perhaps the length of the sharpe ratio would be configurable in the calculator?</p>
]]></description><pubDate>Sun, 29 Jun 2025 20:30:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=44416175</link><dc:creator>molsson</dc:creator><comments>https://news.ycombinator.com/item?id=44416175</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44416175</guid></item><item><title><![CDATA[New comment by molsson in "Node.js, Pipes, and Disappearing Bytes"]]></title><description><![CDATA[
<p>process.stdout._handle.setBlocking(true)<p>...is a bit brutal but works. Draining the stream before exiting also kind of works but there are cases where drain will just permanently block.<p>async function drain(stream) {
  return new Promise((resolve) => stream.on('drain', resolve))
}</p>
]]></description><pubDate>Sun, 13 Oct 2024 20:12:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=41831158</link><dc:creator>molsson</dc:creator><comments>https://news.ycombinator.com/item?id=41831158</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41831158</guid></item><item><title><![CDATA[New comment by molsson in "Modern CSV Version 2 Beta is now available"]]></title><description><![CDATA[
<p>Hmm, why did you build it as a desktop app in 2022? Seems like a no brainer to have this in the cloud so that you can seamlessly process huge files and integrate with various third-party APIs. I've used <a href="https://www.gigasheet.com/" rel="nofollow">https://www.gigasheet.com/</a> for this before (which is cloud-based). And there is also the open source visidata project.</p>
]]></description><pubDate>Wed, 01 Jun 2022 06:19:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=31578763</link><dc:creator>molsson</dc:creator><comments>https://news.ycombinator.com/item?id=31578763</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=31578763</guid></item><item><title><![CDATA[New comment by molsson in "India’s second wave"]]></title><description><![CDATA[
<p>It would be nice if the web somehow filtered out links that one had decided to not pay for.</p>
]]></description><pubDate>Wed, 21 Apr 2021 08:51:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=26886941</link><dc:creator>molsson</dc:creator><comments>https://news.ycombinator.com/item?id=26886941</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=26886941</guid></item><item><title><![CDATA[New comment by molsson in "Shitlist Driven Development (2016)"]]></title><description><![CDATA[
<p>We used a similar approach when we pushed to get -Werror enabled in a large C++ code base I worked on years ago.</p>
]]></description><pubDate>Tue, 15 Dec 2020 13:24:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=25430048</link><dc:creator>molsson</dc:creator><comments>https://news.ycombinator.com/item?id=25430048</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=25430048</guid></item><item><title><![CDATA[New comment by molsson in "I built a lay-down desk"]]></title><description><![CDATA[
<p>It's a beauty. Why buy a finished product when you can quickly put something like this together ?</p>
]]></description><pubDate>Mon, 05 Oct 2020 14:23:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=24688009</link><dc:creator>molsson</dc:creator><comments>https://news.ycombinator.com/item?id=24688009</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=24688009</guid></item><item><title><![CDATA[New comment by molsson in "Birds 'falling out of the sky' in mass die-off in south-western US"]]></title><description><![CDATA[
<p>Dead birds? Clearly, the Earth's magnetic field must be reversing!!11<p><a href="https://www.imdb.com/title/tt0298814/" rel="nofollow">https://www.imdb.com/title/tt0298814/</a></p>
]]></description><pubDate>Wed, 16 Sep 2020 16:12:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=24494049</link><dc:creator>molsson</dc:creator><comments>https://news.ycombinator.com/item?id=24494049</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=24494049</guid></item><item><title><![CDATA[New comment by molsson in "Dark patterns in GDPR consent boxes"]]></title><description><![CDATA[
<p>I hate when you browse through 10-15 websites and for all of them you quickly click the "Accept" button in the bottom banner to get rid of the irritating cookie banners.<p>And then suddenly, on the 16th website they put a fucking "Buy our thing" button in a bottom bar that you quickly click on without even thinking twice.</p>
]]></description><pubDate>Tue, 07 Jul 2020 11:11:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=23757940</link><dc:creator>molsson</dc:creator><comments>https://news.ycombinator.com/item?id=23757940</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=23757940</guid></item><item><title><![CDATA[New comment by molsson in "Wren is a small, fast, class-based concurrent scripting language"]]></title><description><![CDATA[
<p>The name wren is already used by:
<a href="https://projectwren.com/" rel="nofollow">https://projectwren.com/</a></p>
]]></description><pubDate>Sun, 28 Jun 2020 07:53:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=23667347</link><dc:creator>molsson</dc:creator><comments>https://news.ycombinator.com/item?id=23667347</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=23667347</guid></item><item><title><![CDATA[New comment by molsson in "Anyone made the jump from MySQL to PostreSQL? It is worth it?"]]></title><description><![CDATA[
<p>I recently migrated a small side project from MySQL to PostgreSQL. I wrote a short blog post about how I did the migration, issues I ran into etc:
<a href="http://blog.minimum.se/2019/07/09/upgrading-node-mysql-to-postgres-sql-syntax.html" rel="nofollow">http://blog.minimum.se/2019/07/09/upgrading-node-mysql-to-po...</a><p>I'm overall very happy with the migration and PostgreSQL also ended up taking less memory (RSS) in prod, which was a nice bonus (this is useful for me because I'm running this on a low-end Digital Ocean droplet).</p>
]]></description><pubDate>Tue, 16 Jul 2019 15:12:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=20450807</link><dc:creator>molsson</dc:creator><comments>https://news.ycombinator.com/item?id=20450807</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=20450807</guid></item><item><title><![CDATA[New comment by molsson in "QuickJS JavaScript Engine"]]></title><description><![CDATA[
<p>Very impressive!</p>
]]></description><pubDate>Thu, 11 Jul 2019 16:18:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=20412792</link><dc:creator>molsson</dc:creator><comments>https://news.ycombinator.com/item?id=20412792</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=20412792</guid></item><item><title><![CDATA[New comment by molsson in "Stripe's API was down"]]></title><description><![CDATA[
<p>Wow, Stripe is having a really shitty day.</p>
]]></description><pubDate>Wed, 10 Jul 2019 21:31:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=20406786</link><dc:creator>molsson</dc:creator><comments>https://news.ycombinator.com/item?id=20406786</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=20406786</guid></item><item><title><![CDATA[New comment by molsson in "Mastery with SQL: Learn Modern SQL with Postgres"]]></title><description><![CDATA[
<p>I agree. Some more info here for those interested:
<a href="https://wiki.postgresql.org/wiki/A_Guide_to_CVE-2018-1058:_Protect_Your_Search_Path" rel="nofollow">https://wiki.postgresql.org/wiki/A_Guide_to_CVE-2018-1058:_P...</a></p>
]]></description><pubDate>Sat, 29 Jun 2019 19:21:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=20314257</link><dc:creator>molsson</dc:creator><comments>https://news.ycombinator.com/item?id=20314257</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=20314257</guid></item><item><title><![CDATA[New comment by molsson in "Mastery with SQL: Learn Modern SQL with Postgres"]]></title><description><![CDATA[
<p>I agree, especially some info on production installation on Linux would be really nice. For example, is it better to install the "postgres" ubuntu distro package, or is it better to install the Ubuntu package provided by postgres themselves at <a href="https://www.postgresql.org/download/linux/ubuntu/" rel="nofollow">https://www.postgresql.org/download/linux/ubuntu/</a>? Which one of these offer the best security / stability?</p>
]]></description><pubDate>Mon, 24 Jun 2019 20:59:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=20268401</link><dc:creator>molsson</dc:creator><comments>https://news.ycombinator.com/item?id=20268401</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=20268401</guid></item><item><title><![CDATA[New comment by molsson in "Mastery with SQL: Learn Modern SQL with Postgres"]]></title><description><![CDATA[
<p>The OWASP Postgres hardening page recommends that one removes the default "public" schema in postgres:
<a href="https://www.owasp.org/index.php/OWASP_Backend_Security_Project_PostgreSQL_Hardening#Removing_the_default_.22public.22_schema" rel="nofollow">https://www.owasp.org/index.php/OWASP_Backend_Security_Proje...</a><p>...whereas this course seems to use the public schema and just query for "SELECT * IN public.foobar" etc.<p>I remember being a bit confused about "schemas" when I switched from mysql to postgres. I think it would be good to have a special section that explains what schemas are typically used for, and in particular when/how to use the public schema correctly.</p>
]]></description><pubDate>Mon, 24 Jun 2019 20:20:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=20268009</link><dc:creator>molsson</dc:creator><comments>https://news.ycombinator.com/item?id=20268009</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=20268009</guid></item><item><title><![CDATA[New comment by molsson in "Mastery with SQL: Learn Modern SQL with Postgres"]]></title><description><![CDATA[
<p>The free "teaser video" starts off showing "actor_id serial NOT NULL" but in postgres 10 and above identity columns can/should be used instead?<p><a href="https://wiki.postgresql.org/wiki/Don't_Do_This#Don.27t_use_serial" rel="nofollow">https://wiki.postgresql.org/wiki/Don't_Do_This#Don.27t_use_s...</a></p>
]]></description><pubDate>Mon, 24 Jun 2019 20:15:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=20267959</link><dc:creator>molsson</dc:creator><comments>https://news.ycombinator.com/item?id=20267959</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=20267959</guid></item><item><title><![CDATA[New comment by molsson in "Mastery with SQL: Learn Modern SQL with Postgres"]]></title><description><![CDATA[
<p>The content overview doesn't include anything about escaping data to prevent SQL injection (escaping of literals vs escaping of table/field names etc). This is important to get right and postgres has a slightly different approach compared to mysql and others.<p>For example, you can and should use parametric queries like:<p>client.query('INSERT INTO mytable(a) VALUES ($1)', ['hello'])<p>...but that doesn't work for all types of queries, for example you get an error for:<p>client.query('SET LOCAL SEED = $1', [someVal])<p>Another example, you might need to build a dynamic where-clause based on data from an "advanced search" UI query builder, and then you need to make a list of all the "foo = $N" parts (and increment $N as you go), plus another list of the actual variables. Maybe there are some nice tricks / techniques to simplify that?</p>
]]></description><pubDate>Mon, 24 Jun 2019 20:13:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=20267937</link><dc:creator>molsson</dc:creator><comments>https://news.ycombinator.com/item?id=20267937</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=20267937</guid></item><item><title><![CDATA[New comment by molsson in "Mastery with SQL: Learn Modern SQL with Postgres"]]></title><description><![CDATA[
<p>It should be really nice to have variable playback speed for the videos.</p>
]]></description><pubDate>Mon, 24 Jun 2019 19:59:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=20267803</link><dc:creator>molsson</dc:creator><comments>https://news.ycombinator.com/item?id=20267803</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=20267803</guid></item></channel></rss>