Logicly - the digital logic simulator
logic.ly
logic.ly
I was a CS student, but we had to take some intro Computer Engineering/circuit logic theory classes. I loved it, but we only did things on paper (and I didn't want to buy a whole breadboard kit just to play with simple logic circuits, etc...). I wish this was around when I was learning because I really wanted to play with making more complicated setups than we did in class.
This is like the Balsamiq of Circuits with the added bonus of running the stuff. Yes, being able to snap wires to a grid would be nice, but I'm having a blast with this right now.
Wires between nodes are laid out automatically and can not be routed on a grid. In a big design (not that this is meant for that) things will get messy quickly.
You have to click simulate to see the results of your circuit. This is annoying. These circuits are simple and the output can easily be detected whenever a change is made.
Another useful feature is the have keys (0-9) mapped to switches. Testing, for instance, a four bit multiplier would be much easier if you don't have to operate the mouse so much.
I hate to recommend another piece of software, but I think the authors can learn a lot from it's features. Atanua (http://sol.gfxile.net/atanua/) is a cross-platform logic simulator that has all of the above features. It was a great tool when I needed to quickly prototype something for a class, and I still recommend it to students in a class I TA. It hasn't been updated in a while, the OSX version has to be run through Rosetta, but I can't see any glaring omissions the author made that would make it unusable.
Finally, it's 2010, this would make an awesome HTML5 app instead of being written in Flash.
I'm done installing any future versions of Flash, especially with all the crap they've started bundling it. I fully expect that Flash 10.2 will include anti-virus software, toolbars, and something that periodically reminds you that you're ugly.
I mean it's up to you what you want to do, but why do you need to throw in strawmen?
1. How do you set an initial state when controls are also interactive? This is probably easier to do now that I have a floating property editor window. At the time, all interactions with components were direct.
2. If something is interactive, like a switch, what's the best way to handle dragging it with the mouse? Previously, the "wall plate" of the switch was the only draggable part, but it didn't seem like the best choice for usability. Also, it limits the visual design because draggable areas must be large enough to be discovered. I've considered having an extra draggable handle appear when a component is selected, but I'm not sure if that's ideal.
Forcing a separation between a design perspective and the simulation made the answers obvious. However, now that you've made me explain my reasons, I can see that it might be possible to go back to the old way without sacrificing too much.
Awesome!
One suggestion: I have no idea who/what this is for. The front page certainly tells me what this is, but I don't have any use case. There's a big difference if this is just for fun, or if this is a serious tool for actually designing things, and you'd better let people know asap which this is.
Like I said, I would make this very obvious on the front page. Maybe even have some ideas on how to teach using this tool (classroom material, etc.)
edit: one more thing occurred to me: while stepping through the animation, indicators as to what wires are currently being checked would be helpful. Otherwise you just see blue-blue-nothing.....-blue-blue-light.
Suggestion for optimizing, especially for larger multi-part circuits: allow a sub-circuit to be expanded / collapsed. When expanded, show the full animation & whatnot. When collapsed, run an optimized chunk of code which has the same behavior, and just output the results at the proper times. When it's collapsed it's a "black box" anyway, might as well take advantage of that.
This way, if someone builds some massively complicated integrated circuit, you can run it as fast as possible when it's not being animated.
The biggest slow-down is intentional, though. Since the wires are colored, propagation is currently limited to the frame rate so that all changes can be seen. Some circuits, like the oscillator sample, look pretty strange when propagation isn't tied to the frame rate. I plan to add a setting to turn off wire colors, and then I'll probably make the propagation adjustable too.
But, that's seriously cool. It reminds me of Rocky's Boots for the Apple ][
We did something similar in the earlier days of Creately, but ended up focusing on more diagramming and less simulation as time went by.
I think use cases like this belong purpose built apps like Logic.ly - a lot more UX optimization can be done.
You can play with an example of a Multiplexor with simulation if you are interested - https://creately.com/creately-start?tempid=fvtdhokh2
Nothing fancy really. Use the "Properties" panel to change signals of inputs. The UX can be better - bringing me to the point of purpose built apps. :)
Also, QuickFuse doesn't use Flash, it's pure JavaScript and canvas, so in my experience it's a bit more performant. (Full disclosure: I wrote code for QuickFuse.)
Incidentally, is it just me or are circuit-based apps becoming more popular? It seems like it is becoming a more accessible paradigm to more people, and the web (well, ignoring Flash) is now able to robustly provide such UI's.
Is there any part of Logicly in particular that felt slow to you? Please note that signal propagation does intentionally limit the speed of the simulation at the moment. However, dragging objects around on the design canvas felt exactly the same to me when I tried it in both Logicly and QuickFuse in Flash Player 10.1 and Chrome 6 respectively.
Once I figured that out though I enjoyed using it.