<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: combocosmo</title><link>https://news.ycombinator.com/user?id=combocosmo</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sat, 09 May 2026 03:10:09 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=combocosmo" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by combocosmo in "Batteries Not Included, or Required, for These Smart Home Sensors"]]></title><description><![CDATA[
<p>It's a unique idea that I could see being useful in select situations. The reliance on wearable microphones sounds like a downside.<p>Also I guess this might be annoying for pets that can hear well beyond 20 kHz.</p>
]]></description><pubDate>Wed, 06 May 2026 09:12:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=48034046</link><dc:creator>combocosmo</dc:creator><comments>https://news.ycombinator.com/item?id=48034046</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48034046</guid></item><item><title><![CDATA[New comment by combocosmo in "Show HN: European alternatives to Google, Apple, Dropbox and 120 US apps"]]></title><description><![CDATA[
<p>Can you make some of my repeating settings savable? If I have to send invoices to 5 clients I'd prefer to not have to fill in the same stuff over and over again!</p>
]]></description><pubDate>Fri, 03 Apr 2026 11:46:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=47625583</link><dc:creator>combocosmo</dc:creator><comments>https://news.ycombinator.com/item?id=47625583</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47625583</guid></item><item><title><![CDATA[New comment by combocosmo in "Show HN: An iOS budget app I've been maintaining since 2011"]]></title><description><![CDATA[
<p>Nice project! I built a CLI budgeting project a long time ago, and what made me stop using my own project was the lack of automated integration with my bank accounts. At that point I had many credit cards, multiple bank accounts, in different currencies, and integrating all expenses was just too much manual work.<p>I wish financial institutions were better at automated exports of your financial data, given the right permissions of course.</p>
]]></description><pubDate>Tue, 13 Jan 2026 12:54:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=46600326</link><dc:creator>combocosmo</dc:creator><comments>https://news.ycombinator.com/item?id=46600326</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46600326</guid></item><item><title><![CDATA[New comment by combocosmo in "AI Code Is Going to Kill Your Startup (and You're Going to Let It)"]]></title><description><![CDATA[
<p>Of course a bit anecdotal, but not once has either Gemini or ChatGPT suggested me anything with eval or shell=True in it for Python. Admittedly I only ask it for specific problems, "this is your input, write code that outputs that" kind of stuff.<p>I find it hard to believe that nearly 50% of AI generated python code contains such obvious vulnerabilities. Also, the training data should be full of warnings against eval/shell=True... Author should have added more citations.</p>
]]></description><pubDate>Sat, 15 Nov 2025 20:16:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=45940272</link><dc:creator>combocosmo</dc:creator><comments>https://news.ycombinator.com/item?id=45940272</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45940272</guid></item><item><title><![CDATA[New comment by combocosmo in "Non-elementary group-by aggregations in Polars vs pandas"]]></title><description><![CDATA[
<p>I've always liked scatter solutions for these kind of problems:<p><pre><code>  import numpy as np
  
  def scatter_mean(index, value):
      sums = np.zeros(max(index)+1)
      counts = np.zeros(max(index)+1)
      for i in range(len(index)):
          j = index[i]
          sums[j] += value[i]
          counts[j] += 1
      return sums / counts
  
  def scatter_max(index, value):
      maxs = -np.inf * np.ones(max(index)+1)
      for i in range(len(index)):
          j = index[i]
          maxs[j] = max(maxs[j], value[i])
      return maxs
  
  def scatter_count(index):
      counts = np.zeros(max(index)+1, dtype=np.int32)
      for i in range(len(index)):
          counts[index[i]] += 1
      return counts
  
  id = np.array([1, 1, 1, 2, 2, 2]) - 1
  sales = np.array([4, 1, 2, 7, 6, 7])
  views = np.array([3, 1, 2, 8, 6, 7])
  means = scatter_mean(id, sales).repeat(scatter_count(id))
  print(views[sales > means].max())
</code></pre>
Obviously you'd need good implementations of the scatter operations, not these naive python for-loops. But once you have them the solution is a pretty readable two-liner.</p>
]]></description><pubDate>Sat, 16 Nov 2024 08:29:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=42155262</link><dc:creator>combocosmo</dc:creator><comments>https://news.ycombinator.com/item?id=42155262</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42155262</guid></item></channel></rss>