Hacker Newsnew | past | comments | ask | show | jobs | submit | more jiehong's commentslogin

How about temporary commits locally, that then get squashed to ensure each build cleanly? Or secrets that shouldn’t have been committed?

Maybe it what an ironical question ^^


I use both, and I prefer fossil. But my coworkers hate fossil because they can't fake their commits to make them look good. This is something I actually like about fossil: git has tools just to make things look pretty even if they can cause serious headaches (rebase), so users are skewed towards good looking timelines made with dirty commits then rearranged and squashed. OTOH fossil forces you to do your best but accept that sometimes you botch it, and have to mark a commit as "does not build".

And I don't know why (forces you to review and cofirm?), but I had never commited unwanted stuff with fossil. But I had with git, probably by using the -am flag without realising a whole new dir is now in the scope.


This prioritises accuracy/history of what happened, but this has significant disadvantages and practically no advantages (other than "accuracy of what happened".

There are cases where you really do want an append-only leger, where tampering with history is malicious. -- But, generally, it's preferable to be presented with something tidy.

From some other comment in this thread, I get the impression it's possible to re-present a set of changes in a clean/tidy way? That seems a better way of putting it. "You can still have a clean view into a set of changes while preserving an accurate history of what changed".

What's hard to understand is why you'd be against the idea of tidy communication/presentation of changes in the first place.


> but this has significant disadvantages and practically no advantages (other than "accuracy of what happened".

...which is a very big advantage, big enough that it outweighs the disadvantages in my opinion.


Can you help provide examples from your development experience where "knowing the accurate history of what happened" was a very big advantage, to the extent where not having this knowledge would have made things very difficult?

Here a developer thought that redis would be a good add to the stack, so we decided he should try. It turned out that it didn't fit, mainly because it needed to touch code in more places than anticipated. We went back to starting point, but the project now carries a "no more redis/cache attempts before reading this one, please" fossil. New attempts can't say "oh, I didn't know this was attempted before".

With git, this kind of experiment would be hidden with a "reset hard", and probably will happen again when people forgets, someone says "didn't we try that a year ago?" but we have no records.

This is very helpful in small private teams, not so much in biggest teams (kernel), pass-by PR environments (github), or public CV-oriented repos (no mistakes allowed there, only pretty linear timelines).


This sounds more like some elitism. Who cares how your coworkers got there, the point is to have good history at the origin. People don't need to see your dirty laundy, there is nothing interesting about it.

Agreed.

In teams, only the history of what is committed to shared repo is important.


> People don't need to see your dirty laundy, there is nothing interesting about it.

We disagree here, thus we prefer different tools. Nothing elitist here.

I have seen git people throwing away repos and start again just to hide mistakes/pivoting and look "pro" and "right from the start". Or worse, I have seen people botching repos to others rewritting history just to make them look clean. I embrace mistakes, and sometimes they become useful later to replay train of thoughs.


There is something wrong with this explanation.

In the most common git setups, you never force-push to master - so a coworker can't rewrite history of master branch. Forges have protection rules, but even if your hosting does not, then the "git pull" will throw a ton of errors after history rewrites. So both fossil and git are similar in that regards.

On the other hand, unpushed branches can be rewritten any time in git.. but this applies to fossil as well. If you have not pushed your fossil changes, it's just a file on disk - you can delete it without pushing and no one will ever know you had intermediate version. Or work in "git" and only export to fossil (or svn or cvs or whatever) once things work.


Secrets that is committed anyway has to be assumed as compromised. So those secrets must be immediately changed. Removing it from history would help a bit, but is not a reliable mitigation.


Generic narrowing types / linear types (like if you check that a string has length 10, then its type knows, and functions accepting bounded strings can accept it.)

This makes it easier to split raw inputs from validated inputs and delimiting where they are used in the code.


Nice!

What would the macOS equivalent be?


There's an open bug for adding macOS support to buildprof: https://github.com/LalitMaganti/buildprof/issues/2

If you mean "how would I implement it without ptrace", there are a few options but likely the Endpoint Security API [1] would be the way to go. But it's not too great because it needs full disk access and root, neither of which I would be particularly happy accepting :(

[1] https://developer.apple.com/documentation/endpointsecurity


Sounds nice!

But, the web ui chat version of flash has very poor language following abilities in my experience:

You may ask it something in English, and get a thinking chain in Chinese with an answer in Chinese, or an English thinking chain and an English answer. Using the retry button on the same question has a 50/50 chance of any of those results.

Sometimes, asking something in English, but where information are mostly in another language may make the answer in the language where data has been found. The other day, I asked something about a local German thing, in English, and I got an answer in German instead. It’s as if all the language data stirred it away from the language of the user’s question.


It's not just web chat, V4 Flash 7/31 suffers from a lot of pathological behavior in coding harnesses as well, e.g. infinite loops, hallucinations, premature termination, and invalid tool calls.


All of these flash models have this. You have to build your harness so that it deals with it. Infinite loops are solved by having an error message that says what to do differently on failure, invalid tool calls are solved by making the tool schema less strict and detect things in the runtime etc.

Hallucinations you can't fix. Gemini is a bit worse there than DeepSeek, but there's not much research on how to fix that. The only one is the CaMeL paper by Google, where you tag every prompt and result and then for every assistant response or tool call you first check where it got that data and error if you notice fabrication. This one is really annoying to implement.

With larger models the fabrication starts when the context grows or if you have too many tools, for flash models it's much earlier. We use the flash models for repetitive agentic tasks, where the prompt defines clearly what to do and how. The whole run is about 4-5 steps typically, and context size stays in the comfort zone.


Can you share what tools and processes you're using to do this?

I've been using Pi to build custom extensions and wrapping workflows in shell processes to make it more deterministic and enforce certain validations, all guided by Fable. This isn't production work, though, just playing llm factorio at home.


What you want is a bunch of sessions to replay. Something anonymized if it's not yours, and something that's not depending on state.

You replay all your sessions against your harness, and then store all logs all output, everything to a safe place.

Finally use a blind judge to check everything, and score the output.

Then fix your harness, iterate again until better until you are in a point where it's just the model's weakness. If you get to that, use a bigger model.


This never happens on the deepseek api. It’s always a different provider using lower quants.


FWIW, I haven’t experienced any of that using V4 Flash via DeepSeek in omp. What’s your coding harness and inference provider?


Same. My side projects are coded almost exclusively with the Deepseek V4 Flash 07/31 in omp, and it recovers beautifully in every case. I'm using OpenCode Zen.


OpenCode but I variously use DeepSeek API/OpenRouter/Vercel AI gateway. I'm sure it's the combo of model + inference provider that is the issue and not the model alone. DeepSeek API also has far better inference speed and reliability than the cheapest providers. That said I never seem to have these issues when using GLM 5.3 flash served by OpenRouter/Vercel.


disagree; been using flash as my exclusive model (other contributors have used other models) to build a complicated software project, a web engine. See https://github.com/gterzian/formal-web, which as you can see comes with very specific guidance explaining how to implement features.

I'm using headless Pi with my own UI and sandbox client, https://github.com/gterzian/uni03C0, as well as a bunch of Pi extensions for things like accessing Web standards and browser use via CDP for testing.

Switching to 4.1 today...

Edit: it seems they pushed the date at which they route the Pro calls to new Flash, so today I ended up paying regular Pro rates thinking I was using the new Flash; an example of how their offering is not quite as predictable as I would like it to be (the other is cache performance being unpredictable).


I used a lot V4 flash to implement plans built by other models, and it was honestly top notch. The thing was a workhorse, and I got none of the isuses you describe.

I was mostly using DeepSeek on Pi, connecting to their API directly (not some third party provider).

I honestly have more issues steering Sonnet properly.


I have used the flash model for over 3b tokens and ofc. I saw some hallucinations and premature termination (I also get this on Astra - way more often than with deepseek v4 flash), but I never had a infinite loop (using the copilot as harness).


That may be an issue with the harness you are using, i've never, and never heard of, someone having this problem specifically with this model.


There is a chrome extension that injects “respond in English” and “English [checkbox emoji]” to every query. This helps a lot but I still sometimes get Chinese responses. I have not had this issue via api on openrouter.


Yep, the same issue. I even defined a dictionary shortcut on my phone to expand aie to "Answer in English!", but every so often it takes 5 times to force it to switch to English.

Interesting though, when I ask questions in German or my native language, I rarely get Chinese answers. Looks like English is most affected.

API never answers in Chinese.


I have the same issue, sometimes.

I initially thought it was a trick, that using Chinese chars is somehow more info dense and it saves tokens to 'think' in Chinese.

But later on it became more erratic. I still wonder if token reduction would work that way.


I've hit this too, but you can just add "in English" to steer it


I finally uninstalled the app yesterday after giving it plenty of chances over several months. Yesterday, I asked it whether «DeepSeek has fixed the issue where it erroneously answers in Chinese?» and it answered in Chinese.


So you did not do what the post you replied to suggested?


Oh, I’ve tried that too. It will promise to keep it in English from here on out, then switch back to Chinese after two or three exchanges. When ever it needs to do a web search, it seems to load so much Chinese text that it forgets any language instructions. Just thought my experience yesterday was more to the point. Right now the chat is absolutely hopeless.


huh. mine only does this on the first turn on a new computer. Once I've told it once it seems to be entirely sticky on that device from then on


This shouldn’t be a user-facing issue. The web UI should inject the account’s language setting or solve it like competitors. They’ve mentioned giving it multiple chances but it’s still not fixed.


Anthropic does the same thing but it's not problem


On the contrary, this is very strong steering in a prompt!


No you can't. It still responds in Chinese after explicitly asking it to "Always reason and respond in English."


I've literally only done this once per computer I use the web interface on, and it's always stuck thereafter. I can't speak to the mobile app

All flash llms have this problems. gemini. I start to a new chat write in german and suddenly it answers in english.

I take the free chat gpt one writ with it in polish suddenly english.


You see this on Reddit where the bot accounts will just comment in German, French or Italian randomly (and other bot accounts responding to it won't even bat an eye, responding in English as if it's the most natural thing in the world)


It's a bit more complicated than that because Reddit now automatically tries to translate comments not in the user's language.


I've occasionally got chinese characters in anthropic/openai's responses too, locally on codex/claude.

Hasn't happened in a while, last time was when I was testing fable 5 in june.


I don’t know what model codex uses for session summarization (I use Pro subscription, no third party models), but I get Chinese summaries from time to time, when the only Chinese that could have appeared in the session would be an i18n strings file that it may or may not have loaded. Very puzzling. Last happened yesterday.


I'm also totally not sure why it do that, but I guess because they're searching from China and web results comeback in Chinese so the model start using that.


The web UI's system prompt is also probably in Chinese


I've been working with Pro and it's been great so far.


Yep. I faced the exact same issue. Too many times. And then just gave up.


Very odd. I've used DeepSeek heavily for some weeks, and haven't seen a single Chinese character either in its replies or its thinking. Are you using a quantified model or a different provider by any chance?

Pretty cool work! And it’s nice to see printer discovery works through the standard mDNS!

Regarding the size of the page being sent to the printer, I remember reading that printers used to be postscript interpreters and the result of that program would be the page.

Perhaps that would trade ram for compute, but might be more complex in the end.


The standard library could be better, though.


That’s the way.

And because software vendors never provide a Linux version of their stuff, you kinda have to do it anyways, because you end up with a hardware piece you can’t use without.


Voxtral nomenclature is a bit confusing. I never remember which is newer for exemple (the number of parameters isn’t always helping).


Markdown ads?


Time magazine already serves their pages like this to agents with ads for the agents in them, IIRC.


Whats the sales agents conversion rate of selling agents to agents like?


> (…) while further increments have been smaller in percentage, speeds have always increased very significantly.

Off topic, but that sounds sort of contradictory, or misleading at the very least.


Well, if the first increment is 100%, you only need 50% the next time to get the same absolute increase as the first time. And then 33%, and so on.

That's how I read it at least.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: