Web Log Gallery 1954 News Links About
Search for:
Observations and opinions of Life, from a different state of mind.


On this page....
More SilverLight XAML Samples
Fractal art, The Linux 60 and Implied Fascism
Three Windows LiveWriter Code Sample plug-ins
A very simple SilverLight WPF/e sample
Image is almost everything, Context is almost nothing
Kurt Vonnegut, Writer of Classics of the American Counterculture
Analog just may be dead or dying
Dick Dale Music Business Advice
Site Updates

Archives


RSS 2.0

Send mail to the author(s) Email

Sign In

2005-2008 Sean Gephardt and www.zillinois.com

Powered by:
newtelligence dasBlog 2.0.7226.0
 Friday, April 27, 2007

The more I play with the Expression Design XAML tool, the more I'm becoming a fan. Here are a couple of links for comparison, the first "Test One", is a SilverLight XAML page with images, and the second "Test Two" is a SilverLight XAML page without images. The obvious web performance pros & cons apply, with images comes more HTTP calls, therefore a slower time to render. In my opinion, using the images does make it look just a hair better than the "vanilla" XAML (sans images). The "vanilla" XAML weighs considerably less as far as download time goes, and is also only one small HTTP call, but I feel it looks to dry when comparing them side by side. As you can see, I was trying to mimic my existing web site design, but I can foresee how I will need to revisit certain design elements, like sub-page navigation. One thing I might play with is dynamically resize the container element (in this case a <div>), especially as it pertains to working with other inline content. Obviously, there are some short cuts that can be taken to achieve certain visual effects like subtle animation, and I'll be digging into those when I have the time.

Friday, April 27, 2007 7:52:56 AM UTC  #     |   |  Trackback

 Wednesday, April 25, 2007

I've been a longtime fan of the fractal digital art form, and here are the winners of the 2006 ICM Benoit Mandelbrot Fractal Art Contest. If I had to pick, it would be a toss up between "Ebony and Ivory" and "Spiral with opaque lines", but are just my personal favorites.

Coding Horror asks "Where are all the open source billionaires?" I count about 60 different distributions of Linux here, can you just imagine the DLL Hell that creates? And Microsoft get skewered for having 5 current versions of Vista?

Famed Author Naomi Wolfe gives some cynical, and disturbing correlations between Fascism and what we are experiencing with the current Republican administration. Here are her "10 Steps to close down an open society". After reading this list, please review items # 9 & # 10, as in my opinion these last two are probably the most terrifying. Though it has yet to be seen, 9 & 10 should act as a wake up call for anyone still left in the dark about the current state of the union.

Wednesday, April 25, 2007 8:26:53 AM UTC  #     |   |  Trackback

 Thursday, April 19, 2007

I found a way to copy and paste source code for last nights post about WPF/e, but it involved copying from Visual Studio into Microsoft Word, then into Windows Live Writer. The following three are examples of some plug-ins, the last of the three being for Visual Studio 2005. I'm currently favoring "Insert Code for Windows LiveWriter", as it has the most robust UI and feature set of the three. Specifically, as you can see if you are reading this on a web page, it can add a default background color, that is independent of your web site design. The line numbers are a very nice touch also. Enjoy!

From "VSPaste.msi"
using System;
using System.Collections.Generic;
using System.Windows.Forms;

namespace WinTestApp1
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }
}

From "Insert Code for Windows Live Writer.msi"

   1:  using System;
   2:  using System.Collections.Generic;
   3:  using System.Windows.Forms;
   4:   
   5:  namespace WinTestApp1
   6:  {
   7:      static class Program
   8:      {
   9:          /// <summary>
  10:          /// The main entry point for the application.
  11:          /// </summary>
  12:          [STAThread]
  13:          static void Main()
  14:          {
  15:              Application.EnableVisualStyles();
  16:              Application.SetCompatibleTextRenderingDefault(false);
  17:              Application.Run(new Form1());
  18:          }
  19:      }
  20:  }

From "BlogMyCode.msi" (VS 2005 Plugin):

using System;
using System.Collections.Generic;
using System.Windows.Forms;

namespace WinTestApp1
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }
}

Thursday, April 19, 2007 5:48:53 PM UTC  #     |   |  Trackback

As I've mentioned, I've recently been playing with Microsoft's new "SilverLight" technology, and cooked up this little sample last night. Having been knee-deep in DHTML based web page development since the "golden age" ( the 1990's! ) of the Internet, I've been keenly interested in this technology, touted by some as a "Adobe Flash Killer". It has been somewhat challenging to move from the OOP mind-set of C#, to a more declarative programming model, and in that was it feels similar to DHTML. Obviously, because SilverLight uses JavaScript, incorporating XmlHttpRequests (or AJAX) does become very tempting, not mention very easy to add to the design equation. There seems to be a very loose overall design pattern present in most of the samples I've seen of SilverLight, and I look forward to seeing what those really creative types out there on the web can dream up. One idea that I have that keeps surfacing, would be the ability to simply use JavaScript/XmlHttp against an HttpHandler that return XAML. This may sound like a very "chatty" client, but if done right, could really embody the whole "Rich Internet Application" space. Can I assume that Flash probably is able of using that same design? Probably, otherwise why would Microsoft invest in such a product? I'm curious what security concerns may rear their ugly heads in the future, but it would seem that Adobe Flash is used quite heavily, especially in the "Web 2.0" world, and has clearly been met with a high level of success and popularity, and no glaring security issues.

[sample XAML]

 

<Canvas xmlns="http://schemas.microsoft.com/client/2007"

        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

        Loaded="javascript:root_Loaded" Background="Transparent" Canvas.Top="0" Canvas.Left="40" Height="300" Width="600" Name="ZillinoisNav">

 

    <Canvas.Triggers>

        <EventTrigger RoutedEvent="BtnBlog.Loaded">

            <EventTrigger.Actions>

                <TriggerActionCollection>

                    <BeginStoryboard>

                        <Storyboard BeginTime="0" Duration="1">

                            <DoubleAnimation Storyboard.TargetName="BtnBlog" Storyboard.TargetProperty="(Canvas.Top)" From="-20" To="5" AutoReverse="false" BeginTime="0:0:0" Duration="0:0:0.1" RepeatBehavior="1"/>

                            <DoubleAnimation Storyboard.TargetName="Btn1954" Storyboard.TargetProperty="(Canvas.Top)" From="-20" To="5" AutoReverse="false" BeginTime="0:0:0" Duration="0:0:0.2" RepeatBehavior="1"/>

                            <DoubleAnimation Storyboard.TargetName="BtnGuitars" Storyboard.TargetProperty="(Canvas.Top)" From="-20" To="5" AutoReverse="false" BeginTime="0:0:0" Duration="0:0:0.3" RepeatBehavior="1"/>

                            <DoubleAnimation Storyboard.TargetName="BtnOptions" Storyboard.TargetProperty="(Canvas.Top)" From="-20" To="5" AutoReverse="false" BeginTime="0:0:0" Duration="0:0:0.4" RepeatBehavior="1"/>

                            <DoubleAnimation Storyboard.TargetName="BtnLinks" Storyboard.TargetProperty="(Canvas.Top)" From="-20" To="5" AutoReverse="false" BeginTime="0:0:0" Duration="0:0:0.5" RepeatBehavior="1"/>

                        </Storyboard>

                    </BeginStoryboard>

                </TriggerActionCollection>

            </EventTrigger.Actions>

        </EventTrigger>

    </Canvas.Triggers>

 

    <!-- First Button -->

    <Canvas x:Name="BtnBlog" Canvas.Left="5" Canvas.Top="5" Background="Transparent" MouseEnter="javascript:handleMouseEnter" MouseLeave="javascript:handleMouseLeave" MouseLeftButtonUp="javascript:handleMouseUp" MouseLeftButtonDown="javascript:handleMouseDown">

        <Rectangle x:Name="BtnBlogBorder" Stroke="#999999" StrokeThickness="1" RadiusX="1" RadiusY="1" Height="20" Width="75" Canvas.Left="0" Opacity="0.5" >

            <Rectangle.Fill>

                <LinearGradientBrush StartPoint="0.0,0.0" EndPoint="0.0,1.0" Name="BtnBlogLineGradBrush">

                    <GradientStop Color="Transparent" Offset="0"/>

                    <GradientStop Color="#CCCCCC" Offset="1"/>

                </LinearGradientBrush>

            </Rectangle.Fill>

        </Rectangle>

        <TextBlock x:Name="BtnBlogText" Canvas.Top="3" Canvas.Left="13" FontSize="12" Foreground="#FFFFFF" Text="Web Log" Cursor="Hand" FontFamily="Tahoma" FontStyle="Normal" FontWeight="Normal" />

    </Canvas>

 

    <!-- Second Button -->

    <Canvas x:Name="Btn1954" Canvas.Left="85" Canvas.Top="5" Background="Transparent" MouseEnter="javascript:handleMouseEnter" MouseLeave="javascript:handleMouseLeave" MouseLeftButtonUp="javascript:handleMouseUp" MouseLeftButtonDown="javascript:handleMouseDown">

        <Rectangle x:Name="Btn1954Border" Stroke="#999999" StrokeThickness="1" RadiusX="1" RadiusY="1" Height="20" Width="95" Canvas.Left="0" Opacity="0.5" >

            <Rectangle.Fill>

                <LinearGradientBrush StartPoint="0.0,0.0" EndPoint="0.0,1.0">

                    <GradientStop x:Name="Btn1954Grad1" Color="Transparent" Offset="0"/>

                    <GradientStop x:Name="Btn1954Grad2" Color="#CCCCCC" Offset="1"/>

                </LinearGradientBrush>

            </Rectangle.Fill>

        </Rectangle>

        <TextBlock x:Name="Btn1954Text" Canvas.Top="3" Canvas.Left="13" FontSize="12" Foreground="#FFFFFF" Text="Gallery 1954" Cursor="Hand" FontFamily="Tahoma" FontStyle="Normal" FontWeight="Normal" />

    </Canvas>

 

    <!-- Third Button -->

    <Canvas x:Name="BtnGuitars" Canvas.Left="185" Canvas.Top="5" Background="Transparent" MouseEnter="javascript:handleMouseEnter" MouseLeave="javascript:handleMouseLeave" MouseLeftButtonUp="javascript:handleMouseUp" MouseLeftButtonDown="javascript:handleMouseDown">

        <Rectangle x:Name="BtnGuitarsBorder" Stroke="#999999" StrokeThickness="1" RadiusX="1" RadiusY="1" Height="20" Width="90" Canvas.Left="0" Opacity="0.5" >

            <Rectangle.Fill>

                <LinearGradientBrush StartPoint="0.0,0.0" EndPoint="0.0,1.0">

                    <GradientStop x:Name="BtnGuitarsGrad1" Color="Transparent" Offset="0"/>

                    <GradientStop x:Name="BtnGuitarsGrad2" Color="#CCCCCC" Offset="1"/>

                </LinearGradientBrush>

            </Rectangle.Fill>

        </Rectangle>

        <TextBlock x:Name="BtnGuitarsText" Canvas.Top="3" Canvas.Left="13" FontSize="12" Foreground="#FFFFFF" Text="Buy Guitars" Cursor="Hand" FontFamily="Tahoma" FontStyle="Normal" FontWeight="Normal" />

    </Canvas>

 

    <!-- Fourth Button -->

    <Canvas x:Name="BtnOptions" Canvas.Left="280" Canvas.Top="5" Background="Transparent" MouseEnter="javascript:handleMouseEnter" MouseLeave="javascript:handleMouseLeave" MouseLeftButtonUp="javascript:handleMouseUp" MouseLeftButtonDown="javascript:handleMouseDown">

        <Rectangle x:Name="BtnOptionsBorder" Stroke="#999999" StrokeThickness="1" RadiusX="1" RadiusY="1" Height="20" Width="70" Canvas.Left="0" Opacity="0.5" >

            <Rectangle.Fill>

                <LinearGradientBrush StartPoint="0.0,0.0" EndPoint="0.0,1.0">

                    <GradientStop x:Name="BtnOptionsGrad1" Color="Transparent" Offset="0"/>

                    <GradientStop x:Name="BtnOptionsGrad2" Color="#CCCCCC" Offset="1"/>

                </LinearGradientBrush>

            </Rectangle.Fill>

        </Rectangle>

        <TextBlock x:Name="BtnOptionsText" Canvas.Top="3" Canvas.Left="13" FontSize="12" Foreground="#FFFFFF" Text="Options" Cursor="Hand" FontFamily="Tahoma" FontStyle="Normal" FontWeight="Normal" />

    </Canvas>

 

    <!-- Fifth Button -->

    <Canvas x:Name="BtnLinks" Canvas.Left="355" Canvas.Top="5" Background="Transparent" MouseEnter=