Posted By: Paul FLusk | Jun 22nd @ 3:43 PM
page 1 of 2
Comments: 25 | Views: 1233

Right Microsoft, first post here.. I am a fairly new c# programmer who has self-taught over the past 2-3 years.. (i know..  i know... work long hours and only get to code in free time).

 

I am fairly complicit with using all of the C# features up to 2.0 and can use some of the labda function/anon delegate c# 3.5 stuff. Thats for the background.  Now, to my question.

 

Why, Oh why, do microsoft not release a SUPPORTED .net object oriented Bluetooth API or at least support manufacturers that may wish to provide an API with their product?  I dont particularly want to go down the unmanaged code route, as I was hoping that .net would at some stage develop a decent Bluetooth API... PARTICULARLY for .net compact framework.

 

Same with wireless support...  Why no wireless API?!?!? 

 

.net has the potential to become the modern pocket computer programming language of choice, yet Java and Coffeebeans offer much more functionality...

 

So, whats the official line microsoft? Are there competition issues wrt smaller developers producing rediculously overpriced APIs that the home developr cannot afford? Or is such a change to the framework in the pipeline?  I would MUCH prefer simple Bluetooth and Wireless functionality as opposed to the largely abstract changes that have been brought in sharp 4.0...

I DONT WANT TO HAVE TO USE PINVOKE INSIDE AN OO MANAGED PROGRAMMING LANGUAGE!

 

Regards,

 

Paul Flusk

While I can't speak with any specific inside knowledge (as I have none on this subject)... I would suspect that the reason is that there are simply too many Win32 API’s for Microsoft or anyone else to wrap in a reasonable amount of time. More so the designing and implementation of the wrappers would take even more time so as to make sure they behave in a more .NET sort of way.

Sure, they could take a year or two off from working on the next major version and all of the new stuff it brings to fill this gap... or they could do what they’ve traditionally done and leave niches open for 3rd parties to fill through either paid or free solutions.

I agree that it does kinda stink when you find a 3rd party selling a library that does something you want to do in your own app... and in such a case you’ve got a choice, which is more valuable, your time or your money? Because if you don't have the money, you can usually build your own wrapper yourself with a bit of time and skill... and chances are depending on the APIs you are dealing with, you’ll probably have plenty of snippets to get you pretty far along.

When it comes to Bluetooth support... I'd suggest taking a look at the Coding 4 Fun Development Kit, you might also take a look at the Managed Wifi API project over on CodePlex.

> I DONT WANT TO HAVE TO USE PINVOKE INSIDE AN OO MANAGED PROGRAMMING LANGUAGE!

why not, do you prefer the API to do that for you? it's not that they can't put this or that in there, it's just not possible to put it all in

Bass
Bass
www.s​preadfirefox.c​om/5years/

There isn't much of a open source community around .NET, Java is much better in this regard, I think. It sucks because I very much prefer C# as a language to Java but most of the libraries I want to use are Java-based.

blowdart
blowdart
Peek-a-boo

I DONT WANT TO HAVE TO USE PINVOKE INSIDE AN OO MANAGED PROGRAMMING LANGUAGE!


What do you think the libraries will end up doing? Bluetooth is an OS function, as is Wireless, any library you will find will have to go to an API call level via pinvoke anyway.

(As for bluetooth on the compact framework, well the compact framework is just that - compact)

stevo_
stevo_
Human after all

Eh? I think you need to look around, .NET has a sizable 'open source' community, the amount of projects people do and freely serve them up on codeplex (etc) is really good, before that people used to use codeproject (although personally that tends to make me shudder)..

It might not be as big as java (I don't know), but it certainly has a good open community.. especially on blogging where concepts are shared and discussed which are just as powerful to discover and participate in as a finished 'product'..

Also, pinokve isn't always do'able depending on your environment, but if you can I don't think its such a big deal to write a native wrapper and then a more .net style oo around that.

sashman
sashman
more this than that

you might take a look at franson's bluetools, for .net 2.0. It also includes compact framework binaries.

Bass
Bass
www.s​preadfirefox.c​om/5years/

I am in a serious predictment. I want to use this: http://hadoop.apache.org/core/

There really isn't any high quality open source .NET alternatives to this.


I do NOT want to use Java, this will make my life harder. But also not using Hadoop will make life harder. Why oh why can't someone make my life easier? Sad

Bass
Bass
www.s​preadfirefox.c​om/5years/

I'll take a look at that.

Presumably because you count count the number of people with a reasonable sized Windows Compute Cluster, who aren't using it to run pre-built software, on one hand with fingers to spare. Generally, if your planning to run code across a cluster, you're going to be writing for whatever is available on it rather than picking your personal favorite libraries and packages, because it's a lot of work upgrading one and maintaining stability.

Bass
Bass
www.s​preadfirefox.c​om/5years/

Basically what you are saying is if I want to write clusterable software, forget about using .NET? I'm sorry, I'm not familar with Java and I don't want to relearn a whole new BCL and language. But I need clustering. I need it. I don't want to have to reimplement Hadoop, poorly. So I am in a f**king prediciment right now and it's quite upsetting.


Sven once said he uses Mono on a cluster. Maybe he knows a good way to accomplish this..

You may want to look in to Windows HPC Server 2008, not just because it's made by some folks down the hall from me... but also because it supports .NET... heck, you can even write your app(s) in F# for it if you want.

Bass
Bass
www.s​preadfirefox.c​om/5years/

Not interested in an OS, interested in a library. Must be cross platform (Mono/Linux+OS X, Windows/.NET)

Why so? More so... why not take a look at all of the libraries and runtimes it comes with.

Bass
Bass
www.s​preadfirefox.c​om/5years/

Because a large percentage of my customer base do not use Windows Server, and I will not make their operating system choices for them.

Bass
Bass
www.s​preadfirefox.c​om/5years/

I have given up on clustering for now. Maybe int he future someone will decide to make a open source, cross platform, fault tolerent clustering solution for .NET. Probably won't be me though, too big of a project. MICROSOFT ARE YOU HEARING THIS?

>MICROSOFT ARE YOU HEARING THIS?

no Big Smile

And this is what people mean about cross-platform being expensive, every additional platform you want to be able to target increases complexity and decreases the options available to you. HPC is pretty specialised stuff as it is, Hadoop really only works with *nix based clusters (which as of today are easily the majority). There are solutions like Windows HPC Server with something like MPI.Net but don't expect a generic one-size fits all solution anywhere, HPC clusters are just too specialized for there to be an easy "it just works" solution to all of them.

If clustering is an important feature, I'd have to say you'd be better going with Hadoop right now. As much as I dislike Java, it isn't that different to C# and given that, odds are, you'll be running on a Linux platform it makes more sense than mono right now - given that there aren't many mature .NET clustering solutions as it is, getting one running on mono is an uphill struggle that makes very little sense.

Sven Groot
Sven Groot
My name has 9 letters. Coincidence? I think not...

Technically you can get Hadoop working on Windows. You need a bash processor and an ssh server (e.g. cygwin) but it works. I think the guys behind Hadoop support this scenario for testing/debugging purposes, but for full-blown clusters it's not officially supported.

My PhD research is on data-intentive clustering solutions like Hadoop. I have actually written a somewhat similar clustering system in .Net, which is designed to run on Linux with Mono. However, before Bass gets his hopes up, this system is not even close to being usable by anyone but me, and that isn't likely to change anytime soon, if ever.

DryadLINQ from Microsoft Research allows you to run .Net programs using LINQ on a cluster, but it's not a published application, though MS apparently uses it internally in production environments.

Maddus Mattus
Maddus Mattus
Do, or do not. There is no try. - Yoda

http://code.msdn.microsoft.com/WindowsAPICodePack

Check it out! Maybe some good examples in there!

Bass
Bass
www.s​preadfirefox.c​om/5years/

This is a client server archecture, and I have very little against Java on the server, but we all know Java sucks on the client. (Eg: Swing, srsly).


So I could make the server software Java based and the client .NET based, but!!! my application is _extremely_ modular. It's basically a small core and a collection of plugins that build on that core, true for both the client software and server software. Some of these plugins are for perf reasons bindable to BOTH client and server. So using two languages complicates things like crazy, obviousally. Because I couldn't make plugins that bind in two both, and people getting this software will have to condend with the Java Plugin Framework and Mono.Addins.


I am just going to leave clustering for another day. Which means my program will be gimped for many real purposes (large datasets are not uncommon). This is hard any way you look at it.


It's just upsetting because the kind of calculations I am doing were almost designed for MapReduce. It's almost scary. Hadoop would be a perfect fit.

Yeah, swings and roundabouts at that point, as they say. To be honest, the best choice at that point probably depends on the target audience. If its just that they might want to do clustering at some point in time, then go with a richer client. If they are likely to want to do clustering now and are liable to have access to the hardware to do it, go for Java/Hadoop and accept the v1 UI will suck and the development language will be a bit nasty. Getting the results as quickly as they can is far more likely to impress than a pretty UI and they probably couldn't care less if your development environment sucks.

Dan
Dan

Hey Paul,

Doug Handler put together the Bluetooth wrapper that Dahat linked (Coding4Fun Development Kit). We also have a cool Coding4Fun article with full details - BlueBoss Bluetooth Proximity Detection that will tell you when someone's Bluetooth cell phone is nearby (so your manager can't sneak up on you Smiley ). Is there a specific bug or reason you can't use the Bluetooth wrapper we've built?

BlueBoss Screenshot

   

page 1 of 2
Comments: 25 | Views: 1233
Microsoft Communities