# My initial impressions on Particle DEV

**URL:** <https://community.particle.io/t/my-initial-impressions-on-particle-dev/35534>\
**Category:** General\
**Created:** [August 22, 2017, 9:11pm UTC](https://community.particle.io/t/my-initial-impressions-on-particle-dev/35534 "2017-08-22T21:11:32Z")\
**Posts on this page:** 12\
**Page:** 1

<div class="post-metadata">

**Author:** ![shiv](https://sea2.discourse-cdn.com/flex026/user_avatar/community.particle.io/shiv/32/9531_2.png) [@shiv](https://community.particle.io/u/shiv)\
**Post date:** [August 22, 2017, 9:11pm UTC](https://community.particle.io/t/my-initial-impressions-on-particle-dev/35534/1 "2017-08-22T21:11:32Z")

</div>

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 then `Ctrl + R`or`Ctrl + 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?

---

<div class="post-metadata">

**Author:** ![RWB](https://sea2.discourse-cdn.com/flex026/user_avatar/community.particle.io/rwb/32/22599_2.png) [@RWB](https://community.particle.io/u/RWB)\
**Post date:** [August 22, 2017, 9:48pm UTC](https://community.particle.io/t/my-initial-impressions-on-particle-dev/35534/2 "2017-08-22T21:48:23Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![shiv](https://sea2.discourse-cdn.com/flex026/user_avatar/community.particle.io/shiv/32/9531_2.png) [@shiv](https://community.particle.io/u/shiv)\
**Post date:** [August 22, 2017, 10:33pm UTC](https://community.particle.io/t/my-initial-impressions-on-particle-dev/35534/3 "2017-08-22T22:33:15Z")

</div>

> [@RWB](#):
>
> I wish DEV had the Signal feature like the Build IDE does so you can be sure which device your flashing.

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

> [@RWB](#):
>
> You can compile locally easily

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

---

<div class="post-metadata">

**Author:** ![Moors7](https://sea2.discourse-cdn.com/flex026/user_avatar/community.particle.io/moors7/32/588_2.png) [@Moors7](https://community.particle.io/u/Moors7)\
**Post date:** [August 22, 2017, 10:57pm UTC](https://community.particle.io/t/my-initial-impressions-on-particle-dev/35534/4 "2017-08-22T22:57:40Z")

</div>

> [@RWB](#):
>
> You can compile locally easily

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 🙂 no guarantees though.

---

<div class="post-metadata">

**Author:** ![ScruffR](https://sea2.discourse-cdn.com/flex026/user_avatar/community.particle.io/scruffr/32/6952_2.png) [@ScruffR](https://community.particle.io/u/ScruffR)\
**Post date:** [August 23, 2017, 5:05am UTC](https://community.particle.io/t/my-initial-impressions-on-particle-dev/35534/5 "2017-08-23T05:05:49Z")

</div>

> [@shiv](#):
>
> Is there are way to compile and Flash locally?

To compile locally, you need install a _local toolchain_ and build as outlined here  
[https://github.com/spark/firmware/blob/develop/README.md](https://github.com/spark/firmware/blob/develop/README.md)

---

<div class="post-metadata">

**Author:** ![suda](https://sea2.discourse-cdn.com/flex026/user_avatar/community.particle.io/suda/32/18449_2.png) [@suda](https://community.particle.io/u/suda)\
**Post date:** [August 23, 2017, 12:12pm UTC](https://community.particle.io/t/my-initial-impressions-on-particle-dev/35534/6 "2017-08-23T12:12:04Z")

</div>

Hi Shiv!

Thank you for this feedback! We're [aware of some of the things](https://github.com/spark/particle-dev/issues) you mentioned and will try to fix them soon! Answering some of your questions:

> [@shiv](#):
>
> Particle Dev forgets the last Selected Device. Unlike the Web IDE. Not sure what the reasoning behind this is.

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.

> [@shiv](#):
>
> Is there are way to compile [...] locally

We have an experimental [`particle-dev-local-compiler` package](https://atom.io/packages/particle-dev-local-compiler) which uses the same components our cloud compiler does but it's not guaranteed to work in all cases.

> [@shiv](#):
>
> How about just Flash locally?

That's [another long time request](https://github.com/spark/particle-dev/issues/6). We definitely want to have this feature at some point.

> [@shiv](#):
>
> 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?

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

> [@shiv](#):
>
> Can I Flash multiple Photons simiultaneously using Particle Dev?

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](https://github.com/spark/particle-dev/issues)? It would help us greatly 🙂

---

<div class="post-metadata">

**Author:** ![shiv](https://sea2.discourse-cdn.com/flex026/user_avatar/community.particle.io/shiv/32/9531_2.png) [@shiv](https://community.particle.io/u/shiv)\
**Post date:** [August 23, 2017, 7:28pm UTC](https://community.particle.io/t/my-initial-impressions-on-particle-dev/35534/7 "2017-08-23T19:28:33Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![shiv](https://sea2.discourse-cdn.com/flex026/user_avatar/community.particle.io/shiv/32/9531_2.png) [@shiv](https://community.particle.io/u/shiv)\
**Post date:** [August 23, 2017, 7:33pm UTC](https://community.particle.io/t/my-initial-impressions-on-particle-dev/35534/8 "2017-08-23T19:33:56Z")

</div>

@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.

---

<div class="post-metadata">

**Author:** ![shiv](https://sea2.discourse-cdn.com/flex026/user_avatar/community.particle.io/shiv/32/9531_2.png) [@shiv](https://community.particle.io/u/shiv)\
**Post date:** [August 23, 2017, 7:53pm UTC](https://community.particle.io/t/my-initial-impressions-on-particle-dev/35534/9 "2017-08-23T19:53:35Z")

</div>

> [@suda](#):
>
> The reason here is to make development on multiple devices running different firmware slightly easier.

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.

> [@suda](#):
>
> missing improvements you mentioned in our GitHub repo? It would help us greatly 🙂

Done.

---

<div class="post-metadata">

**Author:** ![suda](https://sea2.discourse-cdn.com/flex026/user_avatar/community.particle.io/suda/32/18449_2.png) [@suda](https://community.particle.io/u/suda)\
**Post date:** [August 24, 2017, 12:25pm UTC](https://community.particle.io/t/my-initial-impressions-on-particle-dev/35534/10 "2017-08-24T12:25:14Z")

</div>

> [@shiv](#):
>
> VS code is built on Atom

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](http://platformio.org/) opens the doors for mutual compatibility.

---

<div class="post-metadata">

**Author:** ![zhirschtritt](https://avatars.discourse-cdn.com/v4/letter/z/e274bd/32.png) [@zhirschtritt](https://community.particle.io/u/zhirschtritt)\
**Post date:** [August 28, 2017, 2:43pm UTC](https://community.particle.io/t/my-initial-impressions-on-particle-dev/35534/11 "2017-08-28T14:43:50Z")

</div>

As a side note: I’ve been using [po-util](http://po-util.com) 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…

---

<div class="post-metadata">

**Author:** ![gusgonnet](https://sea2.discourse-cdn.com/flex026/user_avatar/community.particle.io/gusgonnet/32/27491_2.png) [@gusgonnet](https://community.particle.io/u/gusgonnet)\
**Post date:** [August 28, 2017, 8:08pm UTC](https://community.particle.io/t/my-initial-impressions-on-particle-dev/35534/12 "2017-08-28T20:08:01Z")

</div>

> [@shiv](#):
>
> Have you all looked at using Visual Studio Code and plugging into it instead of the (raw) Atom.

hey, in case you are interested in using VS Code, [you could do it like this](https://community.particle.io/t/use-visual-studio-code-for-your-particle-development-needs/26095).  
Cheers!  
Gustavo.
