I have a program that I wrote in C# using Visual Studio 2010 and .NET 4.0 that I need to add features to but am limited in time. Therefore I need one of you very talanted people to assist.
I am a professional coder myself so I *DO* know what I am doing and what you will be doing. Please do not exaggerate terms or timescales as I can see past that and this work may lead to more in the future depending on the quality.
This will require an NDA before source code is released. I am not picky about country of work, I do not care where you code. I am generally available for emails 18-20 hours a day and respond immediately to any questions.
Now what you will be doing:
This program in its most simple sense controls a hardware board I make. This revision of the software will be easier to use then the current generation. I have been working on it for a long time and it is usable but now I need to add features. All the "back bone" is there and can be leveraged by you. What I am in need of is additions to the configuration section of the program. Everything that can be done in the program should be configurable through the GUI. The GUI is not WinForms, it is OpenGL. I have made a simple menu class that works as well as pop ups and simple text routines. This is enough to do everything but can definitely be built upon.
Things I want it to do for this project (Don't worry if you don't understand the overall how, but just know what):
1) A way to edit a GUI object by right clicking and changing any of the configurable options on it. Currently the find alogorithm works for a single "page" because I can drag and move it around which saves it. I need it to detect that it is a button that changes digital outputs and then give options like change which output, or change the duty cycle or things like that. Or if it is a variable label then change which variable it points to and so on. Basically editible configuration.
2) Need more "macros" or "widgets" So instead of buttons or labels, I need things like a) gauges b) dials c) bars and indicators. All of these things should be very simple to implement and will require crude graphics skills. I have photoshop files for all the graphics I am using, and you should be able to add basic things. Or if you cannot draw then a simple placeholder sketch is OK and I will put that in later.
3) A way to make buttons, labels, or any of the above widgets use any image file. I have a way of reading in images from a disk and resource file into OpenGL and display them properly. However I do not have a "file browser" type control where the user can open a menu system to select an image and use that for images. This needs to be done.
4) Change the configurator basic options. We will take over one keyboard key that then options for the configurator can be used such as grid size or enable snap to grid, and that sort of thing.
5) Finish implementing pages. Currently the variable exists, but it is not coded to be used I don't believe. So if page 1, then only show things on page 1. If page 2 then only show things on page 2. And then a small method that changes pages.
6) Create a graphical "widget programmer" that allows users to drag and drop various items to create a user defined method. I have done this in the last iteration of the program but it was not very intuitive. We will brainstorm together to make something more friendly, and you will implement it. So the user can make a function that takes variable X and variable Y and does some math and outputs to variable Z. All the inputs, outputs, and math are already implemented because it will be compilable C# that is generated and compiled/executed on the fly. The part that needs to be done is somehow display variables and math symbols and some way of interfacing them. This will probably be the toughest and there are more things under this but once a generic way of showing all this to the user is made it should fall together rather easily.
The underlying program is actually relatively complex and allows for anything to be done and compiled on the fly. A lot of reflection and dynamics are used to achieve this. Knowledge of this is a plus. I will give almost free reign to the configuration side of the code, you can move things around and refactor as you see fit. However the base part of the program please do not touch unless you ask me first. If it is a good edit then we will make it. Some things (like the page) will require editing this core code. My goal is not to detroy the code I have worked so hard on implementing.
Things you should have:
Visual Studio 2010
Good programming skills
You can be 15 years old or 150 years old, and from any country in the world with internet. If you do this well, then this will slowly transfer to being your "baby" and more pay will follow. I have many jobs and this is high priority but I have higher priority things to do myself. This job will more than likely grow and/or evolve as it progresses. Please be open to this. The 6 things I outlined above are somewhat general and sort of incorporate a few other things by default. I expect this work will take a couple weeks of dedicated time to actually figure out what the heck I am doing and then how you will do it. I know it is hard to figure out what another coder was doing and then adapt it, but it will need to be done. If I had a clone, I would expect it only to take a week or so of work. But that learning curve will need to be factored in.
I can provide you a link to the current release exe if requested so you can play with what is there already. I will require an NDA before I give over the source. This will be open source eventually but not now.