Overview of Coding skills

I wonder if anyone could provide a very high level roadmap for creating a simple photon based product ready to use by average Joe (the end user). I mean in terms of the programming skills required and the steps. Perhaps as a flow diagram? I.e. maybe the first thing is writing your device application in wiring / C++ (so I need a good embedded programmer). If for example I want to create a cross platform app in Xamarin to target android and ios (I’ll need a mobile app designer who specialises is this). Or is there a strong reason why it would it be better to develop the apps individually in native SDKs? In either case, what other elements are required to glue the whole thing together, for example how do node.js, javascript (?), JSON, HTTP, REST and anything I’ve missed all fit in.

To frame the question a bit better, imagine you had to assemble a crack team of programmers, what team members would you need? The end goal is a simple product that we give to the end user so they can set it up on their own, without writing any code, or installing any drivers, or doing anything overly technical. We’re talking Joe the consumer who can type in his wifi credentials; and phone number for example into the app. Later when the device triggers, he receives a text message or the app fires up to alert him: “Hey Joe, your washing machine has finished / or your compost bin is full or whatever”. And maybe shows him a few graphs in the app.

Many thanks in advance.

Al.

1 Like

Well, I already kinda build the Xamarin app (not released yet) it’s the same as my android version which is released. It takes your variables and functions of all your devices linked to your account and builds a usable UI around it, it only needs your particle cloud credentials.Using the SDK I could modify/expand my app to even program the particle devices itself like: D0 is input of garage-sensor and D1 controls the switch to open it just by selecting something from a listbox or so. So to answer your question: you just need one willing programmer with some spare time… :slight_smile: Nothing you say/expect raises questions with me as how to implement them.

1 Like

That in part somewhat depends on the scope of your project and the timescale. As @vibrocil points out, if you keep things simple and one person has the time, one person can do it.

There will be supporters for both Xamarin and native app development some due to preference or prejudice and some to features, it might be best to let your app developer make that choice for you.

An embedded specialist is certainly a good idea ideally one who has some skills they can transfer to other parts of the project as the firmware takes shape.

You need to establish what else your product needs.
If your storing lots data somewhere, then someone who knows databases could be useful.
If your product is going to use Two-legged Authentication as described here https://docs.particle.io/guide/how-to-build-a-product/authentication/ then you need someone who can design and implement a Webservice that handles the account details and do it properly. This person will probably be able to handle Javascript and all the other API/UI technologies your frontend and backend might need.
You don’t really need an in depth understanding of REST, JSON etc to follow the documentation of how they are implemented but having that background could help with how quickly things get up and running.

1 Like

Thanks @Viscacha and @vibrocil . Your comments are very helpful.

To take it even further, what I would really love to see is a comprehensive picture of the range of applicable software skills and languages involved in creating and deploying a finished product in this ecosystem, for a range of hypothetical product types. Not focussing on an individual product which will require a subset of the many skills. But rather a “big picture” view at the technology level, drilling down to the underlying programming languages (for example, not just Xamarin, but Xamarin {XAML & C++ & WPF} and Android {Java, XML …}! And don’t scrimp on the detail about what part of the task JSON (for example) handles for you, or on alternatives where they exist. I know I’m asking for the moon on a stick, but hey, I am confident that this sort of top level view would be very interesting to many people; not just me???

If people want to contribute their 10 cents (and don’t hold back on detail), I would be more than happy to collate it into a document and/or flow diagram, tart it up and post it back for anyone who is interested (and review, updates)!

Cheers,

Al.

Hi @vibrocil
So, I’ve been doing a bit of research, and I am interested in talking a closer look at Xamarin. May I ask if your project is shared anywhere? If so, I’d love to learn from it. There are plenty of Android examples out there, but very few Xamarin. Hope you don’t mind me asking.

Don’t mind you asking, but I’m afraid the answer is no. I’m currently on another project (which is almost finished) and than I am back on this. Though mine will be a paying app (€1). I already support using all functions of all the devices linked to your particle account and showing all the variables. Notifications are implemented on Windows, android and IOS and configurable, eg. you don’t want notification if you open your own garage door, but if someone else opens it. I’ve also chosen to let the application run in the background for better performance and faster response. The functionality to add custom buttons and variables which would automatically flash your device with modified firmware is already being prepared thought it might not be available in the first versions. Right now I’m doing some Alpha testing on android, windows and the IOS emulator and all seems to work as expected. I’ve taken a look at the Apple Homekit app and this is sort of the thing I would like to achieve (interface way definitively) In my experience making something opensource takes away some value of the code you worked on for a certain amount of apps, never fun to see copies of your work showing up containing Adds or likewise… If you have a whole other idea, project or vision, feel free to contact me.

If I could add my two cents here, my YouTube channel goes through creating Particle applications in a few languages. You can focus on the videos where I code in the Particle’s native language for device functionality as well as the web development Particle videos I have that integrate with AWS and Nodejs. You can use jQuery mobile and PhoneGap to build the web app for iOS and Androids. My future business will likely center around microcontrollers

https://www.youtube.com/channel/UCDHHlEzX-r9O_cXGC9pG2WQ/videos

Hey @monkey,

here are my thoughts:

App

For an app on a device/phone, depending on the type of app you want, you have options like Native, Hybrid or cross-platform, all with ups and downs.
Here’s a chart, that I may not fully agree with, but helps understanding:


that image is from this site.

My choice today is the Ionic Framework.
So in this case, one would need HTML, CSS and Typescript knowledge.

#Website
Here it depends again what kind of website you want. Most probably one would need HTML, CSS and Javascript knowledge.
Since Ionic can be used to create websites too, it would be an option.
If this case, one would need HTML, CSS and Typescript knowledge.
You also need to run this website somewhere, which leads to the following section.

#Cloud infrastructure
Depending on the needs of the product, it may require some database, API and hosting where to run cloud processes and data storage.
Here, you would need someone with knowledge on a cloud like Azure, Google or Amazon.
This would probably involve managing servers, VMs, databases (SQL, Firebase?), APIs (C#?) and other things.

It could very well be that the product at hand is fine with features offered by IoT sites like Ubidots, Losant or Cayenne. In this case you could save on development time since you would need to know about the IoT platform, and not the specifics as when you run your own infrastructure on Google, Azure or AWS.

#Firmware
If you are going with Particle, you need someone that knows about embedded C and the Wiring language.

#Hardware
You need someone that has knowledge in electronics, PCB design, component placement, RF, antennas, etc.

#Packaging
You need some design here so your product (packaging?) is appealing.

#Logistics
There was a blog post about this from Particle that I cannot seem to find now. It described how you can scale from a prototype to a production level.

#Making it all happen
You need luck (at least a little bit) and someone with knowledge on how to glue these things (and the unexpected!) all together.

I’m sure I missed so many other details…
Gustavo.

1 Like

I'm interested! :wink:

@monkey

I’m about to bring a product to market – https://brewskey.com

For my setup I have the following

  • C/C++ firmware for a P1 (written by me). I would either have someone who specializes in c/c++ or your electrical engineer do this work.
  • Electrical Engineer to bring my prototype to an actual PCB. This was super important
  • C# ASP.Net website with data model for all my business logic. Also me
  • Node/React website for admin dashboard. I hired a few JS developers to write this as there are a ton of JS developers these days
  • Ionic mobile app for Android/iOS/Windows Phone. I will be migrating this to React native as it has superior performance. I would recommend Ionic if you just want to get something out the door – you can make apps much faster with this than doing native/xamarin.
  • spark-server – I forked the old version and have put a ton of money and hours into improving the local cloud.

As others have already posted, it really depends on your budget and requirements for who you should hire. If it were me, I’d do everything in a Node server and a JS framework for the mobile app. You can get something out the door quickly with that. You could then re-evaluate things if your product is successful and you need to scale.

3 Likes

@vibrocil Not a problem. Hope it goes well. Will be sure to buy your app when it does come out. Sounds very useful.

@Brewskey @demented @gusgonnet Thanks guys. Invaluable insights.

Kai, I’ve already watched a few of your you tube videos by the way!