HN user

vivin

1,138 karma

I like to write code.

My website is at http://vivin.net.

Posts10
Comments84
View on HN

This is interesting to me, because Claude has been a net-positive for me. I haven't faced token issues or declining quality. I generally work with Claude as an assistant -- I may have it do planning and have it "one shot" a thing, but it's usually a personal tool or a utility that I want it to write.

For actual code that goes out to production, I generally figure out how I would solve the problem myself (but will use Claude to bounce ideas and approaches -- or as a search engine) and then have Claude do the boring bits.

Recently I had to migrate a rules-engine into an FSM-based engine. I already had my plan and approach. I had Claude do the boring bits while I implemented the engine myself. I find that Claude does best when you give it small, focused, incremental tasks.

I've used agent mode, but I tell it not to go hog wild and to not do anything other than what I have instructed it to do. Also, sometimes I will tell it not to change the code, and to go over its changes with me first, before I tell it that it can make the changes.

I feel the same way as you in general -- I don't trust it to go and just make changes all over the codebase. I've seen it do some really dumb stuff before because it doesn't really understand the context properly.

You can't get away from the engineering part of software engineering even if you are using LLMs. I have been using Claude Opus 4.5, and it's the best out of the models I have tried. I find that I can get Claude to work well if I already know the steps I need to do beforehand, and I can get it to do all of the boring stuff. So it's a series of very focused and directed one-shot prompts that it largely gets correct, because I'm not giving it a huge task, or something open-ended.

Knowing how you would implement the solution beforehand is a huge help, because then you can just tell the LLM to do the boring/tedious bits.

Ghost 3.0 7 years ago

That is awesome -- I was looking to roll my own. This will make it much easier.

One point. Type erasure in Java is actually a bad thing -- this is because generics were added after the fact, and in order to provide compatibility with older code, Java only performs those checks at compile time. In some cases, even with generics, you cannot guarantee type-safety in Java due to type-erasure -- the information is essentially unavailable at runtime.

The model's decision function is represented by the blue/pink background, and is clearly nonlinear. The bright red cross is the instance being explained (let's call it X). We sample instances around X, and weight them according to their proximity to X (weight here is indicated by size). We then learn a linear model (dashed line) that approximates the model well in the vicinity of X, but not necessarily globally.

So is this sort of like a local SVM classifier?

For now, WebAssembly does not support garbage collection at all. Memory is managed manually (as it is in languages like C and C++). While this can make programming more difficult for the developer, it does also make performance more consistent.

Does this worry anyone else? Or I am getting worked up over nothing?

If you want something similar to Ubuntu, but something that is much more stable, I highly recommend Linux Mint. I've been using it for about 4 years now and it's a delight. Very stable and doesn't give me a lot of issues after upgrades. Their upgrade-schedule and the upgrades itself are very conservative.

They've based off a Ubuntu LTS, but I think they are starting to move away from that.

Oh, wow! I did the exact same thing! I remember thinking why some files would just "run" from the command-line and why others wouldn't! I remember renaming a .TXT file to .COM or .EXE and also wondering why it wouldn't run!

Hello! Haha, yes I remember the computer store in Al-Harthy complex where you could get games; all pirated of course. I remember I used to go there with friends in high school! Definitely good times...

It was more or a relative assessment of difficulty than absolute; I was comparing it to what it takes to play a game these days. Back then you had to do more legwork. It wasn't objectively that difficult though.

Not my experience. I recently submitted a bug fix to Qt WebKit and feature to swagger. Neither of them broke anything and both were accepted. The submission processes for both projects were diligent enough to ensure quality contributions yet simple enough that they were not byzantine.

That's a very good point. The standard library for JavaScript is embarrassing to say the least. But you can't really fault it given the environment for which it was created. Node went some way towards making it a little better at least for the server side.

What this article is about? Snippets from SO answers are not as good as battle-tested code? It's obvious and it's same in all languages.

It's much harder to ship SO copypasta in say, Java or C#, than in Node. JavaScript is a much easier language to grasp and it is also a lot more forgiving and loose. Combine that with NPM and can suddenly be immensely "productive". But the ability to write and push a lot of code very fast also means that it makes it very easy to write and push a lot of bad code very fast.

I guess my experience with CPAN has been different. Probably the most frustrating thing is the paucity of documentation from certain perl modules. But the modules I've found and used have been pretty good quality and pretty stable.

Then again, I've never built anything "enterprisey" in Perl (just little tools and scripts here and there), so that could it be it.

Realized this sometime ago, when I was wondering why the Java ecosystem doesn't have this problem. It boils down to the barrier of entry. On JS it's so low as to be almost nonexistent, which is why you end up with junk like isPositiveInteger. Slap some shit together and ship it.

You can't do that easily in Java. You need to spend some time understanding the language, the ecosystem, how to bundle your code into an artifact, and then how to release and publish it; the barrier of entry is much higher because there is a lot more to learn and understand.

The article mentions Android - I haven't worked much with Android and so I'm not familiar with the libraries there. Is there the same sort of problem in the Android ecosystem that you see in Node? I wonder if he is talking about the fragmentation of Android implementations (flavors from different providers), which is a different thing entirely. Seeing as Android uses Java, I'm thinking the ecosystem is not like Node.

Have you read the article? It isn't an ad-hoc distinction. You get the base system with a FreeBSD install. It includes the kernel and everything else that makes it a "FreeBSD system". This is stuff maintained by the BSD team. Everything else is an add-on.

If you blew away /usr/local, you would be left with a pristine (mostly) BSD install.

An analogy is a base windows install and all the associated tools and drivers. Anything else you install on your own is an add-on.

This distinction is hardly arbitrary.

Edit

Seems to me you have a hard time understanding what a "base system" means. This is what the article is trying to explain, and it seems to have gone completely over your head; I can't help with that.

I was a long-time FreeBSD user. Started using it in college and continued for a long time. I started using Linux because I had bought myself a new laptop and BSD didn't recognize the wifi card. I continued using FreeBSD at home for a few more years on my webserver before ultimately moving to dreamhost (I just didn't have the time to keep maintaining my own server).

I like using Linux, but I still miss the predictability of a BSD system - you know where things are, and where they are supposed to be. When I first started using Linux, I was absolutely flummoxed by the lack of distinction between the base system and add-on utilities.

Linux definitely feels more "organic" and "grown" whereas FreeBSD seems like it was architected and planned out. Not that this is a bad thing for Linux. My FreeBSD heritage still shines through when I use Linux; anything I install from source sits in /usr/local :).

Qt 5.6.0 released 10 years ago

Woo! It has a bugfix to qt-webkit that I committed. It fixes a canvas.toDataURL issue with PNGs.

This is pretty nice. Hope it goes through. It's about time that we had local-variable inference in Java. It does mean that the diamond can't be used this way:

  var list = new ArrayList<>();
There is no way to infer the type of the generic parameter. So we will go back to doing:
  var list = new ArrayList<String>();
Which isn't a big deal IMO because the generic parameters had to be specified on the LHS anyway to use the diamond. You also end up using fewer characters in general with var even without being able to use the diamond.

Regarding val vs let, I prefer let simply because it's harder to accidentally type let vs typing var instead of val (or vice versa).

The sheer diversity of language and culture in a place that is a third of the size of Europe. India "officially" has 122 languages, but over 780 have been counted.

Going from one state to another is like going from one EU country to another; each of the 29 states has a different language, different writing-system, different culture, different cuisine, different traditions, different everything. Of course, there are similarities and towards the borders between states you get a kind of continuum of language and culture.