I'm looking for a robust and efficient method of creating any kind of imaginable control to use with a LabVIEW project. I'm curious what you've tried and what the pros and cons are. I myself have never used LabVIEW, but have been approached to write controls for it based on my knowledge of other things (C#, HTML5, Flash, Silverlight, etc).
It appears to me as though this kind of thing has been or can be done in .NET, Flash, WebGL, Qt, Silverlight, and maybe some others as well. Ideally, we don't want to have to write any code twice, so platform flexibility is a great thing, which makes me lean toward a web solution. But ease of implementation is important as well, and I would think a web solution would require some extensive web services parsing and programming every time a control is going to be used. But I could be wrong. An eye on the future is also important. If something would be a great solution today, but probably worthless in 2 years, no point in bringing it up.
(Please realize that I am NOT simply asking how to change the colors of (customize) a LabVIEW control, nor am I interested in xControls as the final solution as apparently they aren't robust enough.)
Thanks in advance!
I am aware that this probably doesn't answer your question, but if you have access to LabVIEW, you could analyse the "Military" Theme Custom Control Suite, and look at examples on the UI Interest Group and LabVIEW UI Tips and Tricks. That's probably the best you could do with LabVIEW.
.NET is probably your best bet, LabVIEW supports .net controls, so you can define the UI and reuse your .net code.
I have heard rumours that the new LabVIEW version (2013 due in September) will use .NET 4 libraries as the default instead of the current 2, so you might want to keep that in mind.
I wouldn't ditch XControls that easily if I was your company (I can understand it's not your cup of tea).
Related
I have been reading a little on Monocross and it seems to support a model very similar to ASP.NET MVC. It can use HTML5/CSS/Javascript as the UI.
Looking initially directly at MonoDroid and MonoTouch, it encourages the developers to develop with controls native to the device. Am I correct in saying the Monocross supports a HTML/CSS/Javascript with HTTP/GET/POST on all devices? MonoDroid/MonoTouch supports cross platform development all the way up to the UI, but this approach seems like I get theoretically get 100% (or near) code reuse. Is this correct?
MonoCross is a very thin layer on top of Xamarin's code. (See that Xamarin sticker in the top right corner?)
They offer to reuse the same MVC code across different implementations, such as MonoTouch and MonoDroid.
Abstracting away MVC works for small samples but these guys seem to religiously believe in 100% code sharing—something I don't subscribe to. It is a beautiful concept, but it never worked in the real life.
Making great apps is hard, but I don't think it's hard because database technologies differ, or because you have to write similar classes for ASP .NET MVC, MonoTouch or MonoDroid. If that was the real challenge with software development, we'd have solved it many years ago.
MonoCross seems to be an exercise in premature generalisation—something that all programmers love.
But abstraction isn't free. Consider this anecdote by Eric Gunnerson:
I've know teams where this snowballed - they ended up with a "swiss army knife" component that was used in a lot of different scenarios. And like many components that do a lot, it was big, complex, and had a lot of hard-to-understand behavior. But developing it was an interesting technical challenge for the developers involved (read that as "fun and good for their careers"...)
The problem came when the team found that one operation took about 4 times as long as it should. But because of the generalized nature of the component doing the operation, there was no easy way to optimize it.
If the operation had been developed from scratch without using the "uber-component", there would have been several easy optimization approaches to take. But none of those would work on the generalized component, because you couldn't just implement an optimization in one scenario - it would have to work for all scenarios. You couldn't afford the dev cost to make it work everywhere, and in this case, even if you could, it would cause performance to regress in other scenarios.
(Emphasis is mine.)
While MonoCross developers seem enthusiastic about it, there doesn't seem to be a community around the project, and I couldn't find a single app built on top of iFactr or MonoCross.
That being said, I don't think they offer anything valuable over MonoTouch or MonoDroid.
On a sidenote, Miguel approves :-).
I'm a newbie to web development (although I have built basic sites long ago using HTML, CSS, hacked various CMS's etc) and was wondering what language and associated framework is best to go with for a data driven web service with a dynamic UI (i.e. AJAX-ey effects) which I hope will scale at some stage in the future. I am fairly proficient in iOS development so am comfortable with Object Orientated development and the Model View Controller paradigm. Any advice and/or thoughts would be greatly appreciated.
Don't learn a language by learning a framework. Do basic non-framework programming in your language of choice first. THEN jump into the framework. Otherwise you're laboring under the double burden of unfamiliar language AND unfamiliar environment.
Basically, learn to drive first, THEN pimp out your ride.
If you're familiar with the Cocoa libraries, you might consider using Sproutcore which has a design that is highly informed by Cocoa. It also has the added bonus of being rather forward looking (aka: the new hotness) and is at the point of becoming a serious tool (ie: Apple uses it for mobile.me ) but still new enough that it is under active development by excited, passionate and skilled developers.
Also, as an aside to everyone advocating learning the basics. For many of us, the best way to learn something well is to have a real project and learn by building. Sproutcore seems like a good option for someone familiar with iOS development.
The easiest framework in my opinion is CodeIgniter and the docs are fantastic but this is really a subjective question.
I agree with #Marc B, first master your language, then you could start using a framework.
as a language the two obvious choices are either asp.net, or php, both have their advantages and disadvantages... you have some reading to do, a simple google search will provide you with plenty of info. there is no one size fits all in this department. look at some code examples, see what you feel comfortable about.
I'm trying to get a few web development ideas off the ground. Unfortunately I will be the only developer, so I'm focusing on getting a good debuggable, testable setup going that I can develop applications rapidly with.
Which languages, development styles and frameworks would you recommend for rapid development? Last time I checked RoR was the next big thing but that was a while back.
Ruby on Rails is a good choice for rapid prototyping. It's simple, clean and easily learned. PHP also offers a fairly low learning curve and a wide variety of built-in functionality for accomplishing most tasks. Both languages have their shortcomings, but on small-team projects for low to moderate traffic sites, you aren't likely to bump up against them.
The one you know best.
For people who are comfortable with Python there's also Django.
I guess it is pretty much an equivalent to Ruby on Rails (although I never used Ruby on Rails). Django's concept is to have many autonomous applications which can be used together in order to build small to large scale websites. It has great documentation, although deployment can be quite a hassle. Unfortunately it's not supported by many hosters.
PHP with Zend Framework has comparetively lower development time.
If you are familiar with C# or VB.NET and HTML then ASP.NET is also a very good option.
Just to add another, GWT (Google Web Toolkit) is an awesome option. It allows you to write all of your code in one language (more or less, you'll still need a bit of css --for the record ASP.NET allows this as well) and you can create really rich applications with all kinds of awesome javascript and ajax stuff without needing to know javascript. Their tutorials are great and personally, I think you can get off the ground really, really quickly.
I guess it matters more as to what languages you're most familiar with.
Whatever that language is, look for a good MVC framework for it.
http://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks
Since we are ambitiously aiming to be big, scalability is important, and so are globalization features. Since we are starting out without funding, price/performance and cost of licences/hardware is important. We definitely want to bring AJAX well present in the web interface. But apart from these, there's no further criteria I can come up with.
I'm most experienced with C#/ASP.net, PHP and Java, in that order, but don't turn down other languages (Ruby, Python, Scala, etc.).
How can we determine from the jungle of frameworks the one that suits best our goal?
What other questions should we be asking ourselves?
Reference material: articles, book recommendations, websites, etc.?
For me, the most important things to consider were:
Fantastic lead developers who I trust to keep working on the project.
Googling a question brings a lot of good answers.
Most importantly, I have to like the way the code flows.
Edit: Also they have to be anal about coding standards. If there is inconsistency, I get very annoyed.
Those 3 points brought me to Symfony. It is always using the latest cutting edge features of the latest PHP version. Symfony 2.0 is using namespaces before any other framework.
Two of your points were:
i18n - there is great support for it (helps that the company behind it is French, so i18n is a first class citizen).
Scales - Yahoo Answers and Vimeo use Symfony and contribute back code. If those guys can scale Symfony to 100 million users, you can too :)
It all depends on the type of project you will be developing.
Are you building a web application or a heavy content website or something else?
You also mix up programming languages with frameworks. The frameworks for PHP that I know are: CakePHP, CodeIgnitor, Zend and Symfony. For an out-of-the-box heavy content website I would suggest Drupal or Expression Engine.
It seems you won't be developing yourself. In that case I would determine the cost and availability of programmers and how widely the framework is supported and by who it is backed. The Zend framework is backed by the guys behind PHP, while CodeIgnitor is backed by the guys behind Expression Engine. Drupal has professional support packages,...
IMHO, for something that will have a lot of users, go for a compiled language.
If you don't try it, you will not know. So, I'd say do a small project in each of the frameworks you are seriously thinking about. I would prepare myself to do a lot of testing if it's something I'll be maintaining for some years. It's better to start off on the right foor than to get half way through a project only to realize you took the wrong path. There may be some requirements that end your search. For example, your servers' OS, a framework feature, or scalability. If you lay out your software plans and requirements, you probably will have very little left to choose from - unless your project really is quite generic or simple.
As a new developer, is GAIA Framework something that I want to look into. Is this going to stifle my learning and keep me dependent upon such.
What are the limitations of this framework. Is there another framework out there that you can suggest for rapid site development with deep-linking and the other bells and whistles?
Thanks!
As a new developer, there's a good chance that you'll write better code if forced to by a structured framework like Gaia. Building Flash websites can be a tricky ordeal unless you're well versed in Flash and Actionscript.
I'd say give it a try and see if you like it. Gaia should save you some time once you understand it. Whenever I try a new framework, I try to build a sample project or two just to get the hang of it before I actually use it on a real project.
If you're new to Flash, Gaia could also be a good tool to learn a decent workflow between your design and code and just in general when it comes to Flash.
If you dig into the code and try to figure out how things are done and why they're done that way, I don't really see Gaia impeding your learning.
It all depends on how you use Gaia. If you use Gaia to make a website then pick apart the created code and figure out how it did the things it did then it will help you learn immensely.
On the flip side if you just publish websites using it and don't bother to pick it apart to learn the internals then it will simply be a crutch allowing you to never learn how to do it yourself. An ability to create something that you could not have otherwise created, and if you cannot use it again in the future, you will not have any clue of how to do it.
Use it as a learning tool, not just a building tool.
EDIT: That was all general comment on building tools in general. Specifically relating to Gaia I'd like to add that personally I think most top end devs make their websites MUCH MUCH better than the Gaia framework does. As a matter of personal opinion I'd only recommend using it as a base learning tool, then building your own framework that you can constantly improve on as you get better.
I have used it in several projects. My experience is that some things are really easy to do with GAIA, and some things are hard because you need to stick to the structure.
It also depends on what type of project you are creating. I think it is worth a try, because you can learn a lot from the structure and methods that the GAIA team created.