<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: cvanelteren</title><link>https://news.ycombinator.com/user?id=cvanelteren</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Mon, 27 Apr 2026 16:22:16 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=cvanelteren" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by cvanelteren in "AI should elevate your thinking, not replace it"]]></title><description><![CDATA[
<p>Wrote a similar take on it here:<a href="https://thefriendlyghost.nl/chinese-room-ai/" rel="nofollow">https://thefriendlyghost.nl/chinese-room-ai/</a></p>
]]></description><pubDate>Sun, 26 Apr 2026 23:15:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=47915845</link><dc:creator>cvanelteren</dc:creator><comments>https://news.ycombinator.com/item?id=47915845</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47915845</guid></item><item><title><![CDATA[Are We in the Chinese Room?]]></title><description><![CDATA[
<p>Article URL: <a href="https://thefriendlyghost.nl/chinese-room-ai/">https://thefriendlyghost.nl/chinese-room-ai/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47697535">https://news.ycombinator.com/item?id=47697535</a></p>
<p>Points: 1</p>
<p># Comments: 1</p>
]]></description><pubDate>Wed, 08 Apr 2026 23:32:11 +0000</pubDate><link>https://thefriendlyghost.nl/chinese-room-ai/</link><dc:creator>cvanelteren</dc:creator><comments>https://news.ycombinator.com/item?id=47697535</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47697535</guid></item><item><title><![CDATA[Show HN: UltraPlot 2.0 – semantic legends, better layouts, faster imports]]></title><description><![CDATA[
<p>UltraPlot v2.0.1 is out!<p>UltraPlot is a Matplotlib wrapper aimed at keeping Matplotlib’s flexibility while making common plotting workflows faster and more consistent.<p>v2.x focuses on semantic legends (categorical/numeric/size/geo), more reliable layout + axis-sharing in complex grids, guide architecture cleanup, CI hardening, and much faster import times via lazy loading.<p>We also launched a new docs site with a gallery: <a href="https://ultraplot.readthedocs.io/" rel="nofollow">https://ultraplot.readthedocs.io/</a><p>Code: <a href="https://github.com/Ultraplot/UltraPlot" rel="nofollow">https://github.com/Ultraplot/UltraPlot</a><p>Feedback is very welcome, especially on legend API ergonomics and layout behavior in real figures.</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47066090">https://news.ycombinator.com/item?id=47066090</a></p>
<p>Points: 3</p>
<p># Comments: 0</p>
]]></description><pubDate>Wed, 18 Feb 2026 20:41:01 +0000</pubDate><link>https://github.com/Ultraplot/UltraPlot/releases</link><dc:creator>cvanelteren</dc:creator><comments>https://news.ycombinator.com/item?id=47066090</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47066090</guid></item><item><title><![CDATA[New comment by cvanelteren in "Dithering – Part 1"]]></title><description><![CDATA[
<p>Amazing animations!</p>
]]></description><pubDate>Thu, 30 Oct 2025 12:03:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=45759100</link><dc:creator>cvanelteren</dc:creator><comments>https://news.ycombinator.com/item?id=45759100</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45759100</guid></item><item><title><![CDATA[New comment by cvanelteren in "Rocks, minds, and Turing machines – what does it mean to compute?"]]></title><description><![CDATA[
<p>I wrote an essay exploring where the notion of computation breaks down, and how representation, not rules, might be the true boundary.</p>
]]></description><pubDate>Sat, 18 Oct 2025 07:58:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=45625701</link><dc:creator>cvanelteren</dc:creator><comments>https://news.ycombinator.com/item?id=45625701</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45625701</guid></item><item><title><![CDATA[Rocks, minds, and Turing machines – what does it mean to compute?]]></title><description><![CDATA[
<p>Article URL: <a href="https://thefriendlyghost.nl/computation/">https://thefriendlyghost.nl/computation/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=45625700">https://news.ycombinator.com/item?id=45625700</a></p>
<p>Points: 2</p>
<p># Comments: 1</p>
]]></description><pubDate>Sat, 18 Oct 2025 07:58:09 +0000</pubDate><link>https://thefriendlyghost.nl/computation/</link><dc:creator>cvanelteren</dc:creator><comments>https://news.ycombinator.com/item?id=45625700</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45625700</guid></item><item><title><![CDATA[New comment by cvanelteren in "Show HN: Ultraplot – A succint wrapper for matplotlib"]]></title><description><![CDATA[
<p>Thanks for your questions.<p><pre><code>  - ProPlot appears to be unmaintained - I initially tried to push changes to make it compatible with matplotlib 3.9+ around mid-2024, but after repeatedly trying to contact the original owner through official and unofficial channels with no response, we decided to fork by the end of 2024. I had grown really fond of ProPlot and wanted to keep it alive.

  - This is currently a friendly fork, not a reimplementation. We're carrying on the torch that ProPlot set out with, adding features along the way and refactoring when necessary.

  - We implement a custom GeoAxes that allows for basemap and/or Cartopy as a backend. The GeoAxes object behaves similar to a normal axis, allowing direct plotting and manipulation without the user having to worry about projections.</code></pre></p>
]]></description><pubDate>Mon, 15 Sep 2025 06:35:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=45246757</link><dc:creator>cvanelteren</dc:creator><comments>https://news.ycombinator.com/item?id=45246757</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45246757</guid></item><item><title><![CDATA[New comment by cvanelteren in "Show HN: Ultraplot – A succint wrapper for matplotlib"]]></title><description><![CDATA[
<p>Fair points. Behind the scenes there are changes from matplotlib. For example our `GridSpec` assumes a flat layout and does not allow for nesting. This simplifies the alignment when using (nested) panels, colorbars (which are aligned by default) and legends. Additionally it dispatches the plotting over multiple plots by default. We also attempt to make the plotting process a bit more pydanctic by moving `colorbars` to the axis or figure objects and allowing direct plotting for geo plots.<p>You can consider as a bunch of tools that ease the publication making process but is by no means a panacea, but offers a different flavor to the scientific plotting stack.<p>Check out our docs or more visual examples.</p>
]]></description><pubDate>Sun, 14 Sep 2025 15:14:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=45240402</link><dc:creator>cvanelteren</dc:creator><comments>https://news.ycombinator.com/item?id=45240402</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45240402</guid></item><item><title><![CDATA[New comment by cvanelteren in "Show HN: Ultraplot – A succint wrapper for matplotlib"]]></title><description><![CDATA[
<p>We do provide some type hinting but it is more a recent development as we are building on the legacy code from proplot which did not provide any. I am in favor of using typing more.</p>
]]></description><pubDate>Sun, 14 Sep 2025 15:04:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=45240290</link><dc:creator>cvanelteren</dc:creator><comments>https://news.ycombinator.com/item?id=45240290</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45240290</guid></item><item><title><![CDATA[New comment by cvanelteren in "Show HN: Ultraplot – A succint wrapper for matplotlib"]]></title><description><![CDATA[
<p>You are right. I was doubting whether to make a more complicated example -- but formatting is poor in text boxes. Let me give you a more complex one.<p>Let's say we want a 3-column plot: colormesh, polar, and geo plot.<p>UltraPlot:<p><pre><code>  import ultraplot as uplt, numpy as np
  fig, ax = uplt.subplots(
      ncols=3, share=0, proj="cart polar merc".split(), journal="nat2"
  )
  ax[0].pcolormesh(
      np.random.rand(10, 10), cmap="viko", colorbar="r",
      colorbar_kw=dict(title="some interesting colors")
  )
  angles, radii = np.random.rand(100) * 360, np.random.rand(100)
  ax[1].scatter(angles, radii, c=radii, cmap="spectral_r")
  x, y = np.meshgrid(np.linspace(-30, 30, 100), np.linspace(-60, 60, 100))
  z = np.exp(-(x*2 + y*2) / 100)
  ax[2].pcolormesh(x, y, z, cmap="Fire")
  ax[2].format(landcolor="green", land=True, grid=True, lonlabels=True, latlabels=True)
  ax.format(abc="[A]")
  fig.show()
</code></pre>
Matplotlib equivalent:<p><pre><code>  import matplotlib.pyplot as plt, numpy as np, cartopy.crs as ccrs
  fig = plt.figure(figsize=(15, 5))
  ax0 = fig.add_subplot(1, 3, 1)
  pcm = ax0.pcolormesh(np.random.rand(10, 10), cmap="viridis")
  cbar = plt.colorbar(pcm, ax=ax0)
  cbar.set_label("some interesting colors")
  cbar.ax.yaxis.label.set_color("r")
  
  ax1 = fig.add_subplot(1, 3, 2, projection="polar")
  angles = np.random.rand(100) * 2 * np.pi
  radii = np.random.rand(100)
  sc = ax1.scatter(angles, radii, c=radii, cmap="Spectral_r")
  
  ax2 = fig.add_subplot(1, 3, 3, projection=ccrs.Mercator())
  x, y = np.meshgrid(np.linspace(-30, 30, 100), np.linspace(-60, 60, 100))
  z = np.exp(-(x*2 + y*2) / 100)
  pcm2 = ax2.pcolormesh(x, y, z, cmap="magma", transform=ccrs.PlateCarree())
  ax2.coastlines()
  ax2.gridlines(draw_labels=True)
  ax2.set_extent([-30, 30, -60, 60], crs=ccrs.PlateCarree())
  import cartopy.feature as cfeature
  ax2.add_feature(cfeature.LAND, facecolor="green")
  for i, ax in enumerate([ax0, ax1, ax2]):
      ax.set_title(f"[{chr(65+i)}]")
  plt.tight_layout()
  plt.show()
</code></pre>
The aim isn't to replace matplotlib but make publication-ready plots with fewer keystrokes and better defaults. We also bundle plot types not available in matplotlib like graph plotting, lollipop charts, heatmaps etc.</p>
]]></description><pubDate>Sun, 14 Sep 2025 13:00:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=45239488</link><dc:creator>cvanelteren</dc:creator><comments>https://news.ycombinator.com/item?id=45239488</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45239488</guid></item><item><title><![CDATA[New comment by cvanelteren in "Show HN: Ultraplot – A succint wrapper for matplotlib"]]></title><description><![CDATA[
<p>For those unfamiliar, ProPlot was widely loved for enabling publication-quality graphics with minimal effort. UltraPlot continues that mission with active development, updated compatibility, and a focus on simplicity.<p>Why UltraPlot?<p>Key improvements over vanilla matplotlib:<p><pre><code>  - Effortless subplot management: build complex multi-panel layouts in one line

  - GeoAxes support included out of the box

  - Smarter aesthetics: beautiful colormaps, fonts, and styles without extra code

  - Intuitive syntax: less boilerplate, more plotting

  - Seamless compatibility: everything you know from matplotlib still applies
</code></pre>
Instead of wrestling with subplot positioning and styling, you can write:<p>```
import ultraplot as uplt<p>layout = [[0, 1, 2], [3, 3, 4]]<p>fig, axs = uplt.subplots(layout)<p>axs[0].plot(x, y1, label="Data 1")<p>axs[1].plot(x, y2, label="Data 2")<p>axs.format(xlabel="Hello", 
           ylabel="Hacker news", 
           abc="[A]")  # format applies to all axes
fig.legend()<p>```<p>...and get a clean, professional-looking plot in seconds.<p>Get Started:<p>- GitHub: <a href="https://github.com/Ultraplot/ultraplot" rel="nofollow">https://github.com/Ultraplot/ultraplot</a><p>- Docs: <a href="https://ultraplot.readthedocs.io/en/latest/" rel="nofollow">https://ultraplot.readthedocs.io/en/latest/</a><p>Try it out and let us know what you think — contributions and feedback are very welcome!</p>
]]></description><pubDate>Wed, 10 Sep 2025 19:14:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=45202316</link><dc:creator>cvanelteren</dc:creator><comments>https://news.ycombinator.com/item?id=45202316</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45202316</guid></item><item><title><![CDATA[Show HN: Ultraplot – A succint wrapper for matplotlib]]></title><description><![CDATA[
<p>Article URL: <a href="https://github.com/Ultraplot/UltraPlot">https://github.com/Ultraplot/UltraPlot</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=45202315">https://news.ycombinator.com/item?id=45202315</a></p>
<p>Points: 34</p>
<p># Comments: 13</p>
]]></description><pubDate>Wed, 10 Sep 2025 19:14:14 +0000</pubDate><link>https://github.com/Ultraplot/UltraPlot</link><dc:creator>cvanelteren</dc:creator><comments>https://news.ycombinator.com/item?id=45202315</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45202315</guid></item></channel></rss>