News for hackers. Stuff that matters.

cvanelteren

Re:Anthropic's growth just flattened (really) on Monday November 02, 2026 @06:53PM (#50345999)
I don't see the issue. If the market is saturated by them, the slowdown seems to indicate to me that it has reached (at least transiently) its intended audience. If the end goal is that every person on earth has a claude subscription (or whatever your choice is) then yeah that is worrying, but I don't deem that realistic.
Re:Who am I when the machines do the work? on Monday November 02, 2026 @07:55AM (#50336194)
The Jetsons painted a picture of a bright future where machines would work more, and humans would work less. I put down some thoughts on the development of AI, and reflect on whether we are heading towards the Jetsons' or Bladerunner's future.
That's alright, was just wondering if I missed something. Not that interested in being "right".
Re:Growing Trees on Monday October 26, 2026 @06:13AM (#50241521)
Oh hell yeah, a topic like this was on my bucket list for a while.
I see, thanks for clarifying.
Last time I checked Pi is developed by Austrians?
While I agree with your sentiment, I must add to this that to say that something is unequivocally true that holds in all conditions everywhere is difficult to ascertain in general. So we have to deal with that two (or more) things can be true at the same time (sometimes). This may be less the case for things such as prime numbers but more the case when the underlying principle is void of simple cause and effect (in the linear sense).
Re:The baffling intelligence of a single cell (2024) on Monday October 12, 2026 @11:20PM (#50066197)
Beautiful website.
Re:ExactTex. A gradually-typed superset of LaTeX on Saturday September 05, 2026 @12:05AM (#49572973)
I hope tex gets replaced by typst. It much more pleasurable to write in in my opinion.
I mean it identifies as Claude in 1 in 5 cases when asked so pretty obvious to me.
Re:Jellyfin founder Andrew leaves team on Tuesday July 21, 2026 @12:19AM (#48988010)
Not sure I would phrase it like this. For context see: https://github.com/andrewrabert/jellium-desktop/issues/109
Re:Jellyfin founder Andrew leaves team on Tuesday July 21, 2026 @12:13AM (#48987971)
Can attest to this with my recent interactions on the jellyfin-ios repo.
Nice write-up!
Nice write-up!
Re:A Perceptron in Age of Empires II on Saturday June 20, 2026 @12:22AM (#48606321)
Link to the paper is not working on this site. Cool stuff tho.
Re:A.I. is creating engineers who can't think without it on Sunday April 26, 2026 @07:15PM (#47915845)
Wrote a similar take on it here:https://thefriendlyghost.nl/chinese-room-ai/

Show HN: UltraPlot 2.0 – semantic legends, better layouts, faster imports

https://github.com/Ultraplot/UltraPlot/releases

UltraPlot v2.0.1 is out!UltraPlot is a Matplotlib wrapper aimed at keeping Matplotlib’s flexibility while making common plotting workflows faster and more consistent.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.We also launched a new...

( Read More... | no comments | 3 points | on HN )
Re:Dithering – Part 1 on Thursday October 30, 2025 @08:03AM (#45759100)
Amazing animations!
I wrote an essay exploring where the notion of computation breaks down, and how representation, not rules, might be the true boundary.
Re:Show HN: UltraPlot. A Succinct Wrapper for Matplotlib on Monday September 15, 2025 @02:35AM (#45246757)
Thanks for your questions.

  - 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.
Re:Show HN: UltraPlot. A Succinct Wrapper for Matplotlib on Sunday September 14, 2025 @11:14AM (#45240402)
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.

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.

Check out our docs or more visual examples.

Re:Show HN: UltraPlot. A Succinct Wrapper for Matplotlib on Sunday September 14, 2025 @11:04AM (#45240290)
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.
Re:Show HN: UltraPlot. A Succinct Wrapper for Matplotlib on Sunday September 14, 2025 @09:00AM (#45239488)
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.

Let's say we want a 3-column plot: colormesh, polar, and geo plot.

UltraPlot:

  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()
Matplotlib equivalent:

  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()
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.
Re:Show HN: UltraPlot. A Succinct Wrapper for Matplotlib on Wednesday September 10, 2025 @03:14PM (#45202316)
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.

Why UltraPlot?

Key improvements over vanilla matplotlib:

  - 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
Instead of wrestling with subplot positioning and styling, you can write:

``` import ultraplot as uplt

layout = [[0, 1, 2], [3, 3, 4]]

fig, axs = uplt.subplots(layout)

axs[0].plot(x, y1, label="Data 1")

axs[1].plot(x, y2, label="Data 2")

axs.format(xlabel="Hello", ylabel="Hacker news", abc="[A]") # format applies to all axes fig.legend()

```

...and get a clean, professional-looking plot in seconds.

Get Started:

- GitHub: https://github.com/Ultraplot/ultraplot

- Docs: https://ultraplot.readthedocs.io/en/latest/

Try it out and let us know what you think — contributions and feedback are very welcome!