HNHacker News
TopNewBestAskShowJobs

Leftium

1,811 karma · joined August 24, 2010

email: leftium.com/contact

leftium.com

Leftium: The Element of Creativity!

submissionscomments
Leftium··on Color Names
Probably a different data source/mapping, but you may find this easier to use: https://www.color-blindness.com/color-name-hue/
Leftium··on Show HN: Sumi.css – CSS Framework
Nimble.css is my spiritual successor to PicoCSS: https://leftium.github.io/nimble.css/demo/pico.html

It's not a direct replacement; I fixed a lot of annoyances from PicoCSS.

Leftium··on Why do computers/phones have a restart option along with the power off option?
On Windows, restart and shut down (power off) are not the same.

When shutting down, Windows optimizes the next start by caching some stuff. So it is not a true, clean restart.

On a restart, this caching does not happen.

Sources:

- https://www.youtube.com/watch?v=lUIhzACQDAc

- https://learn.microsoft.com/en-us/windows/win32/power/system...

Leftium··on Window Tiling on macOS, Scoped to Your Space
This is the first window manager I've found that lets you split windows by dragging onto other windows (like VS code)
Leftium··on Ask HN: Is voice becoming your main input? What happens to open-plan offices?
There are microphones that can capture whispers and even subvocalization: https://youtu.be/NvVbCqDgfCs?t=520

The one demo'ed in the video is BOYA BY-GM18CU (https://www.amazon.com/dp/B0BF969RVP)

That one captures whispers. I've heard other devices can dictate based on vibrations from your neck/chest.

Leftium··on Show HN: Bigwords.page – Turn any screen into a sign. The URL is the app
Tip: you can install this as a PWA (progress web app) onto your mobile device home screen. (If you have recent iOS 26+ or Android.)

If the site adds a PWA manifest, Android (Chrome/Google app) will show a prompt to install as app on load. Also PWA install will be available for older iOS.

I made a simple tool that generates a minimal PWA manifest: https://logo.leftium.com/logo

Leftium··on Pico CSS is no longer maintained (final release v2.1.1)
Apparently the other reply got auto-flagged because it was detected as genai. Let me paraphrase that comment (easier than reading that entire MD document, which was AI-written):

The main annoyances:

- oversized buttons

- 100+ root custom properties in devtools

- fighting against too many breakpoints (unpredictable font/container sizing)

---

I also changed/added some features:

- much smaller core: only 4.1 KB Brotli

- CSS cascade layers so app CSS can override more easily

- a surface color system (a la Open Props)

- OKLCH colors with auto derived hover/focus states and light-dark() theming

- centered layout with real gutters, plus content bleed outside gutters

- .no-nimble opt-out class (instead of .pico opt-in)

- ability to configure universal control-density (buttons, inputs, selects)

Leftium··on Pico CSS is no longer maintained (final release v2.1.1)
For some reason my detailed reply got flagged...

So if you can't see it: feature-comparison matrix plus notes from migrating several real projects from Pico:

https://github.com/Leftium/nimble.css/blob/main/specs/pico-m...

Leftium··on Pico CSS is no longer maintained (final release v2.1.1)
The main annoyances:

- oversized buttons

- 100+ root custom properties cluttering DevTools

- fighting against breakpoint-heavy font and container sizing

- container "padding" that could disappear at exact breakpoints

- having to fight framework styles with specificity

Nimble uses more compact controls, ~20 semantic variables, simpler grid-based centering with real gutters, and cascade layers so normal app CSS wins.

---

I also added some features/changed:

- much smaller core: Nimble is only 4.1 KB Brotli

- cascade layers, so normal app CSS can override the library without specificity fights

- a surface hierarchy for page/card/input/overlay backgrounds (a la Open Props)

- OKLCH colors with derived hover/focus states and light-dark() theming

- centered layout with real gutters, plus bleed-edge, bleed-wide, and bleed-full

- .no-nimble to opt third-party component subtrees out of Nimble styling

- shared control-density customization for buttons, inputs, selects, etc.

- .nc-join for visually joined controls without coupling that styling to ARIA role="group" (this kept confusing coding agents; technically they should not be coupled)

---

Feature-comparison matrix plus notes from migrating several real projects from Pico: https://github.com/Leftium/nimble.css/blob/main/specs/pico-m...

Leftium··on Pico CSS is no longer maintained (final release v2.1.1)
My nimble.css is inspired by PicoCSS: https://leftium.github.io/nimble.css/demo/pico.html

But it's not a drop-in replacement. (I fixed several annoyances I had while using PicoCSS.)

Leftium··on Ask HN: Declarative vs. Imperative
Perhaps you may find like-minded folks in the functional-thinking community:

I was trying to figure out what you meant by "declarative" because CSS is declarative. (My understanding is: "declarative means you say (declare) what you want, but not how to get it." Usually SQL is the poster child of declarative languages.)

I think you're really talking about a mix of preferring data (vs actions/calculations) and DSLs (which aren't necessarily declarative)

Eric Normand has some thoughts you might appreciate:

- How a problem might take 1000 SLOC to solve directly, but only 10 SLOC with a DSL (plus up to 500 SLOC for the DSL itself; still fewer lines total) https://ericnormand.me/podcast/magical-leverage-languages

- Data vs calculations vs actions: https://ericnormand.me/podcast/what-is-an-action

---

I think data can be very powerful. For example, someone explained to me:

> I've been helping my non-tech father with Home Assistant. I've honestly been shocked with how far "community extensions" + "user configuration" can take you. Every time we hit a bug, I go "time to hit github" but without fail chatgpt and him are able to tweak a setting to get it working.

If you make your system configurable (config==data), you can skip the whole compile/build step!

Leftium··on Deterministic Core, Non-Deterministic Shell
I think actions vs calculations is a better framing here. It's not just about avoiding imperative code or nondeterminism. It's about being extra careful with actions because the order and number of times they run matter.

Here is an example of a calculation written imperatively. It remains easy to reason about because the actions don't leak out of the function:

    function add(ns) {
        let total = 0
        for (const n of ns) {
            total += n
        }
        return total
    }
On the other hand, a deterministic state machine like `a = AddMachine` is harder to reason about because it still matters how many times the action `a.transition(1)` is called. (Note it is possible to implement the state machine as calculations.)

https://ericnormand.me/podcast/what-is-an-action

https://livebook.manning.com/book/grokking-simplicity/chapte...

Leftium··on Ask HN: Where is all of the AI coded software?
I think the real question you're asking is: why isn't AI coded software replacing well-known incumbent software (office, adobe, etc...)

Because I see AI coded software everywhere: HN has been complaining about the recent influx of Show HNs due to AI. Take a specific product category: there are about two new dictation apps on Show HN every week.

Here are my theories:

- adobe/office are simply too complex for AI to replicate (as of now). Theo Browne has been testing all the frontier models with a relatively simple fish game. The results have been subpar, at best. I don't think anyone would prefer the AI-generated games over the original. Even if the AI-generated version was free.

- Most AI-coded software won't be distributed like classic software. Instead of a bag of hundreds of features (adobe/office), AI will be used to create the specific 5% of the features a single user really needs (home-cooked software). The software may even be per project or even per task. Why spend 20X to 100X the tokens/time when you only need a small subset of the features?

- AI may not be able to replace human "taste" or design. There is a lot of design that went into adobe and office. I don't think AI can fully understand all the "why's" of these designs. We can already kind of see this with open source: Gimp and LibreOffice are alternatives to adobe/office. Yet most people prefer the paid options.

- Even if AI solved coding, there are other barriers like marketing.

Some examples:

- I built my perfect window management system with the help of AI. It suits my very specific needs very well, but it's nowhere near ready for distribution. So this is AI-generated software no one else will ever probably see.

- Going with the home-cooked meal analogy: there is a dish served at all Chinese restaurants in Korea: jjajangmyeon. However you can't find it in China because that dish is only found at home, not at restaurants in China.

Leftium··on Show HN: HonestSky, a free iOS weather app without ads or subscriptions
My first impression is it's very similar to the stock iOS weather app Apple provides by default (feature/layout-wise). I couldn't see any major differences based on the description here or in the app store. That's what kept me from even trying it.

So my advice is to highlight the major benefit over the iOS weather app that ships with every iPhone.

The only major difference I could see is the data source. Did you intentionally not use Apple WeatherKit? (If so, what was the rationale?)

Leftium··on How do you keep up HN post with more than 2K comments?
My HN reader has QoL features for reading such posts: https://hn.leftium.com/i/49630931?q=%22aspect+ratio%22

- Comments have 3 LOD (L:full, M:single line, S:collapsed)

- Optimal default LODs

- Simple to expand groups of comments (direct replies, comment thread ("spine"), full sub-tree)

- Highlight specific users like OP, or other interesting users

- Search for text within thread (automatically expands LOD)

- Highlights new comments (since last visit or set time)

It matches the way I want to read HN comments, anyways.

Leftium··on bzip3
> Compression is prediction

(According to recent article on HN[1]. So LLMs _are_ compression!)

[1]: https://hn.leftium.com/i/49263497

Leftium··on CodexBar: Every AI coding limit, in your menu bar
Tip: you can also add widgets to your desktop

1. Click menu bar time/clock

2. Click Edit Widgets...

3. Search for "Codexbar"

Leftium··on Apple caught off guard by AI demand for Mac Mini and Mac Studio
Apple hardware uses a unified architecture. That means the CPU and RAM are integrated together: it is very difficult/impossible to strip the RAM from these systems.

This unified architecture makes Apple hardware very good for AI work, where latency between RAM and CPU is very important

Even the SSDs (which are normally more strippable) use a proprietary hardware form factor.

I think the article mentioned the real draw:

> Apple noticeably promoted the ability to link multiple Mac Studios together into a single, more capable system for running large frontier AI models, a feature aimed at business and developer customers rather than everyday consumers.

(Couldn't read the source cited, might have more info: The Information)

Leftium··on Show HN: Automatically hide flamebait/shallow/political comments on HN
wow thanks! I integrated like this: https://hn.leftium.com/i/49449507?violation_threshold=0.5

The url param temporarily sets the threshold, you can permanently set it via the settings.

My initial assessment is 0.5 setting is too aggressive; the posts that I generally don't care to read seem to violate multiple rules at once.

It's a shame we can't see comment scores so orange highlights could shine through the blurring on "good" comments.

Leftium··on Show HN: Automatically hide flamebait/shallow/political comments on HN
I have been considering adding labels/filters based on sentiment analysis to my HN reader. I wonder if your classifier-based method would be more effective.

I added filters that blur posts from new HN accounts based on age/karma thresholds (as suggested by another HN user). However, instead collapsing, I just blurred them. This allows quickly peeking via hover. My reader also highlights posts with higher points/comments, and those orange highlights survive the blurring.

This is what blurring looks like: https://hn.leftium.com/newest?min_karma=500&min_age_years=5

Leftium··on Ask HN: How do you keep up with HN these days?
My HN client has made HN easier to keep up with, even before AI: https://hn.leftium.com

I call it "Seeking Orange" because interesting posts are highlighted. Features include:

- Point/comment counts become increasingly more orange with higher counts (50+, 100+)

- Orange accent bar on left indicates new items since last visit

- Support for several different feeds including: HckrNews (chronological front page appearance time), Classic Stories, Best Stories, Active Stories

- Thresholds to de-emphasize posts from users with low karma/recent creation dates: https://hn.leftium.com/newest?min_karma=500&min_age_years=5

Leftium··on Hello, me. It's been a while
When this was posted to HN, a lot of people could relate: https://sive.rs/slow

For me, I'm not sure if "slow" is the right word. I think "delayed" or "sporadic" is more accurate.

Thoughts for me are like when a word is on the tip of your tongue, but you can't think of it right away. Often you'll think of the word later: you weren't actively thinking about it, but the thought was simmering in your mind and just randomly pops up.

Leftium··on Ask HN: Anyone have solution to Opus verbosity in Claude Code?
You can add instructions in the CLAUDE.md/AGENTS.md file to modify output behavior like:

    # Response Style

    Keep routine answers concise. Lead with the result, include material caveats and the next action, and omit introductions, repetition, generic reassurance, and optional background. Expand only when the task requires explanation.

While writing a document I got good mileage out of doing something like this for every paragraph:

    Let's analyze this paragraph:
     - List the main points.
     - Can any points be removed? (Do any points need to be added?)
     - Reword each point. Be as succinct and clear as possible.
I'm not sure how many extra tokens it would consume to do this for every output. But it may be better than just asking for "TLDR pls"

(I've actually never used Claude Code. I've never had problems with verbosity in harnesses like OpenCode or T3-code. And recently I've been using Codex, not Claude models.)

Leftium··on Monitors for Work
Reminds me of this this advice from 20 years ago (2006!): https://www.nngroup.com/articles/screen-resolution-and-page-...

> Big monitors are the easiest way to increase white-collar productivity, and anyone who makes at least $50,000 per year ought to have at least 1600×1200 screen resolution. A flat-panel display with this resolution currently costs less than $500. So, as long as the bigger display increases productivity by at least 0.5%, you'll recover the investment in less than a year.

Surely the economics must be even better in 2026?

Leftium··on Ask HN: What is a good format for a tool to report data to a LLM?
I settled on JSONL for an LLM-optimized output format. Rationale: https://github.com/Leftium/gg/blob/main/specs/completed/gg-a...

Combine that with context mode: https://hw.leftium.com/i/47193064

Leftium··on Ask HN: Who wants to be hired? (August 2026)
Location: Seoul

Remote: Yes

Willing to relocate: Yes

Technologies: SvelteKit, TS, JS, UX

Résumé/CV: https://leftium.com/resume

Email: https://leftium.com/contact

If you're looking for a full-stack (SvelteKit) developer who obsesses over UX and finds unconventional solutions, let's discuss how we might work together.

Leftium··on Show HN: Vein, a minimalist open-source resource management game
First, it's really odd to have to use an onscreen keyboard to enter a username on a web game. I suggest:

- allowing keyboard input

- make username input optional, or move to end of game

- there is no way to log in as the same user on a different device/profile

The reason I tried on a different device/profile was because I could not see any tutorial. I was wondering if it was because of adblock/extensions.

There was no way to enter the tutorial right away

I tried replay with tutorial, but I don't think anything was different

Of course, I have no idea how to play the game; there is no way to understand what is happening

I tried clicking everywhere

Leftium··on Timed YouTube video transcripts in .txt and .pdf
Clickable link: https://pelicantools.app/tools/youtube-to-transcript

It would be amazing if clicking the timestamps opened the video at that time. I often want to search inside a video for certain text, then watch the video at that point. (YouTube supports linking to videos at a given timestamp like https://youtu.be/tL9Lw250spc?t=199)

It's kind of possible with the YouTube UI, but not a very good user experience.

Leftium··on Ask HN: Protecting your Sites/Services from Unwanted Traffic?
You can hide data in random static (for a novel captcha). Very obvious to most humans (if it becomes popular, the bots could probably be designed solve it; just requires diffing the images):

- https://fx.leftium.com/static

- https://www.youtube.com/shorts/tPfzNzy24to

---

I noticed most of the traffic to my hobby sites was bot traffic (probing for common vulnerabilities). So I added a robots.txt for well-behaved bots and rules for the bad ones. It works pretty well.

robots.txt: https://github.com/Leftium/robots-txt

Sample cloudflare rules:

    (
      http.request.uri.path contains "/wp-login"
      or http.request.uri.path contains "/wp-admin"
      or http.request.uri.path contains "/wp-content"
      or http.request.uri.path contains "/wp-includes"
      or http.request.uri.path contains "/xmlrpc.php"
      or http.request.uri.path contains "/wordpress/"
      or http.request.uri.path contains "/wp-json/"
      or http.request.uri.path contains "/wp-config"
      or http.request.uri.path contains "/wp/"
      or http.request.uri.path.extension eq "php"
      or http.request.uri.path.extension eq "aspx"
      or http.request.uri.path.extension eq "asp"
      or http.request.uri.path contains ".env"
      or http.request.uri.path contains "sftp-config"
      or http.request.uri.path contains ".vscode/"
      or http.request.uri.path contains "credentials"
      or http.request.uri.path contains "stripe"
      or http.request.uri.path contains "secrets"
      or http.request.uri.path contains "config.json"
      or http.request.uri.path contains "config.yml"
      or http.request.uri.path contains "config.yaml"
      or http.request.uri.path contains "config.py"
      or http.request.uri.path contains "config.inc"
      or http.request.uri.path contains "config.rb"
      or http.request.uri.path contains "settings.json"
      or http.request.uri.path contains "settings.yml"
      or http.request.uri.path contains "settings.py"
      or http.request.uri.path contains "application.yml"
      or http.request.uri.path contains "application.properties"
      or http.request.uri.path contains "parameters.yml"
      or http.request.uri.path contains "appsettings.json"
      or http.request.uri.path contains "docker-compose"
      or http.request.uri.path contains "/.git/"
      or http.request.uri.path contains "/.circleci/"
      or http.request.uri.path contains "/.aws/"
      or http.request.uri.path contains "/.bitbucket/"
      or http.request.uri.path contains "/.travis.yml"
      or http.request.uri.path contains "serverless.yml"
      or http.request.uri.path contains "debug.log"
      or http.request.uri.path contains "error.log"
      or http.request.uri.path contains "/storage/logs/"
      or http.request.uri.path contains "_profiler"
      or http.request.uri.path contains "phpinfo"
      or http.request.uri.path contains "/debug/"
      or http.request.uri.path contains "/horizon/"
      or http.request.uri.path contains "/manage/"
      or http.request.uri.path contains "fileman"
      or http.request.uri.path contains "assetmanager"
    )
Leftium··on Show HN: Brolly, a plain-text weather forecast site
I think the most useful data to add is the 60-min precipitation forecast.

Unfortunately open-meteo doesn't offer this.

So https://weather-sense.leftium.com uses the 60-min forecast from OpenWeather. But you have to specifically request it because the free-tier quota is not as generous. (I think Apple's WeatherKit may also offer this data, but I was unable to get WeatherKit to work at all)

---

After that, the wind is important for people who like outdoor activities. For example, Kayak rentals are paused when it gets too windy. On the other hand, kite boarders like it when it's windier.

Page 1 of 29Next →