What I’ve Done

Related posts:people-to-people lending Pink Cameras Wiimote head tracking to create 3D Window

Related posts:

  1. people-to-people lending
  2. Pink Cameras
  3. Wiimote head tracking to create 3D Window



Related posts:people-to-people lending Pink Cameras Wiimote head tracking to create 3D Window

Related posts:

  1. people-to-people lending
  2. Pink Cameras
  3. Wiimote head tracking to create 3D Window


I ran in to an issue using custom complex classes in my model, valeologist that wouldn’t notify the View Model that something had changed. I didn’t like the idea of building everything as a one to one relationship between my View, symptoms View Model and Model just to get the UI to stay current. I prefer instead to create a single item, that is a collection or unit of my complex class.

here’s an example of the simple item model and it’s more complex element.

Model for SimpleItem

public class SimpleItem
{
private static FancyItem _item = new FancyItem();
public static FancyItem Item
{
get { return _item; }
set { _item = value; }
}
}

Model for FancyItem

 

public class FancyItem
{
private int _index = 0;
public int Index
{
get { return _index; }
set { _index = value; }
}

private string _name = string.Empty;
public string Name
{
get { return _name; }
set { _name = value; }
}

private string _label = string.Empty;
public string Label
{
get { return _label; }
set { _label = value; }
}

private DateTime _date = new DateTime();
public DateTime Label
{
get { return _date; }
set { _date = value; }
}
}

 

Then my ViewModel is something like this:

public FancyItem myFancyItem
{
set
{
if (SimpleItem.Item != value)
{
SimpleItem.Item = value;
InvokePropertyChanged("MyFancyItem");
}
}
get { return SimpleItem.Item; }
}

Then if my binding is something like this:

<TextBox Text="{Binding myFancyItem.Name, Mode=TwoWay}">

My PropertyChanged will never get called since I’m targeting down to the Name item. If I had an element that was directly exposing the Name string in the ViewModel then everything would work just fine. However, then I would have to duplicate all those lines of code for each variable that I want to expose and modify.

This is where my ModelBase event notification comes in to play.

public class ModelBase
{
public void ModelPropertyChanged(string p, EventHandler ModelItemUpdated)
{
ModelItemUpdated(p, EventArgs.Empty);
}
}

The idea with the ModelBase event, is pretty much the same as the View Model PropertyChangedEventHandler. The only challenge I’ve run in to is having to remember to feed it all the way of the food chain.

So here’s how I use it all together:

First I add some events to the parts that can be changed.

public class FancyItem : ModelBase
{
public static event EventHandler FancyItemUpdated = delegate { };

private int _index = 0;
public int Index
{
get { return _index; }
set
{
_index = value;
}
}

private string _name = string.Empty;
public string Name
{
get { return _name; }
set
{
_name = value;
ModelPropertyChanged("Name", FancyItemUpdated);
}
}

private string _label = string.Empty;
public string Label
{
get { return _label; }
set { _label = value; }
}

private DateTime _date = new DateTime();
public DateTime Date
{
get { return _date; }
set
{
_date = value;
ModelPropertyChanged("Date", FancyItemUpdated);
}
}
}

Then I add a listener to my simple model that fires off it’s own update event when something changes in the fancy model event it’s subscribed to.

public class SimpleItem : ModelBase
{
public static event EventHandler SimpleItemUpdated = delegate { };

public SimpleItem()
{
FancyItem.FancyItemUpdated +=new EventHandler(FancyItem_FancyItemUpdated);
}

void  FancyItem_FancyItemUpdated(object sender, EventArgs e)
{
ModelPropertyChanged("updated", SimpleItemUpdated);
}

private static FancyItem _item = new FancyItem();
public static FancyItem Item
{
get { return _item; }
set { _item = value; }
}
}

Then on the ViewModel, it subscribes to the SimpleItem model event and then notifies the PropertyChanged event.

public class SimpleViewModel : ViewModelBase
{
public static readonly AudioViewModel Instance = new AudioViewModel();
public SimpleViewModel()
{
// to subscribe to the event in the model we need to call the contstructor
SimpleItem mySimpleItem = new SimpleItem();
SimpleItem.SimpleItemUpdated +=new EventHandler(SimpleItem_SimpleItemUpdated);
}

void  SimpleItem_SimpleItemUpdated(object sender, EventArgs e)
{
InvokePropertyChanged("MyFancyItem");
}

public FancyItem myFancyItem
{
set
{
if (SimpleItem.Item != value)
{
SimpleItem.Item = value;
InvokePropertyChanged("MyFancyItem");
}
}
get { return SimpleItem.Item; }
}
}

It’s all a little crazy I know, but the idea here helps to extract the ViewModel from the underlying model even a step further.  Then If I need to store and retrieve my model data from isolated storage or some other external location it’s just one item that I have to get and set from as apposed to each little part.

The best part is that my UI is always up to date.

Related posts:people-to-people lending Pink Cameras Wiimote head tracking to create 3D Window

Related posts:

  1. people-to-people lending
  2. Pink Cameras
  3. Wiimote head tracking to create 3D Window


I ran in to an issue using custom complex classes in my model, valeologist that wouldn’t notify the View Model that something had changed. I didn’t like the idea of building everything as a one to one relationship between my View, symptoms View Model and Model just to get the UI to stay current. I prefer instead to create a single item, that is a collection or unit of my complex class.

here’s an example of the simple item model and it’s more complex element.

Model for SimpleItem

public class SimpleItem
{
private static FancyItem _item = new FancyItem();
public static FancyItem Item
{
get { return _item; }
set { _item = value; }
}
}

Model for FancyItem

 

public class FancyItem
{
private int _index = 0;
public int Index
{
get { return _index; }
set { _index = value; }
}

private string _name = string.Empty;
public string Name
{
get { return _name; }
set { _name = value; }
}

private string _label = string.Empty;
public string Label
{
get { return _label; }
set { _label = value; }
}

private DateTime _date = new DateTime();
public DateTime Label
{
get { return _date; }
set { _date = value; }
}
}

 

Then my ViewModel is something like this:

public FancyItem myFancyItem
{
set
{
if (SimpleItem.Item != value)
{
SimpleItem.Item = value;
InvokePropertyChanged("MyFancyItem");
}
}
get { return SimpleItem.Item; }
}

Then if my binding is something like this:

<TextBox Text="{Binding myFancyItem.Name, Mode=TwoWay}">

My PropertyChanged will never get called since I’m targeting down to the Name item. If I had an element that was directly exposing the Name string in the ViewModel then everything would work just fine. However, then I would have to duplicate all those lines of code for each variable that I want to expose and modify.

This is where my ModelBase event notification comes in to play.

public class ModelBase
{
public void ModelPropertyChanged(string p, EventHandler ModelItemUpdated)
{
ModelItemUpdated(p, EventArgs.Empty);
}
}

The idea with the ModelBase event, is pretty much the same as the View Model PropertyChangedEventHandler. The only challenge I’ve run in to is having to remember to feed it all the way of the food chain.

So here’s how I use it all together:

First I add some events to the parts that can be changed.

public class FancyItem : ModelBase
{
public static event EventHandler FancyItemUpdated = delegate { };

private int _index = 0;
public int Index
{
get { return _index; }
set
{
_index = value;
}
}

private string _name = string.Empty;
public string Name
{
get { return _name; }
set
{
_name = value;
ModelPropertyChanged("Name", FancyItemUpdated);
}
}

private string _label = string.Empty;
public string Label
{
get { return _label; }
set { _label = value; }
}

private DateTime _date = new DateTime();
public DateTime Date
{
get { return _date; }
set
{
_date = value;
ModelPropertyChanged("Date", FancyItemUpdated);
}
}
}

Then I add a listener to my simple model that fires off it’s own update event when something changes in the fancy model event it’s subscribed to.

public class SimpleItem : ModelBase
{
public static event EventHandler SimpleItemUpdated = delegate { };

public SimpleItem()
{
FancyItem.FancyItemUpdated +=new EventHandler(FancyItem_FancyItemUpdated);
}

void  FancyItem_FancyItemUpdated(object sender, EventArgs e)
{
ModelPropertyChanged("updated", SimpleItemUpdated);
}

private static FancyItem _item = new FancyItem();
public static FancyItem Item
{
get { return _item; }
set { _item = value; }
}
}

Then on the ViewModel, it subscribes to the SimpleItem model event and then notifies the PropertyChanged event.

public class SimpleViewModel : ViewModelBase
{
public static readonly AudioViewModel Instance = new AudioViewModel();
public SimpleViewModel()
{
// to subscribe to the event in the model we need to call the contstructor
SimpleItem mySimpleItem = new SimpleItem();
SimpleItem.SimpleItemUpdated +=new EventHandler(SimpleItem_SimpleItemUpdated);
}

void  SimpleItem_SimpleItemUpdated(object sender, EventArgs e)
{
InvokePropertyChanged("MyFancyItem");
}

public FancyItem myFancyItem
{
set
{
if (SimpleItem.Item != value)
{
SimpleItem.Item = value;
InvokePropertyChanged("MyFancyItem");
}
}
get { return SimpleItem.Item; }
}
}

It’s all a little crazy I know, but the idea here helps to extract the ViewModel from the underlying model even a step further.  Then If I need to store and retrieve my model data from isolated storage or some other external location it’s just one item that I have to get and set from as apposed to each little part.

The best part is that my UI is always up to date.

Related posts:Ask Dr. Ryan – from the past OLPC, otolaryngologist future of computing, shop and stuff…

Related posts:

  1. Ask Dr. Ryan – from the past
  2. OLPC, future of computing, and stuff…



Related posts:people-to-people lending Pink Cameras Wiimote head tracking to create 3D Window

Related posts:

  1. people-to-people lending
  2. Pink Cameras
  3. Wiimote head tracking to create 3D Window


I ran in to an issue using custom complex classes in my model, valeologist that wouldn’t notify the View Model that something had changed. I didn’t like the idea of building everything as a one to one relationship between my View, symptoms View Model and Model just to get the UI to stay current. I prefer instead to create a single item, that is a collection or unit of my complex class.

here’s an example of the simple item model and it’s more complex element.

Model for SimpleItem

public class SimpleItem
{
private static FancyItem _item = new FancyItem();
public static FancyItem Item
{
get { return _item; }
set { _item = value; }
}
}

Model for FancyItem

 

public class FancyItem
{
private int _index = 0;
public int Index
{
get { return _index; }
set { _index = value; }
}

private string _name = string.Empty;
public string Name
{
get { return _name; }
set { _name = value; }
}

private string _label = string.Empty;
public string Label
{
get { return _label; }
set { _label = value; }
}

private DateTime _date = new DateTime();
public DateTime Label
{
get { return _date; }
set { _date = value; }
}
}

 

Then my ViewModel is something like this:

public FancyItem myFancyItem
{
set
{
if (SimpleItem.Item != value)
{
SimpleItem.Item = value;
InvokePropertyChanged("MyFancyItem");
}
}
get { return SimpleItem.Item; }
}

Then if my binding is something like this:

<TextBox Text="{Binding myFancyItem.Name, Mode=TwoWay}">

My PropertyChanged will never get called since I’m targeting down to the Name item. If I had an element that was directly exposing the Name string in the ViewModel then everything would work just fine. However, then I would have to duplicate all those lines of code for each variable that I want to expose and modify.

This is where my ModelBase event notification comes in to play.

public class ModelBase
{
public void ModelPropertyChanged(string p, EventHandler ModelItemUpdated)
{
ModelItemUpdated(p, EventArgs.Empty);
}
}

The idea with the ModelBase event, is pretty much the same as the View Model PropertyChangedEventHandler. The only challenge I’ve run in to is having to remember to feed it all the way of the food chain.

So here’s how I use it all together:

First I add some events to the parts that can be changed.

public class FancyItem : ModelBase
{
public static event EventHandler FancyItemUpdated = delegate { };

private int _index = 0;
public int Index
{
get { return _index; }
set
{
_index = value;
}
}

private string _name = string.Empty;
public string Name
{
get { return _name; }
set
{
_name = value;
ModelPropertyChanged("Name", FancyItemUpdated);
}
}

private string _label = string.Empty;
public string Label
{
get { return _label; }
set { _label = value; }
}

private DateTime _date = new DateTime();
public DateTime Date
{
get { return _date; }
set
{
_date = value;
ModelPropertyChanged("Date", FancyItemUpdated);
}
}
}

Then I add a listener to my simple model that fires off it’s own update event when something changes in the fancy model event it’s subscribed to.

public class SimpleItem : ModelBase
{
public static event EventHandler SimpleItemUpdated = delegate { };

public SimpleItem()
{
FancyItem.FancyItemUpdated +=new EventHandler(FancyItem_FancyItemUpdated);
}

void  FancyItem_FancyItemUpdated(object sender, EventArgs e)
{
ModelPropertyChanged("updated", SimpleItemUpdated);
}

private static FancyItem _item = new FancyItem();
public static FancyItem Item
{
get { return _item; }
set { _item = value; }
}
}

Then on the ViewModel, it subscribes to the SimpleItem model event and then notifies the PropertyChanged event.

public class SimpleViewModel : ViewModelBase
{
public static readonly AudioViewModel Instance = new AudioViewModel();
public SimpleViewModel()
{
// to subscribe to the event in the model we need to call the contstructor
SimpleItem mySimpleItem = new SimpleItem();
SimpleItem.SimpleItemUpdated +=new EventHandler(SimpleItem_SimpleItemUpdated);
}

void  SimpleItem_SimpleItemUpdated(object sender, EventArgs e)
{
InvokePropertyChanged("MyFancyItem");
}

public FancyItem myFancyItem
{
set
{
if (SimpleItem.Item != value)
{
SimpleItem.Item = value;
InvokePropertyChanged("MyFancyItem");
}
}
get { return SimpleItem.Item; }
}
}

It’s all a little crazy I know, but the idea here helps to extract the ViewModel from the underlying model even a step further.  Then If I need to store and retrieve my model data from isolated storage or some other external location it’s just one item that I have to get and set from as apposed to each little part.

The best part is that my UI is always up to date.

Related posts:Ask Dr. Ryan – from the past OLPC, otolaryngologist future of computing, shop and stuff…

Related posts:

  1. Ask Dr. Ryan – from the past
  2. OLPC, future of computing, and stuff…



Related posts:Ask Dr. Ryan – from the past OLPC, otolaryngologist future of computing, shop and stuff…

Related posts:

  1. Ask Dr. Ryan – from the past
  2. OLPC, future of computing, and stuff…



story
Maxscript and C# – 04 from ruben henares on Vimeo.

I have improved the framerate quite a lot since last time. It is almost ready to be used for production. At the moment I am grabbing the positions of the joints, purchase
next step is to grab the rotations and apply the tracking data to a skinned character. Stay tuned!

Nicely done!

Related posts:people-to-people lending Pink Cameras Wiimote head tracking to create 3D Window

Related posts:

  1. people-to-people lending
  2. Pink Cameras
  3. Wiimote head tracking to create 3D Window


I ran in to an issue using custom complex classes in my model, valeologist that wouldn’t notify the View Model that something had changed. I didn’t like the idea of building everything as a one to one relationship between my View, symptoms View Model and Model just to get the UI to stay current. I prefer instead to create a single item, that is a collection or unit of my complex class.

here’s an example of the simple item model and it’s more complex element.

Model for SimpleItem

public class SimpleItem
{
private static FancyItem _item = new FancyItem();
public static FancyItem Item
{
get { return _item; }
set { _item = value; }
}
}

Model for FancyItem

 

public class FancyItem
{
private int _index = 0;
public int Index
{
get { return _index; }
set { _index = value; }
}

private string _name = string.Empty;
public string Name
{
get { return _name; }
set { _name = value; }
}

private string _label = string.Empty;
public string Label
{
get { return _label; }
set { _label = value; }
}

private DateTime _date = new DateTime();
public DateTime Label
{
get { return _date; }
set { _date = value; }
}
}

 

Then my ViewModel is something like this:

public FancyItem myFancyItem
{
set
{
if (SimpleItem.Item != value)
{
SimpleItem.Item = value;
InvokePropertyChanged("MyFancyItem");
}
}
get { return SimpleItem.Item; }
}

Then if my binding is something like this:

<TextBox Text="{Binding myFancyItem.Name, Mode=TwoWay}">

My PropertyChanged will never get called since I’m targeting down to the Name item. If I had an element that was directly exposing the Name string in the ViewModel then everything would work just fine. However, then I would have to duplicate all those lines of code for each variable that I want to expose and modify.

This is where my ModelBase event notification comes in to play.

public class ModelBase
{
public void ModelPropertyChanged(string p, EventHandler ModelItemUpdated)
{
ModelItemUpdated(p, EventArgs.Empty);
}
}

The idea with the ModelBase event, is pretty much the same as the View Model PropertyChangedEventHandler. The only challenge I’ve run in to is having to remember to feed it all the way of the food chain.

So here’s how I use it all together:

First I add some events to the parts that can be changed.

public class FancyItem : ModelBase
{
public static event EventHandler FancyItemUpdated = delegate { };

private int _index = 0;
public int Index
{
get { return _index; }
set
{
_index = value;
}
}

private string _name = string.Empty;
public string Name
{
get { return _name; }
set
{
_name = value;
ModelPropertyChanged("Name", FancyItemUpdated);
}
}

private string _label = string.Empty;
public string Label
{
get { return _label; }
set { _label = value; }
}

private DateTime _date = new DateTime();
public DateTime Date
{
get { return _date; }
set
{
_date = value;
ModelPropertyChanged("Date", FancyItemUpdated);
}
}
}

Then I add a listener to my simple model that fires off it’s own update event when something changes in the fancy model event it’s subscribed to.

public class SimpleItem : ModelBase
{
public static event EventHandler SimpleItemUpdated = delegate { };

public SimpleItem()
{
FancyItem.FancyItemUpdated +=new EventHandler(FancyItem_FancyItemUpdated);
}

void  FancyItem_FancyItemUpdated(object sender, EventArgs e)
{
ModelPropertyChanged("updated", SimpleItemUpdated);
}

private static FancyItem _item = new FancyItem();
public static FancyItem Item
{
get { return _item; }
set { _item = value; }
}
}

Then on the ViewModel, it subscribes to the SimpleItem model event and then notifies the PropertyChanged event.

public class SimpleViewModel : ViewModelBase
{
public static readonly AudioViewModel Instance = new AudioViewModel();
public SimpleViewModel()
{
// to subscribe to the event in the model we need to call the contstructor
SimpleItem mySimpleItem = new SimpleItem();
SimpleItem.SimpleItemUpdated +=new EventHandler(SimpleItem_SimpleItemUpdated);
}

void  SimpleItem_SimpleItemUpdated(object sender, EventArgs e)
{
InvokePropertyChanged("MyFancyItem");
}

public FancyItem myFancyItem
{
set
{
if (SimpleItem.Item != value)
{
SimpleItem.Item = value;
InvokePropertyChanged("MyFancyItem");
}
}
get { return SimpleItem.Item; }
}
}

It’s all a little crazy I know, but the idea here helps to extract the ViewModel from the underlying model even a step further.  Then If I need to store and retrieve my model data from isolated storage or some other external location it’s just one item that I have to get and set from as apposed to each little part.

The best part is that my UI is always up to date.

Related posts:Ask Dr. Ryan – from the past OLPC, otolaryngologist future of computing, shop and stuff…

Related posts:

  1. Ask Dr. Ryan – from the past
  2. OLPC, future of computing, and stuff…



Related posts:Ask Dr. Ryan – from the past OLPC, otolaryngologist future of computing, shop and stuff…

Related posts:

  1. Ask Dr. Ryan – from the past
  2. OLPC, future of computing, and stuff…



story
Maxscript and C# – 04 from ruben henares on Vimeo.

I have improved the framerate quite a lot since last time. It is almost ready to be used for production. At the moment I am grabbing the positions of the joints, purchase
next step is to grab the rotations and apply the tracking data to a skinned character. Stay tuned!

Nicely done!

I remember a talk we had back in the early nineties, disorder while I was working at Spry / Internet in a Box, the idea had come up of creating an OS that was entirely based on a browser. At the time the browser was NCSA Mosaic for use and an early beta of Netscape Navigator for the competition.  So to say it was too early to talk about is a bit of an understatement. However, it really felt the next logical step. Creating applications and services that ran entirely in the browser would have been crazy hard then with the limitations of  HTML. We didn’t have JavaScript or CSS yet. Everything we built was done as server side code. CGI applications written in either C/C++ or Perl. My weapon of choice became Perl and SQL for all my programming needs. With everything happening on the server you were a little limited with what you could do. Oh and most users were using a 56k dial up modem to get online.

Fast forward to today and a web application developer has a huge and amazing toolbox at their disposal. Rails, ASP.NET, Python, PHP, Flash, Silverlight, JavaScript, HTML5, CSS, Web Services like JSON, and on and on. Thanks to all the hard word and loads of talented people the limits are no longer the technology or access speeds. The limits now are only our creativity. Now we have geolocation, video, animations, and sound.

The only limit that we’ve had up until recently was that if you wanted to create interactive content you needed a client application running on your local machine. To create Flash you needed to purchase, install and use the editing tools locally. Which brings me to the point of this post. I only recently found out about a new crop of web based IDEs (Integrated Development Environment). In no particular order.

Coderun

CodeRun Online IDE

You can create and edit .Net , Silverlight and many other types of projects. This is the best damn thing ever. I hope someone at Microsoft buys these guys.

Cloud 9

Cloude 9 IDE example

All your stand website editing power with Git and Mercurial integration. Paid accounts offer many must have features but the free version can get you up and running quickly.

Akshell

use this to create your web apps in JavaScript. Plain and simple just the way it should be.

jsFiddle

jsFiddle example

It’s not a full fledged IDE, but it is a great way to start learning, creating and sharing JavaScript snippets. Fantastic way to explore and experience in realtime how the code works.

Now for the design side of things

It’s not nearly as new but the design side has been very well covered too.

Photoshop.com

The current leader in desktop design has an excellent head start on the web with their Photoshop.com service

 

Aviary

Aviary is quickly becoming a designers hub online. What started as a Photoshop lite application for minor photo tweaks has quickly evolved in to one of the best collections of creative applications that run in the browser.


Picnik

My personal favorite web based photo editing tool. I became hooked on Picnik thanks to its early Flickr integration that made it so easy to jump right in and edit my photos already on Flickr.



Related posts:people-to-people lending Pink Cameras Wiimote head tracking to create 3D Window

Related posts:

  1. people-to-people lending
  2. Pink Cameras
  3. Wiimote head tracking to create 3D Window


I ran in to an issue using custom complex classes in my model, valeologist that wouldn’t notify the View Model that something had changed. I didn’t like the idea of building everything as a one to one relationship between my View, symptoms View Model and Model just to get the UI to stay current. I prefer instead to create a single item, that is a collection or unit of my complex class.

here’s an example of the simple item model and it’s more complex element.

Model for SimpleItem

public class SimpleItem
{
private static FancyItem _item = new FancyItem();
public static FancyItem Item
{
get { return _item; }
set { _item = value; }
}
}

Model for FancyItem

 

public class FancyItem
{
private int _index = 0;
public int Index
{
get { return _index; }
set { _index = value; }
}

private string _name = string.Empty;
public string Name
{
get { return _name; }
set { _name = value; }
}

private string _label = string.Empty;
public string Label
{
get { return _label; }
set { _label = value; }
}

private DateTime _date = new DateTime();
public DateTime Label
{
get { return _date; }
set { _date = value; }
}
}

 

Then my ViewModel is something like this:

public FancyItem myFancyItem
{
set
{
if (SimpleItem.Item != value)
{
SimpleItem.Item = value;
InvokePropertyChanged("MyFancyItem");
}
}
get { return SimpleItem.Item; }
}

Then if my binding is something like this:

<TextBox Text="{Binding myFancyItem.Name, Mode=TwoWay}">

My PropertyChanged will never get called since I’m targeting down to the Name item. If I had an element that was directly exposing the Name string in the ViewModel then everything would work just fine. However, then I would have to duplicate all those lines of code for each variable that I want to expose and modify.

This is where my ModelBase event notification comes in to play.

public class ModelBase
{
public void ModelPropertyChanged(string p, EventHandler ModelItemUpdated)
{
ModelItemUpdated(p, EventArgs.Empty);
}
}

The idea with the ModelBase event, is pretty much the same as the View Model PropertyChangedEventHandler. The only challenge I’ve run in to is having to remember to feed it all the way of the food chain.

So here’s how I use it all together:

First I add some events to the parts that can be changed.

public class FancyItem : ModelBase
{
public static event EventHandler FancyItemUpdated = delegate { };

private int _index = 0;
public int Index
{
get { return _index; }
set
{
_index = value;
}
}

private string _name = string.Empty;
public string Name
{
get { return _name; }
set
{
_name = value;
ModelPropertyChanged("Name", FancyItemUpdated);
}
}

private string _label = string.Empty;
public string Label
{
get { return _label; }
set { _label = value; }
}

private DateTime _date = new DateTime();
public DateTime Date
{
get { return _date; }
set
{
_date = value;
ModelPropertyChanged("Date", FancyItemUpdated);
}
}
}

Then I add a listener to my simple model that fires off it’s own update event when something changes in the fancy model event it’s subscribed to.

public class SimpleItem : ModelBase
{
public static event EventHandler SimpleItemUpdated = delegate { };

public SimpleItem()
{
FancyItem.FancyItemUpdated +=new EventHandler(FancyItem_FancyItemUpdated);
}

void  FancyItem_FancyItemUpdated(object sender, EventArgs e)
{
ModelPropertyChanged("updated", SimpleItemUpdated);
}

private static FancyItem _item = new FancyItem();
public static FancyItem Item
{
get { return _item; }
set { _item = value; }
}
}

Then on the ViewModel, it subscribes to the SimpleItem model event and then notifies the PropertyChanged event.

public class SimpleViewModel : ViewModelBase
{
public static readonly AudioViewModel Instance = new AudioViewModel();
public SimpleViewModel()
{
// to subscribe to the event in the model we need to call the contstructor
SimpleItem mySimpleItem = new SimpleItem();
SimpleItem.SimpleItemUpdated +=new EventHandler(SimpleItem_SimpleItemUpdated);
}

void  SimpleItem_SimpleItemUpdated(object sender, EventArgs e)
{
InvokePropertyChanged("MyFancyItem");
}

public FancyItem myFancyItem
{
set
{
if (SimpleItem.Item != value)
{
SimpleItem.Item = value;
InvokePropertyChanged("MyFancyItem");
}
}
get { return SimpleItem.Item; }
}
}

It’s all a little crazy I know, but the idea here helps to extract the ViewModel from the underlying model even a step further.  Then If I need to store and retrieve my model data from isolated storage or some other external location it’s just one item that I have to get and set from as apposed to each little part.

The best part is that my UI is always up to date.

Related posts:Ask Dr. Ryan – from the past OLPC, otolaryngologist future of computing, shop and stuff…

Related posts:

  1. Ask Dr. Ryan – from the past
  2. OLPC, future of computing, and stuff…



Related posts:Ask Dr. Ryan – from the past OLPC, otolaryngologist future of computing, shop and stuff…

Related posts:

  1. Ask Dr. Ryan – from the past
  2. OLPC, future of computing, and stuff…



story
Maxscript and C# – 04 from ruben henares on Vimeo.

I have improved the framerate quite a lot since last time. It is almost ready to be used for production. At the moment I am grabbing the positions of the joints, purchase
next step is to grab the rotations and apply the tracking data to a skinned character. Stay tuned!

Nicely done!

I remember a talk we had back in the early nineties, disorder while I was working at Spry / Internet in a Box, the idea had come up of creating an OS that was entirely based on a browser. At the time the browser was NCSA Mosaic for use and an early beta of Netscape Navigator for the competition.  So to say it was too early to talk about is a bit of an understatement. However, it really felt the next logical step. Creating applications and services that ran entirely in the browser would have been crazy hard then with the limitations of  HTML. We didn’t have JavaScript or CSS yet. Everything we built was done as server side code. CGI applications written in either C/C++ or Perl. My weapon of choice became Perl and SQL for all my programming needs. With everything happening on the server you were a little limited with what you could do. Oh and most users were using a 56k dial up modem to get online.

Fast forward to today and a web application developer has a huge and amazing toolbox at their disposal. Rails, ASP.NET, Python, PHP, Flash, Silverlight, JavaScript, HTML5, CSS, Web Services like JSON, and on and on. Thanks to all the hard word and loads of talented people the limits are no longer the technology or access speeds. The limits now are only our creativity. Now we have geolocation, video, animations, and sound.

The only limit that we’ve had up until recently was that if you wanted to create interactive content you needed a client application running on your local machine. To create Flash you needed to purchase, install and use the editing tools locally. Which brings me to the point of this post. I only recently found out about a new crop of web based IDEs (Integrated Development Environment). In no particular order.

Coderun

CodeRun Online IDE

You can create and edit .Net , Silverlight and many other types of projects. This is the best damn thing ever. I hope someone at Microsoft buys these guys.

Cloud 9

Cloude 9 IDE example

All your stand website editing power with Git and Mercurial integration. Paid accounts offer many must have features but the free version can get you up and running quickly.

Akshell

use this to create your web apps in JavaScript. Plain and simple just the way it should be.

jsFiddle

jsFiddle example

It’s not a full fledged IDE, but it is a great way to start learning, creating and sharing JavaScript snippets. Fantastic way to explore and experience in realtime how the code works.

Now for the design side of things

It’s not nearly as new but the design side has been very well covered too.

Photoshop.com

The current leader in desktop design has an excellent head start on the web with their Photoshop.com service

 

Aviary

Aviary is quickly becoming a designers hub online. What started as a Photoshop lite application for minor photo tweaks has quickly evolved in to one of the best collections of creative applications that run in the browser.


Picnik

My personal favorite web based photo editing tool. I became hooked on Picnik thanks to its early Flickr integration that made it so easy to jump right in and edit my photos already on Flickr.



I remember a talk we had back in the early nineties, disorder while I was working at Spry / Internet in a Box, the idea had come up of creating an OS that was entirely based on a browser. At the time the browser was NCSA Mosaic for use and an early beta of Netscape Navigator for the competition.  So to say it was too early to talk about is a bit of an understatement. However, it really felt the next logical step. Creating applications and services that ran entirely in the browser would have been crazy hard then with the limitations of  HTML. We didn’t have JavaScript or CSS yet. Everything we built was done as server side code. CGI applications written in either C/C++ or Perl. My weapon of choice became Perl and SQL for all my programming needs. With everything happening on the server you were a little limited with what you could do. Oh and most users were using a 56k dial up modem to get online.

Fast forward to today and a web application developer has a huge and amazing toolbox at their disposal. Rails, ASP.NET, Python, PHP, Flash, Silverlight, JavaScript, HTML5, CSS, Web Services like JSON, and on and on. Thanks to all the hard word and loads of talented people the limits are no longer the technology or access speeds. The limits now are only our creativity. Now we have geolocation, video, animations, and sound.

The only limit that we’ve had up until recently was that if you wanted to create interactive content you needed a client application running on your local machine. To create Flash you needed to purchase, install and use the editing tools locally. Which brings me to the point of this post. I only recently found out about a new crop of web based IDEs (Integrated Development Environment). In no particular order.

Coderun

CodeRun Online IDE

You can create and edit .Net , Silverlight and many other types of projects. This is the best damn thing ever. I hope someone at Microsoft buys these guys.

Cloud 9

Cloude 9 IDE example

All your stand website editing power with Git and Mercurial integration. Paid accounts offer many must have features but the free version can get you up and running quickly.

Akshell

use this to create your web apps in JavaScript. Plain and simple just the way it should be.

jsFiddle

jsFiddle example

It’s not a full fledged IDE, but it is a great way to start learning, creating and sharing JavaScript snippets. Fantastic way to explore and experience in realtime how the code works.

Now for the design side of things

It’s not nearly as new but the design side has been very well covered too.

Photoshop.com

The current leader in desktop design has an excellent head start on the web with their Photoshop.com service

 

Aviary

Aviary is quickly becoming a designers hub online. What started as a Photoshop lite application for minor photo tweaks has quickly evolved in to one of the best collections of creative applications that run in the browser.


Picnik

My personal favorite web based photo editing tool. I became hooked on Picnik thanks to its early Flickr integration that made it so easy to jump right in and edit my photos already on Flickr.



Selection of projects past.