15 August, 2010

People will pay for

From People Pay For Value - Their Value, Not Yours:
  • People will pay for an individual song (and maybe an album), but they would like the choice.
  • People will pay for great writing - whether it's in a magazine, newspaper, book or online. But, it has to be great (and not just your perception of great).
  • People will pay to see a movie - they just might not go to the theatre or to rent it from your physical store any more.
  • People will pay to be entertained.
  • People will pay to learn.
  • People will pay to be better connected.
  • People will pay for an exclusive experience.
  • People will pay for a premium experience.
  • People will pay for better access to customer service.
  • People will pay to avoid hassles.
  • People will pay to get things on their own time schedule (when they want it/how they want it).
  • People will pay for speed (whatever speed means in your industry).
  • People will pay for something that will give them more social clout.
  • People will pay for products that are virtual.
  • People will pay for information.
  • People will pay for more mobility.
  • People will pay for more flexibility.
  • People will pay for more comfort.

09 August, 2010

What? I pay 10$ to promote a visit to the US to everyone else?

realy? I pay 10$ to promote a visit to the US to everyone else? and me paying will make me want to visit the US more?
I'm staggered at the unflinching pseudo naivety. No, realy, you will pay for the promotion of visiting the US to others and of course also for the registration of your personal information that we will distribute to some people. And we would love for you to visit the US more often. And tell your friends. Have a nice day.
Euro talk

Silverlight Visual State Manager epiphanyish

Sometimes you use something without a deeper understanding. Or you just fumble arround until you get the desired effect. Then you deside to research the darn thing because it just doesn't do what you want it to do. Just now I got a flash of understanding about how the Visual State Manager works (at least in Blend):
  1. You create a base state
    • The begin state it shows when the control loads
  2. You create the end state(s)
    • How the control looks in the new state
  3. Then you add a state transition with some time
    • This makes the an animation that goes from the base/begin state to the end state.
    • The system calculates from the begin state and the end state what the values in between should be
    • Blend shows an animation in the timeline without keyframes
    • It is possible to change the begin time and end time of the animation
    • You can add easing functions to liven it up
    • If, for example, you change the end rotation value, this value will overrule the end state value
If you want to customize the animation futher, for example you want the object to go in a jagged path from the base to the end state, you need keyframes. I haven't found a way to add keyframes or change the animation to an Animation Using Keyframes except using de code editor. What my problem is with this is that i have to copy the end state values into the transition which seems, well, double work and it is error prone because you have to manually keep those values synchronized.

My first intuition was that you have a base/begin state and an end state, and in the transition you add keyframes which fall in between the begin and end state. The system should calculate from the begin state to the first keyframe value and from the last keyframe value to the end state for the last leg of the animation.

In summary:
  1. begin state to end state
  2. add a transition for time
  3. change the begin and end state begin and end times in the transition
  4. add transition effects
  5. Change the begin value and end value of the transition
for straightish animations, after that, make a storyboard your self an copy that into the transition

08 August, 2010

Note to self: Don't look at this post on mondays, in fact forget this, no realy, don't click...

/* IE 6 */

* html .yourclass { }

/* IE 7 */
*+html .yourclass{ }

/* IE 7 and modern browsers */
html>body .yourclass { }

/* Modern browsers (not IE 7) */
html>/**/body .yourclass { }

/* Opera 9.27 and below */
html:first-child .yourclass { }

/* Safari */
html[xmlns*=""] body:last-child .yourclass { }

/* Safari 3+, Chrome 1+, Opera 9+, Fx 3.5+ */
body:nth-of-type(1) .yourclass { }

/* Safari 3+, Chrome 1+, Opera 9+, Fx 3.5+ */
body:first-of-type .yourclass { }

/* Safari 3+, Chrome 1+ */
@media screen and (-webkit-min-device-pixel-ratio:0) {
.yourclass { }
}

01 August, 2010

Art is: Investing in art

One aspect I find in the realm of art is that a lot of the artists invest in the endevour of art. They spend their time making art to the exclusion of other possible activities. So much so that it becomes a matter of survival. Some art works are so labor intensive that merely creating the work results in a situation that if the work is not succesful the artist will suffer. You could also approach this aspect in another way. The investment in the psychological sense. Someone has spent his (or her) time in tedious repetition with the intention of making a cultural statement: The shear bloody-mindedness of the act makes the act stand out and part of the experience.

18 July, 2010

Getting Visual studio jQuery Intellisense working again within jQuery plugin pattern [update]

[update] final version:
(function ($) {

$ = jQuery; // HACK: Remove this line before production
your code here...
})(jQuery);
[update]


lately i've been working with jQuery in Visual studio. The Intellisense cool and all but when I tried to apply the plugin development pattern of Mike Alsup: A Plugin Development Pattern the Intellisense stopped working. After googling half way round the internet and finding no real answer I doodled around in the code and found a solution: temporarilly redefine the 'reference' to the $ sign.
Normally, in this plugin pattern you first create the closure:

// create closure

(function($) {
//your code
// end of closure

})(jQuery);

But the Intellisense doesn't like the self calling function so Intellisense breaks down. By redefining the $ sign Intellisense picks up where it left off and gives you the jQuery information. ( i haven't tested this extensively so it's still under probation):

///

///
//
// create closure
//
(function ($)
{
//
// plugin definition
//
//temporary reference to $ to get Visual studio jQuery Intellisense working again in this plugin pattern
//TODO: remove in production code


var $ = jQuery;



$.fn.hilight = function(options) {

  debug(this);
  // build main options before element iteration
  var opts = $.extend({}, $.fn.hilight.defaults, options);
  // iterate and reformat each matched element
  return this.each(function() {
  }
});

};

// end of closure

})(jQuery);

[Update]
I asked the nice people of the Web Development Tools Blog about this problem and they quickly answered:
[quote]
This is a known issue. We do not currently pass the parameter type information through the function closure for immediately executing functions. You can mitigate the issue somewhat by adding a
hint flag to your closure like so:
(function ($) {

///

your code here...
})(jQuery);
Note that the IntelliSense for '$' inside your closure will be flawed in that it will provide suggestions for members on jQuery.prototype, not jQuery itself. It will let chaining, etc. work though.
We are looking to fix this issue in a future version.
[quote]


Then i asked if just reassigning the $ to jQuery would work and Damian answered positively:

[quote]

I've done the same thing myself in the past, and it will work properly, but you just have to remember to remove the line :)

Note you shouldn't need the param hint if you assign the temp variable. You can just have:
(function ($) {
$ = jQuery; // HACK: Remove this line before production
your code here...
})(jQuery);

20 June, 2010

Silverlight "Expandable" grid with gridsplitter

a client needed a better user experience for a part of an application we had developed. The situation is as follows: A grid contains a control. The grid has three rows with a gridsplitter in the second row and the control in the third row. The control in question is a tabcontrol. Initially only the tabs of the tabcontrol are visible. The user can then drag the gridsplitter and reveal the content of the tab in the tabcontrol.
Now the gridsplitter does some strange stuff when it is dragged to get the correct height for the rows. It switches the height of the second row to an absolute value. This might work for some scenarios but not for mine. So I started to tinker with it and i think i have a fairly nice solution. I wait for the gridsplitter to do its magic, copy the height to the control and reset the height of the row to Auto. This way the (tab)control tells the grid row what the height should be and I can still use the gridsplitter for the draging part.
This solution is specific for the tabcontrol but I'm interested if this can be made more generic. How would you do this?

the source code VS2010: TabgridSplitter