frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Building a Custom Clawdbot Workflow to Automate Website Creation

https://seedance2api.org/
1•pekingzcc•1m ago•1 comments

Why the "Taiwan Dome" won't survive a Chinese attack

https://www.lowyinstitute.org/the-interpreter/why-taiwan-dome-won-t-survive-chinese-attack
1•ryan_j_naughton•1m ago•0 comments

Xkcd: Game AIs

https://xkcd.com/1002/
1•ravenical•3m ago•0 comments

Windows 11 is finally killing off legacy printer drivers in 2026

https://www.windowscentral.com/microsoft/windows-11/windows-11-finally-pulls-the-plug-on-legacy-p...
1•ValdikSS•3m ago•0 comments

From Offloading to Engagement (Study on Generative AI)

https://www.mdpi.com/2306-5729/10/11/172
1•boshomi•5m ago•1 comments

AI for People

https://justsitandgrin.im/posts/ai-for-people/
1•dive•6m ago•0 comments

Rome is studded with cannon balls (2022)

https://essenceofrome.com/rome-is-studded-with-cannon-balls
1•thomassmith65•11m ago•0 comments

8-piece tablebase development on Lichess (op1 partial)

https://lichess.org/@/Lichess/blog/op1-partial-8-piece-tablebase-available/1ptPBDpC
2•somethingp•13m ago•0 comments

US to bankroll far-right think tanks in Europe against digital laws

https://www.brusselstimes.com/1957195/us-to-fund-far-right-forces-in-europe-tbtb
3•saubeidl•14m ago•0 comments

Ask HN: Have AI companies replaced their own SaaS usage with agents?

1•tuxpenguine•17m ago•0 comments

pi-nes

https://twitter.com/thomasmustier/status/2018362041506132205
1•tosh•19m ago•0 comments

Show HN: Crew – Multi-agent orchestration tool for AI-assisted development

https://github.com/garnetliu/crew
1•gl2334•19m ago•0 comments

New hire fixed a problem so fast, their boss left to become a yoga instructor

https://www.theregister.com/2026/02/06/on_call/
1•Brajeshwar•21m ago•0 comments

Four horsemen of the AI-pocalypse line up capex bigger than Israel's GDP

https://www.theregister.com/2026/02/06/ai_capex_plans/
1•Brajeshwar•21m ago•0 comments

A free Dynamic QR Code generator (no expiring links)

https://free-dynamic-qr-generator.com/
1•nookeshkarri7•22m ago•1 comments

nextTick but for React.js

https://suhaotian.github.io/use-next-tick/
1•jeremy_su•23m ago•0 comments

Show HN: I Built an AI-Powered Pull Request Review Tool

https://github.com/HighGarden-Studio/HighReview
1•highgarden•24m ago•0 comments

Git-am applies commit message diffs

https://lore.kernel.org/git/bcqvh7ahjjgzpgxwnr4kh3hfkksfruf54refyry3ha7qk7dldf@fij5calmscvm/
1•rkta•26m ago•0 comments

ClawEmail: 1min setup for OpenClaw agents with Gmail, Docs

https://clawemail.com
1•aleks5678•33m ago•1 comments

UnAutomating the Economy: More Labor but at What Cost?

https://www.greshm.org/blog/unautomating-the-economy/
1•Suncho•40m ago•1 comments

Show HN: Gettorr – Stream magnet links in the browser via WebRTC (no install)

https://gettorr.com/
1•BenaouidateMed•41m ago•0 comments

Statin drugs safer than previously thought

https://www.semafor.com/article/02/06/2026/statin-drugs-safer-than-previously-thought
1•stareatgoats•43m ago•0 comments

Handy when you just want to distract yourself for a moment

https://d6.h5go.life/
1•TrendSpotterPro•44m ago•0 comments

More States Are Taking Aim at a Controversial Early Reading Method

https://www.edweek.org/teaching-learning/more-states-are-taking-aim-at-a-controversial-early-read...
2•lelanthran•46m ago•0 comments

AI will not save developer productivity

https://www.infoworld.com/article/4125409/ai-will-not-save-developer-productivity.html
1•indentit•51m ago•0 comments

How I do and don't use agents

https://twitter.com/jessfraz/status/2019975917863661760
1•tosh•57m ago•0 comments

BTDUex Safe? The Back End Withdrawal Anomalies

1•aoijfoqfw•59m ago•0 comments

Show HN: Compile-Time Vibe Coding

https://github.com/Michael-JB/vibecode
7•michaelchicory•1h ago•1 comments

Show HN: Ensemble – macOS App to Manage Claude Code Skills, MCPs, and Claude.md

https://github.com/O0000-code/Ensemble
1•IO0oI•1h ago•1 comments

PR to support XMPP channels in OpenClaw

https://github.com/openclaw/openclaw/pull/9741
1•mickael•1h ago•0 comments
Open in hackernews

Show HN: Ultraplot – A succint wrapper for matplotlib

https://github.com/Ultraplot/UltraPlot
34•cvanelteren•4mo ago

Comments

cvanelteren•4mo ago
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!

zahlman•4mo ago
> Instead of wrestling with subplot positioning and styling, you can write:

This would be more convincing if you showed the equivalent Matplotlib code and demonstrated that any improvements are not just a result of default settings being a closer match for what the example tries to do. The code shown here looks more or less like what I'd expect a Matplotlib hello-world to look like.

cvanelteren•4mo ago
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.
zahlman•4mo ago
> You are right. I was doubting to make a more complicated example -- but formatting is poor on txt boxes.

I see now that you have an example in the README. I think it would be better still in the README, but as plain text rather than rendered into an SVG.

quietbritishjim•4mo ago
Interesting, thanks. A few questions from a newbie:

* I hadn't heard of ProPlot before. I take it that it's no longer maintained? Is there an announcement, or is it just obvious from commits drying up (like with PIL which was forked into Pillow)?

* Is this a (friendly) fork (again, as with PIL/Pillow), or a reimplementation (in which case are there big differences or does it aim to match)?

* I hadn't of GeoAxes either and that looks pretty useful. The top web search results for that term are ProPlot and Cartopy. Is the Cartopy implementation related at all? Is this a bundling of that, or a similar reimplementation, or something fairly different?

quietbritishjim•4mo ago
To answer my own questions:

* Yes it seems ProPlot stagnated and no longer works with latest matplotlib versions. UltraPlot is a fork that fixes that:

https://github.com/proplot-dev/proplot/pull/459

* Yes, the documentation says that GeoAxes is from Cartopy.

(Also, typo: the project description says "succint" rather than "succinct".)

cvanelteren•4mo ago
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.
L33tCrown•4mo ago
I was hoping to see more support towards Python typings, which is my biggest annoyance with Matplotlib.
zahlman•4mo ago
Could you explain more concretely what kind of "support" you have in mind? A graphing library isn't like Pydantic, you aren't supplying typing information from your own code to it as part of the API. Do you just mean that it should provide type annotations in its own interface? Because I do see .pyi typing stubs in the distribution.
cvanelteren•4mo ago
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.
quietbritishjim•4mo ago
That comparison between the matplotlib and ultraplot APIs doesn't seem fair. Most of the difference in length is that the separate methods for formatting in matplotlib are bundled into a single format() function in ultraplot. But, in matplotlib, you can pass those as kwargs to add_subplot() [1] which would work out at a similar length (or even shorter).

[1] https://matplotlib.org/stable/api/_as_gen/matplotlib.figure....

Maybe there are much more important API differences (I hope so, as that's a pretty trivial difference to start with.) I just mention it because that's what the screenshot seems to focus on as a justification: "Why UltraPlot? | Write Less, Create More".

cvanelteren•4mo ago
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.

kseistrup•4mo ago
Now also available from AUR: https://aur.archlinux.org/packages/python-ultraplot-git