freestockcharts.com is a great free Silverlight application that is a very powerful charting tool for investors. This tool allows you to connect to your Ameritrade brokerage account or you can create your own portfolio that mirrors your assets or create a watch list to keep track of investments that you are interested in. Freestockcharts has just about every type of charting indicator you can imagine with real time quotes and streaming news to help you keep track of what is going on in the market. It also allows you to create and save customizable layouts. Every investor wants their own personal customized dashboard to help keep track of their assets and Freestockcharts is a great option.
Whats New?
Of all the session of Silverlight Firestarter 2 the most interesting (for many of us) was the first. Scott Guthrie telling us for the first time what is going to happen in the future of Silverlight and what new features are coming up. Well first he started out with talking about the controversy of HTML5/Silverilght and reassuring everyone that Microsoft is dedicated to both HTML5 and Silverlight equally. One of the ways that Microsoft is adopting Silverlight internally is a new reporting application from the SQL team which is very powerful.
What are the new features?
Here is a quick list of some of the new features:
- Media
- - 1080p Video Streaming
- - Audio pitch correction (fast forward doesn’t make people sound like chipmunks)
- - Better power management
- - Remote control options
- Application
- - Breakpoints in XAML (databinding debugging)
- - Alot more options for very simple animations for very flexable UI
- - Native MVVM
- - Custom Markup extensions
- - Relative source binding
- - Low latency networking (much improved networking)
- Printing
- - Improved text clarity
- - Improved Print API (ability to print just what you want)
- Graphics
- - integrated Pivot Viewer control (eye popping graphics)
- - Immediate mode graphics api
- - GPU accelerated 3D (this opens up a lot of doors)
- Out of Browser
- - P-Invoke (ability to invoke external dlls including system win dlls)
- - Multiple windows
- Testing
- - Automated recording testing
- - Performance monitoring (CPU/Memory etc)
- Performance
- - Hardware Acceleration
- - 64 bit
Whew! Wow that’s a lot. Thanks so much to the Silverlight team for so much work. We are all very excited for the new launch of Silverlight 5 and all of the new capabilities it brings to the table!!!
“Silver Diagram is a project that we started some months ago. The goal is to develop an easy to use, fast and extendable application for drawing and editing diagram, purely implemented with Silverlight.”
This is a great little app that shows off the power of the Silverlight platform. It looks and feels very similar to windows graphing apps but with the added feature that it runs in your web browser and you can run it without any installation (aside from Silverlight) on any Mac or PC.
This is a great video from Silverlight TV. One of the powerful things you can do with silverlight is more robust client side error handling than most web applications. Kyle McClellan walks us through some great techniques on how to do this. He also gives some useful tips on data binding for comboboxes as well as walking us through metadata and how it can be used in validation.
Silverlight Firestarter is back for 2010. This is looking to be a great event with a ton of major players in the Silverlight realm with names such as Scott Guthrie, John Papa, Tim Heuer and more. This is a free event for current Silverlight developers and also those who are interested in Silverlight as a development platform. Even if your an HTML5/CSS developer it’s always good to know whats going on with different technologies.
What will be discussed?
Scott will start us off with ‘The Future of Silverlight’. This should be very interesting given the recent rumors that Silverlight is dead. Next up is Jesse Liberty on Data Binding Strategies with Silverlight and WP7. Later on we’ll hear from Yavor Georgiev on building apps with REST services and LINQ. Among other topics will be MVVM, Installation, Profiling and Performance and more. This promises to be a very fruitful event and at a price that can’t be beat!
Recently there was a PDC Conference in which Bob Muglia (Senior Vice President of the Server and Tools Business at Microsoft) made some statements which seemed to cause a huge buzz of controversy over Silverlight which produced this article from Tech Crunch. In this article, the author (MG Siegler) gave a lot of his own personal opinion and selected key phrases from Bob making it seem as though Microsoft was shifting away from Silverlight being a cross browser/OS application development platform to a platform that centered around mostly Windows Phone 7 and a video player browser plugin. Given how much effort Microsoft has put into Silverlight this article seemed like it couldn’t be right. Not to mention the lack of context given for Bobs statements. I did a little research and contacted Tim Heuer (a program manager on the Silverlight Team) and he gave me this link. Bob clarified his statement “Our Silverlight strategy and focus going forward has shifted.” as not a negative thing and confirmed Microsofts dedication to the success and development of Silverlight as a multi browser/OS development platform. Tim Heuer also chimed in on his blog with this article in which he detailed more of his own personal investment into Silverlight. John Papa has also chimed in with this article also reaffirming Microsofts commitment to Silverlight. So for all the Silverlight developers scared that they are going to lose their platform, never fear. Microsoft is not killing Silverlight. Quite the opposite. They are committed to the long term success of Silverlight as a rich media/application platform.
But what about HTML5?
Bob went on to reiterate that “The purpose of Silverlight has never been to replace HTML, but rather to do the things that HTML (and other technologies) can’t, and to do so in a way that’s easy for developers to use”. So for all the fearful antagonists who are holding on to HTML5 for dear life, never fear. Microsoft is not trying to kill HTML5. Quite the opposite. There is a lot of evidence that Microsoft is trying to reverse previous position (aka IE6) of proprietary web standards to embracing HTML5 web standards (IE9) which is good for all of us. Silverlights purpose is to provide a rich user experience for web applications, media and of course phone apps. Silverlight was never intended to be used as blogging software or other similar types of websites. Of course one could do this with Silverlight but it would really be nothing more than a novelty as SEO is a key requirement for these types of websites. This is not to say, however, that HTML5 isn’t a good platform for a web application either. The key is to look at the business requirements for the application, look at the capabilities of HTML5 and Silverlight, weigh the pros and cons, understand your users and make an informed decision.
Just messing around with my new FEZ Domino board and I thought I’d post up a quick tutorial on how to use a motion sensor with your board. First thing you will want to understand is interrupt ports. An interrupt port is a port that is listening and waiting for something to happen. For instance voltage levels going up or going down. In this tutorial I use a motion sensor that I got from parallax here. This is a very basic sensor that has voltage tolerance of 3-5v and has one pin that outputs high or low voltage levels. High means its sensed motion. The next part of this project involves a small speaker that outputs a tone to let you know its sensed motion. Nothing loud or anything but just for demonstration purpose. You can get the driver for the tone generation here: http://www.tinyclr.com/downloads/Component/FEZ_Components_Piezo.cs. So here’s the code:
#region motion sensor Thread.Sleep(30000); tone = new FEZ_Components.Piezo(FEZ_Pin.PWM.Di5); InterruptPort motion = new InterruptPort((Cpu.Pin)FEZ_Pin.Interrupt.Di1, false, Port.ResistorMode.Disabled, Port.InterruptMode.InterruptEdgeHigh); motion.OnInterrupt += new NativeEventHandler(motion_OnInterrupt); Thread.Sleep(-1); #endregion static void motion_OnInterrupt(uint data1, uint data2, DateTime time) { tone.Play(400, 1000); }
To see more about how to hook the hardware up check out the video:
There needs to be about a thirty second ‘warm up’ time as the sensor gets to know its surroundings and after that the sensor will be ready to be connected to the interrupt port. The interrupt port will listen for the voltage levels to go up and when they do it will play the tone.
So the issue that I ran into recently is that I’m getting data in an observable object list and then getting an updated list. I need to be able to compare each object in the list to see if it has been updated or not. The problem is that I have a lot of properties in each object and I had several object lists which I needed to compare. The solution I wanted involves IComparable. This is a very simple interface that implements CompareTo method only. CompareTo receives an object and returns an integer. This interface is used for comparing and doing things like sorting in arrays but in this case all I need to check for is if the CompareTo returns 0 (equals) or anything but 0 (not equal).
Another problem is that to implement this function you have to write all the checking code yourself and if you have alot of properties to check you have to do that manually somehow. I wanted something to simply check to see if all properties in the current object and the object passed in through CompareTo function were equal. Here is some code to do that:
// Implement IComparable interface and use this as your function #region IComparable Members public int CompareTo(object obj) { int return_value = 0; if (obj.GetType() == this.GetType()) { Type t = this.GetType(); foreach (PropertyInfo p in t.GetProperties()) { Type t2 = obj.GetType(); object prop1_value = p.GetValue(this, null); object prop1_name = p.Name; foreach (PropertyInfo p2 in t2.GetProperties()) { object prop2_value = p2.GetValue(obj, null); object prop2_name = p2.Name; if (prop1_name == prop2_name) { if (prop1_value != null && prop2_value != null) { if (!prop1_value.Equals(prop2_value)) { return_value++; } } break; } } } } else { return_value++; } return return_value; } #endregion
This uses system.reflection to iterate through the properties in both objects comparing the values using the ‘Equals’ method to validate the values are the same. If the properties are not the same the return_value is incremented and more than 0 is returned. This is pretty generic and should work with most classes you build. You may need to add in an if statement to filter out properties you do not wish to include in this comparison as this just checks all properties in the object.
As a Silverlight developer one of the things that you notice (if your paying attention) is the fact that there are tremendous Silverlight memory leaks. One of the most major leaks is in the
I recently had the need for printing a Google maps static image map in a Silverlight application. It needed to actually be embedded in the Silverlight app to take advantage of the Silverlight 4 printing library (a topic I will touch on later). I wrote an API to make it easy to do pretty much every thing that the Google static API allows you to do. Here’s a quick demo of what the results look like in silverlight:

