I posted before on How to Install Windows Vista or Windows 7 from USB Flash Drive which uses manual command line method to transfer your CD/DVD installs onto the bootable USB stick. I just used that other day to build bootable USB stick with Windows 7 RTM and it works great.

However, I just found about free WinToFlash utility which automates that process. So, if you are in hurry to build that bootable USB stick with Windows install it might come handy: http://wintoflash.com/home/en/

Tagged with:
 

Are We Rewriting Too Much?

This has been long on my mind. I didn’t know what it was at first, but it was there, like a splinter in my mind, driving me mad. Well, not quite, but then, beta release of Moonlight 2.0 triggered these thoughts. I imagine that right now, you’re feeling a bit like Alice. Hmm? Tumbling down the rabbit hole?

You see, bunch of smart developers are essentially re-creating Silverlight so it can be used on Linux and they did same thing with .NET framework. Imagine the hours, months, years, that were spent doing that. Years! And for what? So same exact thing can be rewritten… The more exact the better.

Does that strike you as not really efficient way to use resources? I mean these guys could be inventing the next .NET or next Silverlight but they are spending their time rewriting something that already exists… Sure, they learn from that effort, sure it is useful, but wouldn’t they learn more by creating something new? Wouldn’t they contribute to community more by creating something that didn’t exist before?

I’ve seen this play out all the time elsewhere… VB3 applications are converted to VB6 applications, then to VB.NET, then to ASP and after that to ASP.NET and today to Silverlight. And in most cases there is no benefit to the end-users that are using these applications… They do exactly same job with minor differences unchanged… And tomorrow, tomorrow we’ll be converting exact same thing to the next new and shiny technology.

This strikes me as ridiculous way to spend resources, talent and time. Yet, we do it all the time. I’ve done it and I am sure you’ve done it as well. And all for no benefit to the end-user. We developers are sometimes to blame too. We push the latest and greatest because we think it is better, or perhaps just because we want to play with it. Sure, sometimes it is necessary, but every single time? I doubt it.

The question is, are we making anything really better? I’ve seen software becoming worse with that next rewrite. Wouldn’t be better to spend time dreaming and building that next big thing, shooting for the stars, even if it failed, instead of rewriting the same old just to make it questionably better?

Or maybe this is how it is supposed to work. Nature works this way. Randomly, new things get created with little changes, some better, some worse, and through elimination best incremental improvements survive. And so it goes…

Big difference is that nature has time on its side, while our time is limited. The question we should be asking ourselves is: Are we working on things that matter?

 

Spinners

No, not wheel spinners! You’ve seen these animated gif’s used in AJAX apps to indicate that an operation of undetermined duration which might or might not complete is in progress. Here:

ajax-loader-1

If you are after these here is good web site to automagically create them.

And you can use them in desktop apps too. I used animated gif in TweetPow while tweets are being loaded, because you know, that perfectly defines an operation of undetermined duration which might or might not complete…

Anyway, for desktop apps, simply add them to the PictureBox and voila, they spin.

Tagged with:
 

Color Scheme Designers

Here are two of web-base color scheme/palette generators that I find I use whenever I need to come up with decent color scheme. You can really use them for either desktop or web apps when you need to find harmonious colors that go well together.

First is Color Scheme Designer. Super easy to use and has color simulation mode so you can see how your color scheme looks to people that are color blind.

ColorSchemeDesigner

Adobe kuler is another color scheme generator that  is good if you are looking for pre-defined color schemes, there are ton of them there… You can create your own as well, but I think Color Scheme Designer is better fit for that task.

AdobeKuler

 

This is continuation of my post yesterday about new color selection controls in DotNetBar for WPF.

ColorItemSelector Control

ColorItemSelector is a control that provides list of Office style colors available for selection. It is used by ColorInput control on its drop-down, but you can use it as standalone control too. Here is screenshot of ColorItemSelector control:

ColorItemSelector

ColorItemSelector control key properties and events:

  • SelectedColor – Indicates the selected color, may be null if there is no color selected.
  • MoreColorsButtonVisibility – Indicates visibility of “More Colors…” button that opens the color selection dialog.
  • SelectedColorChanged event, occurs when selected color has changed.

ColorComb control

ColorComb control is another color selection tool that displays colors in a comb pattern. Here is screenshot of the ColorComb control:

ColorComb

ColorComb control key properties and events:

  • SelectedColor – Indicates the selected color, may be null if there is no color selected.
  • SelectedColorChanged event, occurs when selected color has changed.

ColorBlender control

ColorBlender is color selection tool that displays color palette and allows selection using mouse. Here is screenshot of the ColorBlender control:

ColorBlender

  • SelectedColor – Indicates the selected color, may be null if there is no color selected.
  • SelectedColorChanged event, occurs when selected color has changed.

ColorPickerButton control

ColorPickerButton control is design to be used on Ribbon and combined with ColorItemSelector. ColorPickerButton is contained in Ribbon assembly.

ColorPickerButton WPF Control

This is XAML code that you can use to setup ColorPickerButton:

<dc:ColorPickerButton>
<de:ColorItemSelector SelectedColor="{Binding Path=SelectedColor, Mode=TwoWay, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type dc:ColorPickerButton}}}" />
</dc:ColorPickerButton>

ColorPickerButton control key properties and events:

  • SelectedColor – Indicates the selected color, may be null if there is no color selected.
  • SelectedColorChanged event, occurs when selected color has changed.
Tagged with:
 

Latest DotNetBar for WPF 5.2 that is coming out really soon includes 5 new color related controls:

  1. ColorInput control which is text-box style control that allows you to type the color in RGB format, for example #FE20DE. It also includes drop-down color picker and a color chooser dialog.
  2. ColorItemSelector, is a color selector with Office style colors that you can use as standalone control, or combine with ColorPickerButton control.
  3. ColorComb control, a comb style color selector.
  4. ColorBlender, a palette style color selector.
  5. ColorPickerButton, a button that can be used on Ribbon and that you combine with ColorItemSelector to select pre-defined color.

ColorInput Control

ColorInput control allows you to enter the color using RGB format or to choose color from drop-down color picker. You can also use built-in color selection dialog to choose the color.

Here is how ColorInput control looks like:

ColorInput1

With drop-down showing Office style colors:

ColorInput2

ColorInput control key properties and events:

  • Value – indicates the selected color value. It may be null if there is no color selected.
  • EditColorAlphaComponent – Indicates whether control shows alpha transparency component in edit portion of control. Default value is false.
  • ShowDropDown – Indicates whether drop-down button on the right-hand side of control is shown.
  • ShowCheckBox – Indicates whether check-box is shown which allows end-user to make control read-only.
  • WatermarkText – Indicates the watermark text to be displayed in control when there is no value.
  • WatermarkAlignment – Indicates the watermark text alignment within the control.
  • WatermarkBehavior – Indicates whether watermark text is hidden when control gets input focus or when it has valid value.
  • WatermarkBrush – Indicates the brush used to render watermark text.
  • WatermarkEnabled – Indicates whether watermark is enabled.
  • MoreColorsButtonVisibility – Indicates whether drop-down color picker displays the “More Colors…” button.
  • ValueChanged bubbling event – Occurs when Value property changes.

Ribbon Styling

ColorInput control provides built-in style to blend into the Ribbon. Simply assign following Style to the ColorInput control:

<de:ColorInput Style="{DynamicResource {ComponentResourceKey TypeInTargetAssembly=de:ColorInput, ResourceId=Ribbon}}"

Localization of system strings

One of the most common tasks when working with input controls is the localization or customization of system strings used by the control. All system strings that color input controls are using are defined as string resources and you can customize them as such easily by providing your own string resource. The string resource key ID’s are all available as static members of StringKeys class. Here is how to define custom string resources:

1.  Define namespace so you can use string type:

 <Window x:Class="Editors.Window1"
 xmlns:s="clr-namespace:System;assembly=mscorlib"

2.  Define custom string resources as such:

 <Window.Resources>
 <s:String x:Key="{ComponentResourceKey {x:Type de:StringKeys}, {x:Static de:StringKeys.MoreColorsButton}}">More Colors Custom</s:String>
 </Window.Resources>

That’s it. Note that you can define these resources in XAML by creating resource dictionary and then merging this to the application resources so customizations are application wide. You can also define them per control as well.

Customizing Colors On Drop-Down

To customize colors displayed on drop-down part of the ColorInput control, you need to define new style for ColorItemSelector control that is used by ColorInput control. Click here to download the XAML file which has sample style that you can re-use and modify to suite your needs.

Tomorrow, rest of the controls…

Tagged with:
 

Trust

It strikes me that cornerstone of every single positive human relationship is trust. Friendship, marriage, business partnerships, employee/employer, company/customers relationship etc…

Trust is something you do not get by default. Trust is earned. It is not that you start by not trusting, but rather, you start by reserving your judgment for later time when you have more data points to work with. It is wait and see approach. Trust is then built by making and keeping promises whether explicit or implied. It is easily lost and hardly earned. It is more precious than gold in my opinion. Once you have built the trust you better keep your best kung-fu grip on it.

For a company, having the customers trust is probably the highest mark of achievement. It might be impossible goal, but we should strive. My approach and expectation from anyone working here is to base all customer relations on this: Building the trust. I make promises and I always keep them or if for some reason I cannot, I will ask you to release me from my promise with reasons of why I am unable to uphold it.

The consequence is that you do not make promises you know you will not keep. It also means saying no, to things you know you cannot do or know that will not be done. You will be saying fewer times yes and many more times no. There is certainty in this as well as expectations being reasonably set.

Now, you might be asking yourself, why is he waxing about trust all of a sudden? I believe that all companies have guiding principles, call it principles of conduct. These principles are not what is said or marketed, but what is actually being done. Words are cheap as they say. Mission statements, policies, etc. are all defined by actions. Actions either defeat them or reinforce them. Actions always, always, speak louder than words.

You know what I am talking about. Company says that highest priority for them is customer service, yet when you call, you cannot reach anybody. Or when they say they stand behind their products, but you can’t get replacement when product is broke… This highlights discrepancy between what is being said, i.e. marketed, and what is actually being done. They publicly say they care about their customers, but by their actions reveal what real principle is: they couldn’t care less.

These real principles that company employs in its relations with both customers and employees are often not published or even recognized. Sometimes they are really bad, sometimes they are good, more often they are mediocre and sometimes people are not aware that they exist, but they are always there. Examples of companies aligning themselves to the real principles of their conduct, at least in my opinion, would be Atlassian, 37 Signals, Zappos just to name the few.

My goal with this post is to put into the words principles that guide us at DevComponents. This is the first one.

 

404 Disaster

I just got shocked by this 404 page. Yes, it says it is 500, but actually it is 404. What where they thinking? Can I cram the message in every single language on one page? Yep, they certainly tried.

404 Disaster

Can you imagine message box designed by same committee? Yep, something like this:

MessageBoxFromHell

Seriously, I shudder…

 

You Touch It, You Own It

If you worked with me on a team you know about this rule. If you touch the code, you are also responsible for it. I am glad to see others sharing same view.

It is really about taking responsibility for the things we do as developers. If you inherit code from someone else, if you modify someone else’s code, you and you alone are responsible for it.

It is your responsibility to make sure it is in good shape, and it is your responsibility to ensure it works. If you inherit code that is big mess of spaghetti, it your responsibility to fix it. If you make changes to other developer’s code you are responsible for them. You don’t get to blame the other guy.

Now, you might say, by that rule it is best not do anything. Yes, you are right, that is if you want to be without job…

The goal is to improve something, even just a little bit every single day. The goal is to do something good today.

 

If you are struggling to get things done, here is a daily plan from Benjamin Franklin that you can use:

BenFrankingDailyPlan

 

Looking for something?

Use the form below to search the site:

Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!

Visit our friends!

A few highly recommended friends...

© 2009 Denis Basaric: DevComponents Blog