Tips on AI tools for coding

Does anyone has any interesting AI tool you use why doing Flutter/Dart?

I have only experience with free version of https://codeium.com which I use mostly as an autocomplete which works quite well and I especially like when I have to write a sequence of stuff, I write the 1st and it autocomplete the rest based on it for me etc.

Would like to know your opinions and tips on other tools!

I’m currently using GitHub copilot, I’m enjoying the autocompletion so far, the chat to talk about some code

2 Likes

I used to use Github Copilot, then switched to Codeium based on an independent comparison (video). I might switch back or pick up yet another tool based on updated benchmarks. I also briefly tested out IntelliJ’s built-in solution. In all cases, I use it like you — as a fancy autocomplete.

The one thing I learned to do that makes me more productive is having a keyboard shortcut set up to quickly enable / disable the autocompletion. (For Copilot, it’s Ctrl-Shift-O. I bound the same keystroke for Codium.) This lets me focus on my flow when coding most of the time, without the distraction of wrong auto-suggestions, and then use the AI only when I know it’s going to be useful. Before learning this ā€œtrickā€, I often spent more time reading and rejecting garbage suggestions than doing actual coding, and losing concentration. As you note above, the AI is best at sequences of repetitive or obvious stuff.

In the past, I periodically tried the other things that LLM coding tools provide, and so far I have always been disappointed. I’m talking about things like the chat interface inside the IDE that lets you ask the LLM to rewrite code for you. I tried that with Codium, Copilot and the IntelliJ AI solution. In all cases, the results were dismal. I might try it again.

9 Likes

As I get Copilot for free as an OSS publisher I mostly use Copilot. What is really helpful to have a separate key-binding which will only accept the next word it proposes so if the proposal is partly bullshit you don’t have to delete most of it afterwards.

Besides that I made pretty good experiences with Claude.ai if I want more complex changes or creation of some scripts

For me copilot is great for finishing or predicting some stuff but claude was great for actually writing code. Tho I think I saw copilot can now use third party AI, so with anthropic (claude) should be. Great

1 Like

I’ve felt that there’s little to no point trying to be an early adopter in all of these AI tools as the best one will emerge in a few years time.

Between now and then you will end up trying various AI tools, realizing some are awful and some are okay and then later a lot of these AI tools will disappear as companies fail to have a profitable model.

The companies which remain will have you at their mercy and be able to continually jack up prices like Netflix / Spotify is doing because the majority are VC backed who care only about profit making.

Throughout this time you will have wasted days worth of development time testing the various different AI tools and trying to adjust your workflow to incorporate them and if anything your problem solving skills will become rusty as you build up a dependency on these tools.

3 Likes

It’s sort of a slippery slope. I too m not really happy with using it on the other side repetiv tasks can be done so much faster with it.
Or for example I needed some python scrip to pitch some generated Dart files. It was way faster to explain Claude what I need with examples before and after the patch than to write it manually.
Knowing that others take advantage of Ai tools makes it hard not to follow.
I too see the danger that at some point there will be a massive concentration and prices will go up.

1 Like

After several months using GitHub Copilot I switched to https://www.cursor.com . Especially the composer is quite impressing. It can create or change several files in response to a good prompt and shows all changes as diff, just like in a merge request.

2 Likes

They write that you can use VS code plugins do you know how that works?
Is cursor pure online IDE or can you install it locally?

Cursor is a clone of VScode and is installed locally. It suggests to install all extensions from a VScode instance. I had no problem with all the typical extensions used for Flutter development.

2 Likes

I use https://supermaven.com/ and it’s really great. I wonder how it compares to codeium, maybe I’ll try it this week.

I generally use only supermaven free tier for autocomplete.
And I’m learning aider, cline and continue.dev with gemini flash, but if I would pay for a model, it would be claude or deepseek.

I’ve been using a paid version of Cursor.

While I did tried other ways of leveraging LLMs to help me code, the ones I tried were too slow.

I have my eye on Ollama + Continue (VSCode) but also AnythingLLM + a local vector DB.

1 Like

Well Supermaven has just been bought by Cursor, but they say they’ll keep developing and supporting the IDEs extensions

I’ve been using this website for Flutter/Dart development, and it’s been a game-changer for me, especially when it comes to debugging. It helps me quickly identify errors in my code and suggests ways to fix them. I find it particularly useful when I’m stuck on a problem or need some help understanding why something isn’t working as expected. It can also assist with code completion and offer explanations for complex parts of the code, which is great for learning and improving coding skills. Definitely worth checking out if you’re looking for something beyond just autocompletion!

FWIW, I’m now using Sourcegraph’s Cody (as an IntelliJ plugin) and I’m much happier with it than my previous explorations (Tips on AI tools for coding - #3 by filip).

I still code with AI autocomplete turned off, because I find the autocomplete still breaks my flow. But I use the Cody chat and occasionally ā€œforceā€ completion with a keystroke. I also use what Sourcegraph calls ā€œEdit code with Codyā€, which gives a little modal window right in the text, where you can say things like ā€˜now implement myField’ and it generally does the right think.

I’m also finding Claude 3.7 Sonnet much better than ChatGPT 4o.

Finally, I also learned that LLM can help me make ASCII diagrams in docs. This is helpful since it’s so easy to say ā€œnot worth itā€ otherwise. But with an LLM, you say something like ā€œgive me an ASCII diagram of a 16:9 screen with a dot in the centerā€, and go from there.

    // This is using Pythagoras to find the distance from the center of
    // the screen to any of the corners, expressed in multiples of the height
    // of the screen (which is the value expected by RadialGradient).
    //
    //                         a
    // +--------------------------------+         h = 1
    // |               |          ..... |         w = aspect * h
    // |           b   |     .....      |
    // |               | ....    x      |         b = h/2 = 1/2
    // |               O                | h       a = w/2 = (aspect*h)/2 =
    // |                                |           = aspect/2
    // |                                |
    // |                                |         x² = a² + b² =
    // +--------------------------------+            = (aspect/2)² + 1/4
    //                 w
    final radius = sqrt((aspect / 2) * (aspect / 2) + 1 / 4);

I use Cursor most of the time now and auto completion is mostly helpful although it often gets things wrong. What can help is enabling in the setting a shortcut to only accept the next proposed fragment.

I general I still struggle with really getting productive in my project by using prompts. However several developers I know claim that they do 80% of cod3via the agent and prompts.

That motivated me yesterday to try it with a refactoring in a class hierarchy where I want to remove some duplicates code in a pretty big class which would have been pretty tedious to do manually.
So I decided to give Cursor’s AI agent the job.

The first 4 approaches where a disaster. Cursor made changes I did not had asked for and left a mess of code that didn’t even compile.

Finally I disabled in the setting the features to iterate over Linter warnings to improve code quality and enabled additionally Deepseek besides Claude and chatgpt (no idea how cursor priorises which model. In the past you just selected which model to use, now you can select multiple ones)

Not sure if Deepseek made a difference but after that change the next attempt to do the same suddenly worked and the code looked fine.

However later I found that the agent had forgot to remove the now in a new patent class implemented comon fields from the deriving classes so that their fields where now overriding already existing fields.

So I am left with very mixed feelings.

I posted yesterday the following on Bluesky

And it still summarizes my feelings to Ai and development

1 Like

At work I’m encouraged to leverage a copilot enterprise plan. I don’t have good things to say about its performance in generating Dart when prompted, and I find autocomplete to be a distraction.

At the moment I use it to assist me in logging - create a statement to log X object in a prescribed way and/or reformat this log into this format for me - e.g take a stringified json object and transform it into a key-value list with entries on new lines. For this use case the time to validate correctness is short and the cost of incorrectness is low.

1 Like

Highly recommend to add an extra key binding to only accept the next word that Copilot recommends.

FWIW, my main problem with AI autocomplete is how I tend to stop to read the autocomplete, and thus get out of flow. If the autocomplete was 90% usable, this would be no problem — but it’s much less often usable. If I was always writing at top speed and thus only saw autocomplete when I’m ā€œdoneā€ with a thought, then it would also be no problem. But I often just stop to think a little bit, and then the AI is faster than me — and instead of finishing a simple thought, I find myself reading a (mostly unusable) piece of code. ĀÆ_(惄)_/ĀÆ

In this respect, ā€œchat oriented programmingā€ (chop) is probably a better fit for me.

1 Like