Jason Nadal

Restless C#ding

March 2004 - Posts

Windows Mobile 2003 Connection Manager

Alan Jarvi has compiled a great reference for the Windows Mobile 2003 connection manager screens, located here.  However, the reason I went looking for info was buried in screens not shown.

By going to Start -> Settings -> Connections, hitting the Connections icon, then going to Advanced -> Network Card -> Wireless, one can see a bit more control over WLAN's manually.  I had found that my iPAQ was still trying to connect to the WLAN at devdays, and the checkbox “automatically connect to non-preferred networks” was not checked.

The results of this were that the iPAQ would only find my WLAN whenever I turned wireless off, and then it was obviously too late to connect. It drove me crazy until I found that screen.  For the majority of tasks, Windows Mobile 2003 makes wireless connection extremely simple compared to the kludgy interface of 2002. However, there are still those few little things, like if you accidently set a random network as the primary WLAN connection, that prove the UI isn't quite fully evolved yet...

.Net 2.0 ObjectDataSource

One of the cooler features of Whidbey and the 2.0 framework is the ability to bind data directly to the Business Layer.  In this article, I'll explain how this can be achieved simply, using the PDC bits. This is very cool, and will be enough to finally stop me from passing DataTables/Readers around through the layers (a big no-no).

Click here for the article

 

 

 

Whidbey & Longhorn Project Name Restrictions

This is just a reminder that strange things can happen when you try to name a project with an existing class in the .NET framework.  For example, for creating a new sample test project, I usually give it some sort of simple descriptor and put it in my HD's example code folder.

I was playing around with some very simple animation, and wanted to keep around a sample of animations based on paths, so I name my project PathAnimation, put some code in, attempt to compile, and get turned down because the PathAnimation class already exists in the 1.2/2.0 framework... whoops!

Posted: Mar 20 2004, 04:11 PM by thejay2 | with no comments
Filed under:
Longhorn, Future TV, and Obese Clients

From talks after the Newark Devdays conference, here's an article to hopefully break my blogger's block.  This is my vision for how convergence hardware (between tv and pc), the internet, and the tv viewer seeking more could look in the future. I term these “obese clients,“ using Avalon's extremely rich UI possibilities, and enhancing the stale push-tv model of today.  Let me know what you think....  or even better, get cable companies to think about offering services such as these.

http://weblogs.asp.net/jnadal/articles/90188.aspx

Article: "XAML Custom Controls and Animation"

My first article on XAML/Longhorn on Developer.com and CodeGuru.com was published today.

Here's the link:

XAML Custom Controls and Animation

 

Posted: Mar 08 2004, 10:26 AM by thejay2 | with no comments
Filed under:
ImageStack for Longhorn

Well, after a bit of time refactoring and ironing out some functionality issues, ImageStack for Longhorn Version A is on my downloads page (the file contains source code and binaries). This is an image browser that can be scrolled through with the mouse wheel, and zoomed with a mouse click.  Change folders with the “Get Image Stack“ button.

 


More screenshots here:

The same one, full size
Open Folder
Zoomed In

Any feedback is a good thing, as usual. The source code is fairly well documented, IMHO. There's a couple of caveats to still be worked out for version B, including a memory leak that I believe is either on the get filenames method, or the Canvas.RemoveRange method, and it should be used only on folders of about 15 or less images for now, but it works well, and is a pretty good display of animation.
Posted: Mar 06 2004, 08:16 PM by thejay2 | with no comments
Filed under:
Longhorn Animations and Timelines Part I

After a suggestion from DonXML, I left the world of manually starting up LengthAnimations bound to width and height properties of a Canvas control I had implemented via code, and took up the task of learning the Timeline object.

My goal was to have a Canvas, click on it, and zoom the width and height to the full size of the container Canvas, and stop when it reached the largest point. Let's check out some code (note, the SDK docs are a little unclear on how to do some of this, but the SDK team is on the right track with ease of how to find what is there...):

Timeline wTL = new Timeline();
wTL.StatusOfNextUse = UseStatus.ChangeableReference;
wTL.Enable(Timeline.Root);

LengthAnimationCollection w = GetAnimationCollection(MainPanel.Width.Value,wTL);
c.SetAnimations(
Canvas.WidthProperty, w);
w.SetDefaultParentTimeline(wTL);

wTL.RepeatCount = 0;
wTL.AutoReverse =
false;
wTL.Fill =
TimeFill.Hold;
wTL.FillDefault =
TimeFill.Hold;

wTL.Enable();
wTL.BeginIn(0);

...

private LengthAnimationCollection GetAnimationCollection(double size, Timeline t)
{

LengthAnimation la = new LengthAnimation();
la.To =
new Length(size);
la.Duration =
new Time(1000);
la.BeginIn(0);
la.AutoReverse =
false;
la.RepeatCount = 0;
la.ParentTimeline = t;
la.
InterpolationMethod = InterpolationMethod.Paced;
LengthAnimationCollection col = new LengthAnimationCollection();
col.Add(la);
return col;

}

The interesting thing about this (translated -- the thing that had me banging my head against the wall ready to scream) was that changing the Fill/FillDefault properties of the individual animations had no effect when they were added to the timeline.  You must change the Fill method to Hold/Freeze if you want your animated object to retain its final state when the animation is done, otherwise it'll either flash back to its original state, or if the wTL.AutoReverse property is set to true, it will animate back to its starting state. 

Also note, the LengthAnimation's InterpolationMethod property is set (in this case to Paced, but there are other options...linear, discrete, spline), in order to make the animation as smooth as possible.

So, with a minimal amount of code, this milestone of my image browser project has been met.

Posted: Mar 06 2004, 12:43 AM by thejay2 | with no comments
Filed under:
Longhorn Dev Experiences

Today's simple Longhorn dev trick?

Reference the sdk links in code comments, for example:

//timeline sample: ms-help://MS.LHSDK.1033/LHSDK/lhsdk/Samples/graphicsmm/timing/restarttimelines_csharp/./Source/default.htm

Thus you can click the links in the code, and get a convenient browser window within VS to view sample code.

Posted: Mar 05 2004, 11:18 PM by thejay2 | with no comments
Filed under:
Longhorn (and XP, 2000, etc) Speed Burst

Well, while configuring my PC to try to get some speed benefits whenever possible I came across this cool little util from Intel, sitting on that disk of stuff that came with my PC (and got ignored after I repaved it), called Intel Application Accelerator. 

This little app, with info here improves the i/o subsystem for Intel chipset mobo's.  The startup & compilation under longhorn is pretty noticably improved...

Best of all, there's a version for RAID, too...

Posted: Mar 05 2004, 10:33 PM by thejay2 | with no comments
Filed under:
ASP.NET Web security

Coming live from DevDays in Newark (really Secaucus), NJ:

 

The web security session explained the various authentication mechanisms inherent to IIS, as well as some of the various choices for access permissions.  Hardware vs. software and basic hack attempts were shown.  My favorite dumb exploit has got to be storing a price in a hidden field (in the context of an online ordering system)... people take advantage of this system weakness by changing the price and getting goods way below the legitimate costs. 

The discussion was beginner/ slight intermediate (today, we learn that asp.net page requests are in the ASP.NET process in task manager, and can be killed from there...)  On the deeper level, IIS 6's page request path, and the basics of application pooling were shown. All requests are piped through http.snd pointed to the appropriate isapi filter within the app pool.

Details on how to configure the ASP.NET worker process, and the asp.net service under IIS 6 were discussed more in depth.

More Posts Next page »