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 3 years ago.
Improve this question
I have to build a web application in a couple of weeks in your usual 3 tier, UI/Business Logic/Data Store, type way, however the customised UI really isn't achievable in anything but Silverlight or Flash (lots of custom vector drawing, fades, animation type stuff etc.).
Given I'm not a Flash developer, but am an excellent C# programmer, I'm going to use this project as an excuse to learn Silverlight 3. So, I have a couple of questions which I'd love to hear some thoughts on, to save me a lot of time up-front.
What is a great Silverlight 3 book? Unfortunately I'm not seeing an O'Reily book, which is usually my first preference. I'm looking for a book that gets right down to business, not a 'history of Silverlight' book. Here's a canvas, here's how you draw into it, type of thing. Is there value in buying a Silverlight 2 book, or has enough changed to not make this viable?
I want to use a mature Silverlight control library to take care of buttons, gauges, graphs, etc., so I can get on with the custom stuff I need to do. I've noticed there are a few different vendors. The ones I've looked at are: Telerik, ComponentOne, Infragistics and Syncfusion. Frankly they all look pretty good, but I'd love to know if anyone has concrete experience they could share to help me make a decision.
I've been noticing that Silverlight apps seem to run into performance problems vs similar Flash apps. Even the demos of the control vendors I mentioned in (2) seem to run at very variable framerates (I'm testing on a Mac with Safari 4 using Snow Leopard, but I notice this on IE and Chrome too on Windows 7). I don't mean to create a Silverlight vs Flash flame war here, it's just what I've noticed. Does anyone have gotchas I can steer clear of?
Thanks for your input.
Regards,
Shane
I can speak for number 2. I've used both telerik and silverlight control toolkit.
First off, the toolkit is free.
Open source, means you can edit your controls. Not updated very often.
Skinning is not really intuitive as telerik.
Telerik is very fast when it comes to updating their controls. Such as when SL3beta came out, they had a build 1 day after. When it comes down to customization, skinning is not really that simple for a newbie silverlight person. I went into editing their styles before i found out about skinning. Telerik's controls are not very flexible when it comes to customization as opposed to the open source sl toolkit.
They never crashed for me, my application sometime loads up over 100,000 rows in their datagrid at one time, loads fast also. I think they have a demo with over 1mil records.
All in all, telerik is commercial, you can get both the free control toolkit and telerik to look and perform the same, but telerik is somewhat noobproof and cuts your development time to about 1/3 of that for toolkit.
How i learned silverlight?
I was fooling around since the beta for wpf and used that knowledge in silverlight. How i kinda perfected that skill, I watched all of the tutorials from silverlight.net. Those give the foundations then whatever feature I want to use, I'd google it.
I was in your position regarding choosing a toolkit recently for a GIS application, which led me to ComponentOne's Silverlight Studio. The controls themselves are fantastic, but perhaps more importantly I have found the support (even during my free trial period) to be incredible.
disclaimer: I am in no way affiliated with ComoponentOne, just a happy customer.
Related
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 will be creating a small database-driven Windows Forms application for my C# project. I wanted to beautify it like we do on web sites using CSS. Are there any resources or sites which can help me in beautifying my application?
You could try a library I built some time ago.
http://www.codeproject.com/Articles/33716/Fancy-Windows-Forms
"Beautify" and "Windows Forms" are not often used in the same sentence. WPF allows for significantly better design opportunities.
Some frameworks allow you to skin a WinForms application, which allows you to drive look through configuration rather than code.
How do I skin my Windows Forms application?
There's also a CodeProject project that provides a skinner, though I have not used it personally
http://catalog.codeproject.com/Articles/415102/WinForms-Form-Skin
When I used to write small WinForms utilities without access to a framework, I would subclass each major control, and apply a style in that subclass. One change to the subclass affects the entire app.
CSS-like styling is difficult in Windows Forms, because the framework wasn't really built with it in mind. If styling is important to you, then you will probably have a much easier time of it using WPF instead.
I know of one third-party library designed to help with skinning WinForms applications, DevExpress WinForms Skins. I don't have real experience with with it, though, so I can't make any comment on it.
You can't use CSS to style a WinForms application, but I don't think that's what you mean anyway.
As far as "beautifying" your application, there are a number of 3rd-party tools available. The most popular ones are (in no particular order):
Telerik
DevExpress
Infragistics
ComponentOne
Many, many others
People tend to get religious about their 3rd-party design tooling, and a lot of ink has been spilled on SO going over the benefits of each 3rd-party design tool.
If you google ".NET custom theme" then you can get many free styles to use in your projects.
Here is a list made by some user over at hackforums of his styles and custom controls, which I think help make your form 'Custom' and 'Nice': http://pastebin.com/1nvZ08kx
I've used the WebBrowser control to create an interface before. With it you can use HTML and CSS to create a pretty nice looking "form". It requires a bit more coding, but it works. A user needs IE installed to use the control though. There is a VB.Net example here:
Using VB .Net WebBrowser Control To Build WinForm User Interface
In any case, it's another option.
If you are interested in third-party tools for designing Windows Forms applications you could also take a look at the Infragistic's one - AppStylist for Windows Forms controls. There is a short video for the runtime version of this tool.
Another useful page for getting started is Application Styling Framework.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 1 year ago.
Improve this question
We're debating whether our future Windows UI development should be WinForms or WPF. How have some of you made this decision? Most of our applications are LOB applications, and I'm not sure I see a clear and overwhelming benefit to WPF for these types of applications. However, my knowledge of WPF is limited. I'm also a little concerned that WPF will be in vogue for another couple years and then Microsoft will get tired of it and push something else on us. I guess one argument against this is the fact that Visual Studio 2010 is a WPF application.
Thanks.
There are a lot of factors to consider here.
Reasons not to choose WPF:
It currently has less support than WinForms for common LOB controls like date pickers, numeric entry widgets, and so on, though this is improving via the WPF Toolkit, in WPF 4 and through third party control vendors.
The tooling isn't fit to kiss the Windows Forms designer's boots. (Though to be fair this is partly because the tooling has to cope with much more sophisticated ways of constructing views. And Blend is definitely getting there.)
A very different mental model to Windows Forms. To get real benefits out of WPF, you need to think in a very different way to what you're used to. So there may be a substantial learning curve -- not just in terms of learning the technology, but in terms of internalising the idioms and patterns (though there are now a lot more community resources around idiomatic WPF than there used to be).
Reasons to choose WPF:
Decent architectural support. WPF (if you do it right) has a decent separation of code and UI built in, making WPF applications much easier to test and to evolve.
Greater flexibility. For example, if you need a simple map display, you can build it in a couple of hours from a ListBox, instead of having to research and purchase a third party component or write a map control from the ground up. Simple data visualisation is a killer feature for WPF.
WinForms is a dead end. It's not going to see any enhancements from Microsoft, and control vendors are already beginning to shift to WPF as the WinForms market saturates.
Most of your WPF experience can be ported to Silverlight, which (a) gives you flexibility to bring your apps to the browser and the phone, and (b) gives you additional confidence that Microsoft won't lose interest -- even if they do get "tired" of WPF, they've shown a very strong commitment to Silverlight.
Personally, if I were starting a Windows desktop app now, I would choose WPF. However, I've already climbed the learning curve. For a team that doesn't have WPF experience, the cost of taking it on must be a greater factor than it is for me.
One thing to bear in mind is Silverlight. Is it possible that you'll want to write your application to be run from a browser in the future, or possibly even from a Windows Phone 7 device? While Silverlight and WPF aren't quite the same, they're extremely similar. This would be my primary "future-proofing" argument in favour of WPF.
Personally I like the composition model of WPF - as well as a declarative way of representing the UI, and a better layout system than WinForms. Not that I'm a UI guy, really.
WPF is a game-changer for me. My company's flagship application is a WinForms program whose UI is build dynamically at runtime from metadata. It was about six months' effort, all told, to get the UI even stable, let alone attractive. There are still some bugs that I haven't been able to fix, largely because UI code is hopelessly and unavoidably intertwined with data-model code. And don't get me started on window handles.
Now that the system's been in production for a year or so, customers are coming to me with requests like, "We'd like to be able to reorder the information on this screen by dragging and dropping," and "Can we get this information to display in a grid on this part of this tab?" and - my favorite - "Can we get spell-check and auto-text?" Those requests go onto a backlog that's getting pretty damn long.
It's taken me a fair amount of time to figure out how to refactor the application's design so that it can support a WPF UI. (Actually, that's a considerable understatement. I've been grappling with this off and on for a year and a half, and I only started getting traction on it once I broke out of the WPF books I was working from and learned MVVM.) Once I did, the results are spectacular.
The code is much simpler. There's much less logic to debug. Everything in the UI is much faster, which is important because the whole reason this is a desktop app in the first place is that we needed a very responsive UI. My program can create thousands of UI controls without my having to worry about window handles. The ease with which I'm able to change the look and feel of the program is jaw-dropping.
(An example: The UI presents DataRows with a variety of templates. Since a given screen can have dozens of rows on it, and the cursor is kind of small, it's useful for the user to be able to tell, at a glance, what row the cursor is in. It took me ten minutes to implement the styles that now make this visual affordance available everywhere in my application. That's less time than it would take me to estimate that feature if I wanted to add it to my WinForms app. Granted, it would have taken a lot longer if it couldn't be done by adding two styles. WPF's is seriously not magic.)
Are there downsides? As Ms. Palin likes to say, you betcha. Browse some of the questions I've asked on SO - the one about how a no-op value converter changed the behavior of data binding is a good one. The entire rub-your-belly-while-patting-your-head approach to debugging bindings is pretty frustrating, especially since it's so easy to have binding errors and not even know it. (I now keep my Output window on the screen at all times just so that if there are any binding errors while I'm testing, the movement of the messages getting logged will catch my eye.) It would be nice to be able to get a real stack trace when your window throws a XamlParseException. Don't start me talking, I could talk all night.
And the tools! Visual Studio's visual tools for building WPF UIs is completely useless to me. I have Blend, and have used it to re-template a control, but in general I find using Blend to be like trying to jog through a swamp full of hubcaps and baling wire. I'm sure it's really awesome if all you know is Blend, but if what you learned first is the WPF object model and XAML, the behavior of Blend is pretty mysterious. The XML editors in Visual Studio and Kaxaml give me a sad, and Resharper's WPF functionality is, let us say, a work in progress. I much, much prefer the tools for WinForms that make it possible for me to smoothly and rapidly build the slow, quirky, and unmaintainable crows' nest of code that I'm coming to loathe.
WPF looks set to replace Winforms, at least on Windows Mobile devices, with future development focused around Silverlight (a WPF spinoff) and XNA.
In an open market, it makes sense to cover WPF if you want to keep yourself attractive to a wider recruitment market.
I've wondered that myself. But the fact that VS2010, like you said, makes a lot of use out of WPF says to me that Microsoft is trying to tell the world that it's not just another MS fad, but it's going to stay around for some time.
I think MS is sending a clear message that WPF and Silverlight are the present and future. The Winforms PM has said as much. Additionally, WPF and Silverlight are expected to converge in the future.
We went through this same dilemma about 6 months ago at my office. We were starting a large LOB app and no one on the team had a lot of experience in WPF or Winforms. That being the case, we couldn't find an overwhelming reason to go with Winforms and we felt that WPF offered us a much cleaner separation of concerns. We decided to go with WPF and use PRISM as the app framework. 6 months on, I think we made the right choice.
Knowing both, I really hope that WPF is the future. Windows Forms has incredible pain points, e.g. regarding Data Binding, and it's pretty much a thin film of .NET on a lot of existing stuff. When I had to debug into classes like BindingSource, it scared the hell out of me. Now, I don't know how the WPF classes look inside, but Microsoft is bound to have learned something between 2001 and 2006.
I love WPF because of
styling
data templates
excellent and first class data binding support
declarative UI set-up
atached properties
...
I can only hope that Microsoft will make more use internally of this UI technology, thereby reducing its weaknesses which have mostly to do with performance. WPF is fairly demanding.
In VS2010 I hope to see designers that will show off the power of the UI (the XML Schema designer in the Beta already looked pretty useful). I would think that an App like MS Word would profit a lot from all the transformation capabilities of WPF.
WPF is a great framework for creating apps. And when you combine it with a good GUI architecture such as MVC, MVP or MVVM it is brilliant at making interesting looking line-of-business apps with more pizazz than your standard WinForms application.
XAML on the other hand is the ugly cousin that comes along with WPF. The main issue with XAML is the tooling. The tools are worse than non-existent, because they make people think that there is a WPF designer like WinForms, when infact most devs I know use the equivalent of notepad to develop their XAML.
The other tooling issue with XAML is the compiler. XAML is only slightly better than magic strings. The compiler can't pick up most mistakes you make in XAML, and some mistakes won't even crash your app. Instead WPF will print an error message to your output and carry on.
Being that they essentially ditched winddows mobile for Windows Phone 7 which will only use WPF and XNA as its main UI layer I would have to say yes. One could even consider this move as an expiriment for the much more widely deployed Windows OS. That and most users love dumbed down eye candy IMHO.
On the question of tooling, I will concede that building WPF and Silverlight Apps in Visual Studio 2008's designer has required quite a bit of expertise to get right. However I hope you'll give a look to the improved designer in Visual Studio 2010 - it has many more features that we hope will make sense to the Windows Forms developer for building business forms, whether in Silverlight or WPF.
Check out these videos:
Data Binding and Forms Tools
Styling Tools
Futures
New Features in Beta 2
And get the Release Candidate here:
The team has a new Blog here
I hope you find this useful info - if you've already tried Visual Studio 2010 I'd love to hear your feedback. Send me mail at mwthomas at microsoft dot com.
Thanks
Mark Wilson-Thomas
Program Manager, WPF & Silverlight Designer, Visual Studio
IMHO, Microsoft gave some clues about it's future path by developing VS 2010 in WPF.
WPF is no more, no less than WinForms. It has a totally different and extensible way of UX design.
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.
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.
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.