Category:Development

From NeatTools

NeatTools 2.0 Brainstorm

What we think the next generation of NeatTools should look like. Please sign your comments for reference.--Sambaker 15:57, 17 February 2011 (PST)

How do you sign a comment? -- PDG Type four (4) tildes "~" in a row or press the signature button (second from the right) --Sambaker 08:32, 19 February 2011 (PST)

General Dev. Discussion

  • Should NeatTools 2 be a cross-platform application native to major platforms include Windows/Linux/Mac/iPhone/iPad/Android, or should we make a distributed Peer to Peer 3D NeatTools. That you can make 3D molecules all over the world talk to each other, organize it self with machine learning to automatically solve the given tasks that it sense through the environment. --Yuhjyechang
    • The neat tools molecules concept is cool, for me they would be transportable components (a data format on the stream) ... They could be invisible, 2d or 3d they operate in the information space. For invisible I like neat tools condensing streams to events, for 3d I like mapping streams to visual attributes of objects in the space (would be nice to have space objects be a bit smarter though)--Johannsen
      • What I mean by Peer to Peer is that there is no central server to host the molecules. It exists in all the running NeatTools instances. When a molecules is assigned as public, it will be hashed with globally unique id and being published, discovered, matched, replicated, transferred, and finally organized automatically with soft learning to accomplish the given tasks or the tasks it sense from the environment.--Yuhjyechang
  • Suppose there was an ecosystem where neattools lived, and all those little data streams on the arrows went into a magical place where they were tagged with metadata and lived forever. I'd like to query that system and replay data streams into neattools or my own projects. --Johannsen
  • What's the model for data sent between the different running neattools? For example data sent between programs need some additional information describing contents so receiving side knows how to handle it. Thats something that would be good to package up for cross platform extensions.--Johannsen
    • I already make communication between nrattools too complicated by make it ack the on be half of receiving side. So the sender and receiving side can negotiate a rate that is acceptable for both of them. Now there is one more thing to make it even more complicated, that is communicate the data type or aggregate data structure between them... Let user create new data type out of aggregate data structure is one thing that is missing in NeatTools. We really need to include it in the next version.--Yuhjyechang
  • I've been thinking about the cross-platform issue, specifically, the ipad/iphone/android version of NeatTools. One of the things that NeatTools was great at was accessing local hardware and being able to control other programs while running the background (joymouse, for instance). None of the portable platforms will give you that kind of control. So, I was thinking, what if the portable versions of NeatTools were satellite programs revolving around a version of NeatTools running on a desktop/server somewhere. The portable device could be used to remotely control/manipulate the ntl running somewhere. It could even pass it data from accelerometer/camera on the device.Sambaker 06:25, 14 March 2011 (PDT)
  • The previous point brings up a question that we're not hitting on really yet. What will NeatTools 2 do? The current NeatTools can do a multitude of things, it being primarily a way of controlling a computer without using a keyboard or mouse. But it can can had been used for tons of other stuff. I think we need a clear goal of what we want this version for. What will it's primary purpose be?Sambaker 06:25, 14 March 2011 (PDT)

General Feature Requests/Discussion

  • Some way to create a compiled redistributable binary of an NTL or source code in another language.Sambaker 08:48, 19 February 2011 (PST)
    • Save As.. (exe, C, C++, xml, etc...)
    • In conjunction with some specific modules, this function could be used to create firmware for micro-controllers (I'll let Paul elaborate on this)--Sambaker 08:48, 19 February 2011 (PST)
  • NTL are XML documents. Plain text and one XML parser away from portability.Sambaker 17:08, 27 February 2011 (PST)
    • yea, I like that as well, the NTL is the program, neattools is (currently) the only engine for running it, but they are independent.--Johannsen
      • Engine! I LIKE that word for it. The independence is what gives me great hope for using NeatTools on various platforms as well as being able to compile the code (at least generate C code that could then be compiled). --Pdgelling
    • For text representation of NTL, there's only two things to represent: links between modules and module properties. "instance output => instance input" and "instance property = value" Anything else? --Johannsen
      • That sounds about right. However, don't the linkages have to specify which input or output they are connected to? Links might need properties too (color, type, etc.).--Pdgelling
  • More control over links! like the ability to make specific links un-editable to stop accidental deletion, rather than all editable on/off. Ablainey 03:02, 1 March 2011 (PST)
  • Can't believe I forgot this one: and undo button.Sambaker 07:17, 1 March 2011 (PST)
    • DUH! LOL. & multiple undo+redoAblainey 13:14, 1 March 2011 (PST)

Module Request

  • A scripted module, that would allow in-program customization of a module's function with javascript or python. --Sambaker 08:36, 19 February 2011 (PST)
    • Suppose there were a module that allowed this, where you could connect some inputs (say, X and Y), and and there was an output (say Z). The scripted module really should have the inputs and outputs available as variables. So, for example, you could have the module code just be Z = X + Y. Sounds simple, but with neattools, you'd also have to decide when to execute this. I'm not so clear on that. It seems that the "when to execute" needs to be specified independent of the code and inputs and outputs. --Johannsen 19:54, 28 February 2011 (PST)
      • Yes,every input would be an argument passed to the function. Seems like there's two options for when to execute: either you have a javascript engine, which executes the code real-time, or you make your changes and rebuild (somehow) your module each time (all done within the ui of course).Sambaker 07:17, 1 March 2011 (PST)
  • this module I want sounds really really stupid, which is usually a good sign. Its a module that does absolutely nothing, it has minimal properties that would probably be in module base class (like name), and it takes any number of inputs and outputs. Here's what it would be good for: requires extension points to be useful,is a specification, allows the abstract nodes to be be isolated for a test specification (the "test space")--Johannsen
    • Hmm... I don't quite get what you mean. But, there is one container module in NeatTools that does nothing and can have any number of input and output. Is that what you are thinking about, or its something else?--Yuhjyechang
      • That might be the one I'll check it out. I'm looking at from point of view of making neattools more like an IDE, so it would support new module definition within IDE and the extension would be very limited. For example being able to define a "plus" module by drawing two inputs, one output, and limiting extension code to implementing an interface. Being able to define test data before implementing would be a really nice feature.--Johannsen
  • Video module would be nice. Supporting different common filetypes.Ablainey 03:07, 1 March 2011 (PST)

Existing Feature Change/Improve

  • The socket modules on the current NeatTools have been the biggest impediment to integrating with Flash. Flash's potential as a visualization tool (including 3D) as well as GUI/Front End is something I'd really like to explore more. Sambaker 17:08, 27 February 2011 (PST)
    • Sam, what are some good examples of external programs feeding data into Flash?--Johannsen 19:59, 28 February 2011 (PST)
      • My experience is mainly reading in external files (xml, jpg, avi) and manipulating them, but for instance, flash can communicate with a pop or ftp server. Did you have something specific in mind? I have used it to visualize xml data. I just did a proof of concept for Paul's Pachube data [1] (updates every minute so leave it open for a while).Sambaker 07:17, 1 March 2011 (PST)
    • I agree with Sam. In the new NeatTools, we should provide the socket as dumb pipe. On top of that, we can build up the notion of Channels, Objects, or encryption layer.--Yuhjyechang
    • The previous NeatTools design over the socket is that: In order to address the issue of matching the speed between the consumer and producer when dealing with Audio/Video or other type of packet of data that need feedback acknowledgment to adjust the rate of communication in both ends. The protocol become too complicate and confusing for simple communication with regular event with object data. In stead of making it the default protocol, we should just separate it into an protocol object cascade with socket object to handle this special case. --Yuhjyechang
  • Take a look at how Blender (an open-source 3D program) handles the connection of different modules (or nodes). Things I like about their approach: Labeled and color-coded inputs and outputs in discrete locations and collapsible nodes with properties/controls directly on the node. I also like how they handle groups (Complex Object) at about 3:30. Nodes(a.k.a. Modules)Sambaker 17:08, 27 February 2011 (PST)

GUI

  • What I have in mind in turns of 3D is that, the 2D Desktop in NeatTools is now become a 3D space where molecules with 3D presentation connecting stream of data. So, the data flow is still the same, only the 2D presentation become 3D. --Yuhjyechang
    • I think the current 2D interface works really well. Rather than 3D, I would like to see improvements/updates to the current 2D interface. 3D adds a level of complexity that could make simple operation (navigation and manipulation) much more difficult. Where I do see 3D being potentially useful is organizationally. Keep the current 2D workspace, but have multiple ones, layered in 3D space, akin to the Complex Object. Each layer could contain a (reusable) part of the final program (method). You could then icon-ize each layer for a meta view of the program.Sambaker 17:08, 27 February 2011 (PST)
    • I think that its possible to create a 3D interface using multi-touch that is immersive and intuitive. But, its not automatic. We probably need to put some thoughts on that front. For mouse and keyboard, I think its very hard to make it intuitive. What do you think?--Yuhjyechang
    • It seems to me that the 3D aspect of NeatTools needs to serve a purpose, either making something easier to use or easier to visualize, but be optional, or at least limited if so desired. For example, a "legacy mode" which while still 3D would be more like 2.5D, basically it would look and function similarly to the current NeatTools for systems where 3D would be more cumbersome.Sambaker 17:08, 27 February 2011 (PST)
    • How about layers rather than full 3D? you could add a link to a module and drop the end of that link down/up to the next layer where it shows as a node.Ablainey 03:10, 1 March 2011 (PST)

Questions?

  • Joh, Yuh-Jye: Speaking of the cross-platform development, could you talk a little about the Java version of Neat Software, specifically what security restrictions prompted Java to be abandoned in favor of C++ and whether that reasoning would still applies to a future version of NeatTools? --Sambaker 17:08, 27 February 2011 (PST)

I will let JoJo to answer this question for you. But, according to my understanding, at least the mouse/keyboard handler that intercept the global mouse/keyboard events was not possible in Java unless JNI Native C code is used. Once JNI is used, then the Java code will build on dependency on this piece of native code and become non-cross platform. Yuhjyechang 18:38, 24 March 2011 (PDT)

This category currently contains no pages or media.