I apologize in advance if this reads strangely...my thought process is very "bouncy" and tends to jump around between seemingly random topics. If anything seems muddled/unclear just point it out and I'll try to clarify
From what I've seen, the majority of the programmable microcontroller crowd are programmers (often with little/no experience working with electronics) who wanted to make their code do "real" things; things that they could see with their eyes e.g. robots. I come from the other side of the coin - as a guitarist and composer of electronic music I have a lot of experience with analog electronics and other hardware, but not so much on the software side. I've been trying to come up with ideas for projects where I can effectively learn .NETMF while making something useful...I'm one of those people that almost immediately get bored with "hello world" type exercises that outline concepts but in the end don't actually do anything useful. This idea just popped into my head on the way home from getting my car inspected and has me excited enough to actually work on it I have tons of other ideas but they generally require a significant financial investment that I currently can't afford...this is something that I can not only do for free, but that I can apply to future projects.
I'd like to create a library specifically for people like me who don't have a background in programming. For me, absolutely nothing is more fun than debugging...taking something that doesn't work and making it work is something I could stay up doing for days straight (and have done many times ). Most people don't share my enthusiasm for the process and merely find it obnoxious and frustrating. They don't like tracing wires, slogging through log files and parsing data trying to find what went wrong; they just want it to work. Even if you do enjoy it, why wouldn't you want a library that makes it faster and easier?
The goal of this library (as with any library, I suppose) would be to take a lot of the "grunt work" out of the process of writing code to record and analyze data. As an example, say you wanted to make a simple device that rings a bell when someone comes in the door (like at every store ever). This library would handle watching for changes, recording them, and also some basic functions for retrieving and analyzing data without having to actually take the device offline and plug it into your computer. For instance, you could see how many times the sensor has been triggered since the device was last turned on, how many people have passed through in a given time period, etc. Combined with a simple touchscreen interface on the device, you could have easy, immediate access to metrics like what days/times of day are the most active and require additional staffing, or exactly what times the guy who stole something went in and out so you know which part of the CCTV tape to look at. Developers would be able to implement this functionality quickly and efficiently with simple, intuitive commands/methods. This makes their code shorter and cleaner, and less code means less time spent searching for bugs that need to be squished, which means more time available for adding and improving features. Implemented properly, I think it would be one of those libraries that you never knew you even wanted but once you've used it you wonder how you ever got anything done without it.
[*]Ability to log only desired events - essentially the ability to filter only the data you need. This would be useful for everything from being a debugging tool (have a nice concise error log that could help you find the problem without needing to dig through a giant dump file) to being the entire purpose of the device (tracking and logging how some variable changes over time)
[*]Ability to access records by various criteria - the state of a variable at a certain time, or all the times a variable had a certain value
[*]Basic analysis of data without the need for third-party software - combined with a simple interface, the end user would be able to check things like the average value of a variable over a given period of time, how many times that variable changed, the min/max values for a time period, the average magnitude of a change
I've only had this idea for a grand total of about two hours but I think that's a pretty expansive feature set and a good initial goal. I think the real challenge will be getting this stuff in a package that's small and efficient enough that it could be used on any .NETMF platform in any application.
Right now I'm obviously still in the very early stages of design, trying to figure out exactly what this is going to do. I'm posting this thread in hopes of getting a brainstorming session where I can better nail down the requirements, so I'm asking you guys: what kind of features would you want in a library like this? What are the biggest, most annoying/frustrating/boring problems in your development process that you hate dealing with? What kinds of features would you want in a library like this?