My initial impressions on Particle DEV

I’m sure a lot of you will have things to say :). I’ve only just started using Particle DEV and there are a lot of good things about it as compared to the Web IDE.

However here are a few observations and things I don’t like or things I was expecting.

The way compile errors are displayed is very cumbersome

  • If one wants to navigate from error to error, there are just too many clicks. For example in Visual Studio (and Visual Studio code) one can simply hit the F8 key to go from compile error to error.
  • Can’t copy the error messages
  • Compile errors lines are not highlighted in the code editor
  • When I do click on an error in the popup dialog, it’s difficult to see where the cursor is exactly. The line that you were navigated to is not highlighted and the error is not selected or anything except for the gutter highlight.

Keyboard Shortcuts for Compile/Build and Upload

These shortcuts don’t work from the code editor. They only work if the focus is on the Tree View. So currently, that means one first has to do Atl + \``` and thenCtrl + RorCtrl + U` as the case may be.

Can’t copy from the Serial Monitor

Particle Dev forgets the last Selected Device. Unlike the Web IDE. Not sure what the reasoning behind this is.

Now my Questions:

  • Is there are way to compile and Flash locally? Say if my Photon is in listen mode, rather then use the CLI to flash the Photon, I’d like to be able to Flash the Photon using Particle DEV. I have a lot of Photons that are not connected to the Particle site
  • How about just Flash locally?
  • Is there a way to specify the name of the bin file rather than some random file name that changes each time? Maybe it should use the name of the project by default?
  • Can I Flash multiple Photons simiultaneously using Particle Dev?
2 Likes

I like DEV personally even though it’s not perfect.

You can compile locally easily if you add an Atom add on that adds a command line window to Atom so you can just use DEV to create and compile your code and then use the command line window to use the CLI to flash locally. That way it feels like everything is right there in the same program.

@ScruffR directed me to a popular command line window for Atom, it’s on this forum but I have not dug it up yet.

I wish DEV had the Signal feature like the Build IDE does so you can be sure which device your flashing.

1 Like

DEV does have this feature. I can’t tell you where exactly but I did see it.

What I meant was, click a button and it does what one would do using the CLI :slight_smile:

DEV normally still compiles in the cloud, so it isn’t exactly a ‘local compile’. Having it flash locally is something I’ve been pushing for lately, so I’m hoping that’ll become possible some time soon :slight_smile: no guarantees though.

To compile locally, you need install a local toolchain and build as outlined here
https://github.com/spark/firmware/blob/develop/README.md

Hi Shiv!

Thank you for this feedback! We’re aware of some of the things you mentioned and will try to fix them soon! Answering some of your questions:

The reason here is to make development on multiple devices running different firmware slightly easier. In Web IDE opening a second window and changing the default device will affect the first window as well. In the Local IDE we wanted to allow having multiple windows targeting different devices. With introduction of project.properties metadata file we wanted to add more information there like which device this project should target. This way you wouldn’t need to select the device manually.

We have an experimental particle-dev-local-compiler package which uses the same components our cloud compiler does but it’s not guaranteed to work in all cases.

That’s another long time request. We definitely want to have this feature at some point.

That’s interesting! We should add this to the project metadata as well

There’s no way of doing this in the Local IDE but I guess it’s doable with some script + our CLI. How many devices are we talking about here?

Last note: if it’s not too much trouble, could you fill the missing improvements you mentioned in our GitHub repo? It would help us greatly :slight_smile:

3 Likes

Thank you @ScruffR. I looked at that…seems way to complicated for me :slight_smile:

@suda,
Thank you for your extensive reply. Much appreciated.
I’ll post the missing improvements to the GitHub repo you mentioned.

On a slightly different note…
Have you all looked at using Visual Studio Code and plugging into it instead of the (raw) Atom. VS code is built on Atom, so you get all of the goodness of Atom (cross platform, plug-ins etc.). VS code, however supported compiling and debugging (with break points, locals, call stack, and a whole host more) C++ code. I think they’re using LLVM as well. It might be simpler to plug in to VS Code where you’ll get all of the VS Code goodness for free.

2 Likes

I’m not sure how important this is. I’m sure it is for some since it’s on your list of TODOs. However, there are same basic things I feel are missing in the “IDE” (if we can call it that, since there is no debugger).
Code Completion
Parameter Completion
Highlighting of Compiler error line(s) - Even the Arduino IDE does this
Clang-tidy and Clang format

Of course Debugging support over almost everything else would be huge.

Done.

1 Like

I believe they also use Electron as runtime but it isn’t based on Atom itself. After all Atom’s community seems to be more vibrant and the existence of things like Platform IO opens the doors for mutual compatibility.

As a side note: I’ve been using po-util by @nrobinson2000 for local development of a recent Electron project. It’s kinda awesome.

I grew really tired of Particle DEV’s bugs and library management after a while. I do my editing in Atom and VS and debugging and flashing with Po in bash. If you use linux or mac, definitely worth checking out. Obviously this is not solving the true IDE experience that Particle DEV is meant to deliver…

1 Like

hey, in case you are interested in using VS Code, you could do it like this.
Cheers!
Gustavo.

1 Like