User Interface Design Tool [closed] - c#

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 9 years ago.
Improve this question
I'm searching for a User Interface Design tool to visualize a possible GUI in a documentation. I must not generate code. I know that Microsoft Visio provides a functionality. But are there any alternatives?
Which software do you use for visualizing a GUI?
PS. Another well-known tool is The Pencil Project.

An awesome and easy one is balsamiq: http://www.balsamiq.com/
I also quite like Axure.

Give a look to Firefox Pencil Extension, is a basic tool for GUI prototyping and simple sketching....

I am posting here a summary of recommendations based on my 10-years experience as a UX designer/information architect. The original article can be found here:
[Best prototyping tools out there? A review of Axure, Justinmind, and other UX tools] (http://www.humaneinterface.net/best-prototyping-tools/)
With interfaces becoming more and more dynamic, interactive prototypes are the best way to provide an in-depth, contextual and responsive documentation. If you are a professional designer, I’d recommend using either Axure RP Pro or Justinmind Prototyper for both static, low-fidelity prototypes and more sophisticated, interactive ones. Both offer rather affordable licenses.
If you are not a professional designer and you are looking for a tool that is cheap and allows to create static wireframes once in a while, I’d recommend Moqups as a quick prototyping tool. I prefer it over Balsamiq. WireframeSketcher is also an interesting alternative.
If you are looking for something not as complex as Axure/Justinmind but more powerful than Moqups/Balsamiq, you could also consider Infragistics’ Indigo Studio (which can import static mockups from Balsamiq and make them interactive) and Protoshare. Both of them, and in particular Indigo Studio, offer price plans that are not so convenient, and considering the limited set of functionality, I wouldn’t recommend them as a first choice. A third option is UXpin, which boasts the most elegant, clean and user-friendly interface I’ve seen so far, in the whole landscape of the UX tools available today.
For mobile prototyping, you can use both Axure and Justinmind if you want full control, the second seems to be a better choice at the time of writing (even though I did not test it directly). If you are looking for an easy way to build prototypes that are not too complex, you can consider the above mentioned Indigo Studio, or the more affordable Proto.io.
If your client is an organization that can afford a very expensive license, you can also consider iRise, a very comprehensive design platform for enterprises.
If you need to design static diagrams to represent user journeys, you might consider tools such as Draw.io or LucidChart, but Axure still provides decent diagramming tools that can reference to portions of your prototype. Justinmind seems a bit limited. Microsoft Visio (now part of Office 365 as a web app, and therefore also available on a Mac) is still great if you need maximum flexibility and want to draw very elegant flowcharts.
Keep an eye on JQuery UI components, even if you are not going to incorporate javascript libraries into your prototype. If you like to code directly, but you don’t necessarily need to reuse your code, you can also consider using CSS frameworks in combination with WYSIWYG editors such as Jetstrap.
Use paper to play with origami rather than prototyping.

You may want to have a look at Joel's article The Iceberg Secret, Revealed, as well as the articles discussion.
I don't know wether this is relevant to yout task, but since reading it I definitely prefer to use handdrawns sketches of a UI if I want to present it to a customer. (A 'Pencil Project' in the true sense of the meaning ;-)

If you are in Linux you might try Glade.

Take a look at the tools mentioned in the answers to this question:
Prototyping Tools for non-programmers - Expression?
I'd still recommend Balsamiq Mockups. The resulting GUI mockups look like sketches, making it a great tool for communicating the idea that this is not the final GUI, but merely a visualization of GUI concepts.

The "must not" seems odd... if you use an IDE designer to throw some controls down, but don't use the code, is that sufficient?
Or use "blend" - that generates xaml, which is just layout - no code.

justinmind prototyper may work for you. It gives you an HTML to check how an interface will work.

Related

Better C# Syntax Coloring for Visual Studio 2010? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 9 years ago.
Improve this question
Coming from Eclipse, I'm disappointed with the very limited syntax coloring capabilities offered for C# by Visual Studio (all versions, up to 2010).
In particular, I'm interesting in distinct coloring for methods / fields / locals / static stuff.
I'm aware Visual Assist can enhance the coloring, but I've failed to find any free alternative capable of doing that, so I'm turning to SO (I hope it's programming-related enough). Is there any free (or at least cheaper than Visual Assist) solution capable of enhancing the syntax coloring for C#?
Well, I could understand from the rest of the responses that the answer is a resounding "no, there is no such extension available for free", so I ended up writing one on my own:
(light brown for methods, magenta for variables, otherwise their color would have been black)
It's a bit crude, but it works for me - and it was free :)
EDIT: Anyone interested in doing the same - using the "Editor Classification" template, bundled with the Visual Studio SDK, is a great starting point.
It's not free, but ReSharper does this (and quite a lot more besides):
http://www.jetbrains.com/resharper/features/coding_assistance.html#Syntax_Highlighting
Hmya, watch out: one IDE's flaw is another IDE's feature. Visual Studio's syntax coloring is purely based on lexical analysis. Fast, simple and always accurate, no matter how completely borked the code is while you are editing it. To get the Eclipse-like coloring, the editor needs to be able to parse the code so it can classify identifiers. That's a much harder problem.
More to the point, there are changes in VS2010 that emphasize doing things exactly the opposite way. To get accurate syntax coloring your preferred way, you'd be likely to focus on getting the class "super-structure" done first. Exactly the opposite of what VS2010 is doing. It lets you skip the boring details and type code. And offers refactorings that lets you automatically create the field/property/method declarations from that code.
Microsoft spends a lot of money researching the most effective use of their software. You're liable to cut yourself off from the innovations they came up with if you try too hard getting things back the way you always did it before.
This is a great free option, http://studiostyl.es/
Import the settings via Tools->Import/Export Settings
JetBrains ReSharper includes enhanced syntax highlighting but costs a bit more than Visual Assist. It is absolutely worth its price but not only for syntax highlighting.
DevExpress offers CodeRush and RefactorPro probably including enhanced syntax highlighting, too, but I am not sure because I just tested it some time ago (at least it has a very colorful overlay when it comes to refactoring). There is a free edition - CodeRush Xpress - available.

C# Windows Application Developer - 3rd Party Tools [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 8 years ago.
Improve this question
Scenario
I have recently graduated from university with a degree in Computer Science.
My degree mainly focused on C#.
I want to learn more and get better at what I do.
I notice a lot of companies always want their developers to know and use 3rd party tools.
Question
If I was developing C# Windows Forms applications, what 3rd party tools/libraries/controls etc. would be of use to me and for what reason?
The answer to this question depends on how you define "3rd party tools". I usually take that to mean products from companies other than MS but excluding free open source software. When it comes to 3rd party products (for-profit) I cannot think of any common products that I've used or been asked to learn over the last decade that I've been doing .Net development. Most MS shops I've worked with turn to MS solutions (for good or ill depending on your personal view).
That said, in recent years the number and quality of the various FOSS solutions out there has risen dramatically. I use the following whenever I can:
Logging: log4net
Inversion of Control Container (plus more): Castle Windsor
ORM: NHibernate
Unit Testing: NUnit
Mocks for unit testing: Rhino Mocks
For most of these projects there are many other options, these are just my current favorites. Learn to use these (and WHY they are needed) and you'll be many steps above the average .Net developer (sad but all to true).
The DevExpress and Telerik controls are pretty popular, but not free.
Some 3rd party .Net component providers that I've seen used in companies most often:
Telerik
Infragistics
They are not free. These kinds of providers offer large libraries of controls that you'd pick from to achieve your specific goals.
Many good suggestions here, I would also add a few other categories of tools:
Software configuration management/version control: CVS, Subversion, Git/Mercurial/Bazaar, Perforce, etc. Good use of SCM is essential for professional software development.
Issue tracking: Bugzilla, Trac, FogBugz, etc. I would also consider an issue tracking system to be a critical piece of software.
Documentation: Like it or not, it becomes very handy to know your way around Microsoft Word. Knowing how to manipulate styles, headings, numberings, cross-references, etc. can make your life a lot easier when writing documentation.
You'd probably want to have a look at Silverlight. It's a Microsoft alternative to Flash and uses C#. WPF are also something to look at for interfacing.
It might also be worthwhile looking at MOSS.
I've always liked the Xceed controls. In a lot of cases you could always build your own controls. The biggest advantage to using some of these packages is that it saves you the time and they have also been well tested (if not by the company then by the people that are using them).
I've used a couple of different packages over the years and found that if you can use one it's not that hard to use another. The biggest thing is knowing what is available out there so you don't spend two weeks building something that you could have just paid a few hundred dollars for.
You should know about resharper (helper for VS)
Crystal reports - for reports,
Some Grid tools (google it, there are many - I wouldn't bother to learn until need one)
and study advanced topics like: WCF, WPF
Cruise control or other building tool, bugnet or trac - bug management tools...
And of course - AQtime or other Profiling tools.
.NET Reflector
Hawkeye - The .Net Runtime Object Editor
Infragistics
I'd throw mono in there as well. Since you're looking to give yourself an advantage over other developers and improve your value to companies - having cross platform experience is advantageous as well.
There are a lot of 3rd party controls that will help you achieve more in less time. But I don't think many of them will really improve your coding skills (calling someone else to do all the work doesn't teach you much about how to actually do thise things yourself, but familiarity with them and the ability to learn new libraries is a good skill to practice)
Resharper is good for improving your coding skills (code analysis), coding style (autoformatting), and it's a great refactoring tool. It's expensive, though.
Microsoft do some free code analysis tools for Visual Studio (FXCop for code analysis, and there is also a Static Analysis addin) which will help improve your code quality.
AtomineerUtils (my own addin) encourages excellence in documentation and generally improves your code quality (by encouraging good naming style, etc)
Focus more on the tools used in the software development process. Enterprise Architect is used for designing applications from a high level. Once you design you application's business classes you can generate your classes' skeletons. You will be responsible for you code implementation once the class structure has been created.
For implementation purposes look at several C# platforms mentioned earlier. You want to focus Microsoft's WPF, WCF, WF. WPF is ok but it can not be used prior to .net 3.0 so check your client's requirements. I'm working on a project that targets the .net 2.0 because of restrictions by the client so the applicaiton was designed in WinForms. Silverlight is an option as well.
In addition, read up on design patterns as this will help you avoid creating high maintenance applications. A good book is Design Patterns in C#.
For testing look at the Visual Studio TFS system or third party programs like NUnit. You can google NUnit. This will help you ensure that your code does what you intended it to do on a granular scale.
Also, take a look at some of the source control software avaialbel like Subversion, Rational ClearCase, Visual SourceSafe. For large projects with multiple developers you'll need a source control tool that has multiple branches so that each developer has his or her own sandbox within the source control system.
I'm a big proponent of ComponentOne and use it in my new applications regularly. I find that if you're proficient in .NET winforms in general, C1 are very easy to pick up on and usually do what you want with little effort.
A couple people mentioned Telerik. I demoed it fairly extensively and found them to be a bit more complicated because they contain a ton of configuration options for look and feel. Awesome if you're some sort of graphic designer, but unless you're building the next Windows Media Player, I think it's overkill. The learning curve for the theming seemed a bit much for what I was trying to accomplish.
C1 and Telerik both run about $1000 to $1300 depending on what license you get.
You should also check out the Krypton toolkit. It free and has a lot of nice controls.

choosing a diagramming library for .Net [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 9 years ago.
Improve this question
I have a customer who needs to convert a diagramming application (which was developed in MFC a long time ago) to C#.
The application displays large networks (lots of graphical elements), and lets the user edit/manipulate the data through a graphical ui.
I decided that it would be best to use a library rather than to develop all from scracth (all graphic objects/selection/tools/events/etc)
I am looking for a commercial solution.
I found three that seem to be very mature, and I wonder if
anyone had used them and can write his/her opinon:
Tom Sawyer Visualization
IBM ILog Diagrammer for .Net
yWorks - yFiles for .Net
thanks
Yaron
I am not familiar with this libraries, but one of my old projects we have use GoDiagram library, and can suggest that too
For making good looking diagrams in .Net you should check out Frank Hileman's VG.Net. He's a reputed MVP and I believe his solution is really good:
http://www.vgdotnet.com/
I recommend MindFusion's Flowchart.NET. It's very easy to use and is very affordable considering it comes with a multitude of powerful layouting algorithms. Previously we used GoDiagram, but I recommend against it because their licensing system is a nightmare if you have build machines, and it's much more expensive.
I believe Dundas charts is the most famous one...or at least the most advertised one:
http://www.dundas.com/Microsite/ChartNET/Default.aspx?Campaign=GoogleCSharpChart&gclid=CM-wncOq354CFUmK3godxENfMQ
I know this probably isn't the best solution but I'm going to put it out there anyway.
I've done something similar to this using .Net's System.ComponenetModel.DesignSurface. This is the same design service used in Visual Studio's Windows Forms so all you do is create your controls, add your control designers if you want and you're good to go. You can use the PropertyGrid to display the data for each object as they are selected. Code Project has several articles about this like this one.
That said it's not going to be the best performance wise, I've got several thousand controls on my DesignSurface in some cases and it gets sluggish. You may be able to get around this by using another root designer type (WPF maybe?).
This could be a very good option if you already know how to do custom Windows Forms controls. And best of all it’s free!
Have a look at Orbifold. They have got WPF based solutions (commercial) or libraries supporting GDI+ (free).
It's also a good starting point for information about diagramming algorithms in general.

Designing better GUIs? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 4 years ago.
Improve this question
I've been using C# for a while now but haven't really homed in my UI design skills. At the time I design them, I find myself enjoying the design, but later on, I look back on it and see horrible work. An example comes to mind from my project at work where I had to use 127 buttons to represent 127 computers in our lab. :/
I was wondering if anyone could refer me to a site or book that would teach good UI design?
Thanks!
I believe observation and instincts helps tremendously.
Play with applications and dig deep into the functionality they implemented. Especially look at Apple, since they revolve around aesthetics. What worked? What didn't? Why did it work? Start asking yourself questions as you tinker with web sites and software.
Then I would play around and design some concepts. Show these concepts to friends, both technical and non. Ask them questions like, "Add a new drink to the list" or "Find x for me." See how they react and differ from each other. Did someone with a technical background notice buttons faster than the non-techies? Should you combine elements together?
This stuff should be fun. After all, this is like building a complete Lego set and showing it off to your friend. He/she get's to see, touch, and play with your creation.
Joel Spolsky wrote a book called User Interface Design for Programmers, which is a good read, and an abridged version can be found online.
The Design of Everyday Things
by Donald A. Norman
The Humane Interface
by Jef Raskin
The most important to focus on first would be the work flow of things. Try to find the goals the user has and create a model the is as effective as possible in reaching that goal. Also read a lot around this one of the best books to start with is The Inmates are running the asylum
I would suggest lots of sketches here. Make sure you keep it simplistic to focus on what and where things are placed and less on how they look. A tool like balsamiq is great for fast UI mockups. Also go through UI patterns here to come up with concepts that work, Tidwells book Designing Interfaces is great and also Infragistics new patterns site are great resources
Now you have an idea on what you want to do, now is the time to put together the interface. Along the way from the first sketch to the last pixel - always user test.
And don't always follow the UI guidelines, it is OK to break them if you have a good reason. And last, you will only get one free unrelated 3D effect in an interface :)
Building on Vinay's answer, integrating with your target platform is always going to be of paramount importance when designing an interface. If you were developing on Windows, make sure you stay true to the look, feel, and usability expectations of that platform. The interface guidelines are always going to be a jumping off point, though some are better than others. For my money's worth, the GNOME Human Interface Guidelines are a great set of guidelines to designing user-friendly interfaces, even if you aren't using GTK.
On a more general note, learning good design is really learning to recognize good design. Find some applications that are really intuitive and then mimic their layout, style, etc. Then, when you are struggling with how to implement a particular feature, find a suitable analogue in a one of those other applications. You will want to pay particular attention to issues like grouping, tabbing, shortcuts, dialog modality, etc. I think you will find that very few good design principles are dependent on the language you are programming in, except in so far as it may influence the toolkit and platform that you target.
I have read Spolsky's book User Interface Design for Programmers, as well as the classics The Windows Interface Guidelines for Software Design and Windows User Experience. The latter two are/were good reference books. Spolsky's book is a wonderfully entertaining read and teaches you how to think about user interface design.
For my money, though, the best way to design the user interface of a desktop application is to duplicate existing solutions from popular software. And by "duplicating," I'm referring to two distinct facets - the mechanism and the aesthetics.
As far as the mechanism is concerned, make sure your UI works the way people expect it to work. For example, if you have a treeview, make sure the keyboard arrows work for navigation. If your form has a scrollbar, make sure it responds to the scroll wheel on your mouse. By and large, the .NET controls provide the standard behavior by default, but you may have to configure some of the design-time properties to fully achieve this. I had a controls library I was working with a few years back that provided a standard textbox. What I discovered, though, was that the text was not automatically highlighted when I tabbed into the control. I added that behavior because it's the way I (and my users) expected the control to work. Quoting Spolsky, "consistency causes ease of use, which, in turn, causes good feelings..." In other words, if the mechanisms of your UI does not match what your users expect, your UI will be a source of frustration for your users.
As far as the aesthetics is concerned, I have discovered that focusing on things like fonts, icons, spacing between and alignment of controls, selective use of color (I love using gradients), etc. can go a LONG way toward adding that sense of polish to your user interface. I've been known to use bitmap screen captures in Paint to measure the padding between controls in order to mimic the padding in the Microsoft applications. When I divulge that information to co-workers, most of them look at me as though I've lost my mind. But I cannot tell you the number of user interface successes I've had simply by focusing on what everyone else considers insignificant. I chalk that up to simply leveraging all of the research Microsoft has ever done in making their applications visually appealing.
So my recommendation would be to read Spolsky's book and then try to duplicate as much of the Microsoft apps as you can. For desktop applications, it's the surest approach.
Take some time and look at other software products. Every year, companies like Google and Microsoft dump millions of dollars into usability testing. Take what they have learned about user interaction and apply it to your own products/projects.
Infragistics also just created a nice reference for UI Design Patterns, it can be found at http://quince.infragistics.com/.
I think the best idea is to practice. I like designing my windows on paper first (blank or graph paper). Use a ruler and make sure things align and are clean.
An example comes to mind from my project at work where I had to use 127 buttons to represent 127 computers in our lab. :/
Ask questions to yourself here, what didn't I like about it? How can it be improved? Did I need drop down or a list box for the computers?
Also know your GUI widgets.
You can refer to Windows UI guidelines or Mac UI guidelines.
Mac UI guidelines are available at http://developer.apple.com/documentation/userexperience/Conceptual/AppleHIGuidelines/XHIGIntro/chapter_1_section_1.html
Windows UI guidelines are available at
http://msdn.microsoft.com/en-us/library/aa511258.aspx
EDIT:
Everybody likes the Google UI here is the link.
The answers already give some great books on how to specifically design interfaces. I'd like to help with some suggestions to help you improve your nose for design. Some of these might be cheaply available 2nd-hand, or something you can borrow locally (I'm always willing to lend books to people in Perth, Western Australia):
Bill Buxton's Sketching user Experiences - buy it, read the stories and start practicing sketching
Nathaniel Borenstein's (out of print) Programming as if People Mattered - a superb little book of anecdotes
Jeff Johnson's GUI Bloopers which will help you with lots of pragmatic examples of design gone wrong, in both desktop and web application design.

Home Automation Library [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 7 years ago.
Improve this question
I'm a C# developer looking to get into home automation as a hobby. I have done a little research, but was wondering if anyone knows of a good .NET library that supports Insteon hardware. I'd rather use Insteon than X10 due to reliability issues.
My ultimate objective at this point is to have a simple home automation server (maybe lights and climate control) with a secure ASP.NET web application interface. I'm more interested in actually building it and learning about it rather than finding an existing solution.
Thanks for any suggestions or comments.
Edit:
Thanks for the help, everyone.
Does anyone have experience with Z-wave technology? Seems promising - appears to be higher quality hardware, includes a core library, supports .NET, etc. ControlThink appears to have a pretty good controller and SDK.
Here's an interesting application to consider: Stall Status: Know Before You Go
We found there really wasn't much developer support for Insteon unless you wanted to buy their SDK and agree to their rather heavy-handed license agreement. Rather than go that route, we wrote our own .NET library called FluentDwelling and we open-sourced it. You can find a download link, and some get-you-started code samples if you follow that link.
The source code comes with a full suite of unit tests (requires NUnit, also free), so you can add improvements and make changes if you like.
I would avoid X10 like the plague. Between things like modern TV's and power strips, bridged power junction boxes and just plain strange wiring, X10 signals tend to just "disappear" and never get to their destination.
If you really want to give X10 a shot, I've got a box of X10 stuff in the garage that was worth $250+ new and it's all completely useless in my house, so you can have it. Some of it worked in my old house, but it won't so much as turn a light on 2 outlets away where I live now.
X10 is viewed by most modern electronics as "noise" on the line (which, technically, it is) and something to be filtered out rather than passed along or left alone.
I can't remember if it covers the specific technologies you mention but you should definately check out this episode of .NET Rocks. They talk about all the different stuff you can do with home automation and a lot about how to do it. I believe one of the main points was that Microsoft Robotics Studio was a good tool to use, as it uses a lot of the same abstractions as you would otherwise use.
I know it's been a long time since this post was made, however I was wondering if you'd picked a route, and what you've ended up doing with home automation since.
I've been doing this kind of stuff with many of the technologies available, but I've always done it on top of a product called homeseer. .net plug-ins and vb.net and c# scripting can be done on top of this foundation. I've been thinking of rolling my own similar to what you were describing. Any thoughts, tips, decisions you've made etc?
A bit off topic, but listen to the latest episode of dot net rocks, one of the finalists of my .net story built an home automation solution that really made me want to dive into home automation again.
Totally awsome solution.
http://www.dotnetrocks.com/default.aspx?showNum=518
I think this would bee a place to start
insteon sdk
Some research via Google looking for an Insteon SDK only yields stuff from way back in 2005. There's only information on serial port interfaces (no USB) and the only language mentioned is something called DockLight scripting that also looks like it hasn't been updated since 2005.
X10, on the other hand, boasts support for C++, VisualBasic, VB Script, and JavaScript. No .Net listed, but VisualBasic/VB Script likely implies a COM object you can easily import for use in C#. They're also much more USB friendly, and the kit costs 1/4 of the Insteon kit ($50 vs $200).
If you were actually building a product I would understand the reliability concern. But since this is a home project I think you'll have much better luck with X10.
you can try C-bus by Clipsal(schneider) it's free.

Categories

Resources