Jump to content

Tomi Maila

Members
  • Posts

    849
  • Joined

  • Last visited

  • Days Won

    9

Everything posted by Tomi Maila

  1. QUOTE (TobyD @ Feb 26 2009, 10:57 PM) So true Anyone in Europe interested in a consulting contract or training? Tomi
  2. Thanks guys. I think though luck is not what I primarily need but hard work instead
  3. Dear ExpressionFlow readers and fellow LabVIEW developers. I’m very excited to tell you, that recently I’ve founded a new Helsinki based company, Agile 4, providing LabVIEW software development related consultation services. Today, it’s time to come out of the shadows and public with the company. Read more...
  4. This is the discussion topic for blog post ExpressionFlow moved to Mosso hosting cloud.
  5. In an ideal world, creating classes would be super lightweight and super fast. In an ideal world we would have all the abstraction tools of all most advanced programming languages together. In an ideal world, we could test all the functionality for all the parameter space of a class public API. We don't live in an ideal world. Somewhat limited abstraction capabilities and heavyweightness of creating classes for small tasks encourages sometimes to make design decisions where class private methods implement some functionality that would in an ideal world be better off as an external abstraction unit e.g. a class. In an ideal world, you would unit test these external abstraction units, so why would you not test the same functionality implemented inside your class private methods in our real world use cases. Sometimes (often) the parameter space of the class public API is rather wide and testing it thoroughly is impossible give the computing resources. As a result, often many uncommon parameter space combinations stay untested in real world. These untested cases pop up as bugs when someone ends up using the class in an uncommon environment. In these cases you could gain more confidence by testing the internal building blocks of the public API. Then there are some applications where the confidence requirements are just so high that you should also test the class private methods as well. Consider for example life support systems or multi billion dollar one-shot space projects. If the life support system malfunctions someone dies. If the space craft malfunctions, billions of dollars are wasted. So when life or billions of dollars are at the stake, it would be rather stupid not to test the class private methods as well, if it could save you from trouble. QUOTE (Aristos Queue @ Feb 3 2009, 12:54 AM) Can you please shed some light on your idea of implementing friend classes. I'm interested in the computer science theoretical point of view.
  6. QUOTE (robijn @ Jan 27 2009, 10:51 AM) Hi Joris, The trick here was not to do only real-time mixing but smart mixing based on real-time visual pattern matching. LabVIEW Vision toolkit should have rather advanced visual pattern matching capabilities. That is not so easily available, at least not as far as I know...
  7. QUOTE (Aristos Queue @ Jan 26 2009, 06:07 PM) Good, then specifying a new VI schema would not be duplicate work
  8. To really be able to visualize block diagrams online with Flash etc, the block diagram structure would need to be exported to something like XML and images for each object within the XML would then need to be exported individually. Then a flash application could construct an interactive preview of the block diagram, where user could browse case structures, event strctures etc and maybe even get context help. Is there an XML schema for VI structure used by NI internally? Tomi
  9. I've a friend who is into video production and video art. Lately we have been discussing of several ideas where LabVIEW & NI Vision could be used as a tool to create real-time (or near real-time) video production for artistic and promotional marketing purposes. So what would be needed for the projects is first to get a firewire compatible professional level video camera produced live video stream to be acquired into LabVIEW application. Then the LabVIEW application would need to do some visual pattern matching, masking and combining of video layers. The output of this process would need to be then displayed on a video screen and all this would need to happen in near real-time. There was a keynote demo on NIWeek 08 by Johann Scholtz where live video stream aquired of Tim Dehne on the stage was masked and combined with a background video layer in real-time. This keynote indicates what I would like to do is possible with LabVIEW. However, I'm not so familiar with NI Vision software and hardware that I could estimate what would be the best set-up for this purpose from hardware point of view and what would it take to actually produce the application to do the real-time video production. Can anyone more experienced in the NI Vision field comment, all comments are appreciated. Cheers, Tomi
  10. QUOTE (Eugen Graf @ Jan 23 2009, 12:24 AM) One real use-case for scripting is automatic code generation. It is common that complex protocols definitions are in a machine readable format such as XML. To implement the latest version of the protocol, you could generate automatically the required code from the XML specification. Or this is true for other programming languages, but for LabVIEW it is impossible without scripting. Hence LabVIEW developers need to manually write complete protocol libraries and manually update changes and bug fixes in protocol libraries whereas developers in other programming languages can simply execute the code generation script to generate the latest version of their protocol library. So maybe you would not use LabVIEW scripting so often in your actual production code, but you could use LabVIEW scripting to generate the production code.
  11. This topic is related to the following question, so I raise it up here. About a year ago I released a Active VI Toolkit prerelease version on ExpressionFlow. The toolkit was closed source as it was based on scripting, XNodes and instance VIs, all three NI "secret" technologies. I didn't want to get trouble with NI by releasing the rather advanced usage of scripting and XNodes to the public. However, I think that as an open source toolkit the Active VI Toolkit would be much more interesting. Does anyone know if releasing the source code under something like LGPL to the public would break NI license agreements?
  12. I would strongly vote for getting LV scripting public and "legal". Publishing it via NI Labs could be a very good solution, also this way NI would get some feedback on stability of scripting. I guess NI would benefit itself on its own internal software development if scripting gets publicly tested via VI Labs. Tomi
  13. What if we have two versions of a VI both in autopopulating folder. Say I'm using version control on a autopopulating folder. The version control creates a copy of everything and places them by default into a hidden folder. However I decide to configure the version control to place the files under version control into a _xxx subfolder instead of hidden folder. LabVIEW project is opened and voila, both the _xxx version and the normal version of the whole project is within the project. How do you resolve the conflics if you cannot turn off the autopopulating folder when resolving conflicts? Not only every referenced VI has two versions but also every referring VI has two versions.
  14. I didn't get an answer from my Subversion hosting provider yet. Anyway, I searched for free subversion hosting provider and found xp-dev.com. Below are instructions on how the teams can set up a free subversion account on xp-dev.com. For each user who will participate the project, should do the following In addition, the repository manager should create the repository and set other team members as the repository users Create a team account - Signup for an account at XP-Dev.com with team username, not your personal user name - Login to team account, a dashboard will open From dashboard, create repository - Click on "You have 0 Subversion Repositories" -link - Click "Create a new repository" -link - Give a name (FAST in this example) and click Save - Write down the repository address similar to one below and provide it to all team developers From dashboard, add new repository users - Add users by clicking Add Add new permissions - Click You have 1 Subversion Repositories link - Click View Repository Details on repository listing - At the bottom of the page, click Add new permissions link - Type in another user's Username and set permission type to Write for all developers - Click Save In addition the subversion client such as TortoiseSVN needs to be configured.
  15. QUOTE (Ben Zimmer @ Jan 4 2009, 01:50 PM) Ben, I asked my subversion hosting company if they would be able to provide the needed free subversion hosting services to the FIRST teams. They would be happy to, but they also would like to be listed as official sponsors of the competition on the competition web page. I've not been really involved in this FIRST robotic thing in the first place. Also the official website has not been accessible for me for the last two days. Do you Ben have any resources to figure out if the subversion provider can be an official sponsor for the competition or should we look for another solution? Tomi
  16. I recommend subversion with Tortoise SVN client as Yair said. In addition I recommend googling for free subversion hosting. There are many subversion hosting providers that provide free hosting for small projects.
  17. I use three wide screen formats: 1280x800, 1680x1050 and 1920x1200
  18. A leap second will be added at the end of the year 2008. That is after 23:59:59, a positive leap second at 23:59:60 would be counted, before the clock indicates 00:00:00 of the first day of 2009. The addition of a leap second may mesh up with the time synchronization of your software and your application may end up functioning in an unpredictable way. more…
  19. You can use the LabVIEW 8.6 web services functionality to create a LabVIEW web service and then use flash to query this web service for some data you want to display.
  20. LabVIEW doesn't allow using recursive data types. I wrote an article on it a year ago on ExpressionFlow. What you can do is to make the notifier type to be of parent class or LabVIEW object. Then simply cast the notifier data to more specific when the notifier is received. Also note that you should use the new Wait on Notification (from Multiple) With Notifier History function in class method vis and other reusable code to avoid possible incorrect behaviour or in worst case application freeze conditions. Cheers Tomi
  21. One way to do this is to poll the webserver for new data points. LabVIEW webserver supports sessions, so you can only send datapoints changed since last poll. If you client is a web browser application, create a polling & refresh application with ajax or flash. Another way is to keep the stream open and from web server constantly write new datapoints to the HTTP stream, however I'm not sure if LV web server supports this kind of persistent HTTP connections. Tomi
  22. Thank you all for excellent comments QUOTE (crelf @ Dec 11 2008, 08:21 PM) My company will be unlikely to work on "turn-key" projects directly. We provide consulting services for our customers. However, customers themselves can work on fixed price "turn-key" projects and our job will be to help them deliver the project successfully. I'm more likely to work as part of the customers team rather than develop software of my own. Therefore the customers process is the one that matters, not the process of my company. I want to help customers to choose the correct process for their needs. Therefore the question I asked was rather general, I didn't want to specify the process requirements too strictly as they tend to change from customer to customer. Anyway, I guess most of the projects of my customers will be of type fixed expenses, fixed time and somewhat flexible requirements. The important factor will be development speed and quality and ability to flexibly adapt to changing needs. I also tend to prefer agile and other iterative processes, where all the requirements are not known upfront.
  23. QUOTE (neB @ Dec 11 2008, 04:14 PM) Can you be more specific what kind of "training" does your customers need? What actually you try to tell them before the first project? Tomi
  24. QUOTE (crelf @ Dec 7 2008, 09:33 PM) This one looks more promising, thanks Anyone else ready to share their experience on their preferred software development process?
  25. I copy my comment to Pierre Cottin from the blog post to this thread as it may be relevant to the forum readers as well. PierreCottin Said: Hi Pierre, Which version of LabVIEW are you using? I'm testing the scenario you suggested with LabVIEW 8.6 and I have no problems. For the Circle plugin, I set both Circle and Ellipse classes as Always Included and voilà, everything works as suggested. I think the the previous versions of the builder may have had problems with colliding classes, so if you are using LV earlier than 8.6, you should consider upgrading. The plugin search algorithm I suggested in the example is pretty plain simple and you should not use this simple version of the plugin search algorithm with your scenario as it will identify all classes used by the plugin class as plugins themselves. Some other indication such as a setting file is needed for identifying the main plugin class. I created a modified example for LabVIEW 8.6 that demonstrates the usage of plugin inheritance. It can be downloaded from the same download page as the basic example.
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.