Useful Tools and Information

OzCode – the best debugging tool for .net (really)

Disclaimer:I do some work as a subcontractor of the company behind OzCode and I’ll probably become an investor in OzCode, in other words, I'm so impressed with this tool that I'm going to put a significant (for me) chunk of my own hard earned cash behind it. OzCode is an extension for Visual Studio that adds all sort of debugging aids: It includes simple stuff like a better exception widow that makes it trivially easy to drill down to the exception base cause. Unbelievably useful stuff like search in in-memory data structures and the ability to easily see the contents of collections of...

Excel Doesn’t Open When Double-clicking on a File

Some time ago excel stopped opening files when you double click on them on my mother’s computer. The first thing I did was check the file accusations but they looked fine, Google was no help because there are too many sites about Excel. Good thing I read Raymond Chen’s blog The Old New Thing and I remembered seeing something about this a long time ago, the full detail and explanation are here. This can happen in any version of Excel including 2007 and 2010, the instructions in the post are the same only now the options dialog...

Dropbox is pure magic

Dropbox at it’s core is a very simple concept – you define a folder on your computer (usually called “My Dropbox”) and the content of this folder is automatically synchronized with the drop box server (for easy backup) and with a similar folder on you other computers (for truly amazing effortless file transfer), they also have apps for the major mobile phones that let you access your data on the go. What makes Dropbox so amazing is how effortless everything is, you drag a PDF document into you dropbox folder and you can immediately read it on your iPhone,...

NDepend

NDepend is a tool that can read .net assemblies and calculate all sort of code matrices from them – and it’s an absolutely amazing tool. The amount of information you can get from it is overwhelming, there are 82 built in code metrics (according to the web site, I didn’t count) and least 4 major kinds of visualizations and an SQL-like language you can use to query arbitrary details about your code. Now, I have to warn you, this tool has a pretty steep learning curve, it is downright intimidating (did I mention an SQL-like language to query your code?) but this...

FastSpring

I use FastSpring for order processing, when you buy a yaTimer license you are actually buying it from FastSpring, they do all the credit card processing, handle taxes, send you the e-mail with activation code and take care of all the tiny details that needs to be taken care of when selling stuff on-line, once a month* the money just appears in my bank account. There are many other companies that have similar offering but what makes FastSpring unique is their customer support, you send them an e-mail anytime and you always get a quick response from someone that...

How to Enable FTP on IIS7 / Windows Server 2008

I’m writing this here because this information is hard to find, searching for related keywords will get you a lot of incorrect answers, I hope this post will save someone (maybe even me) time in the future. Windows Firewall and non-secure FTP traffic Windows firewall can be configured from command line using netsh command. 2 simple steps are required to setup Windows Firewall to allow non-secure FTP traffic 1) Open port 21 on the firewall: netsh advfirewall firewall add rule name="FTP (no SSL)" action=allow protocol=TCP dir=in localport=21   2) Activate firewall application filter for FTP (aka Stateful FTP) that will dynamically open ports for data connections: netsh...

WPF XAML Data Binding Cheat Sheet

One of the best things about WPF is the advanced data binding support, the Binding class that is used to create data bindings has many interesting and useful options. And I never remember the more advanced options when I’m writing XAML. So I wrote a very detailed “cheat sheet” for the WPF Binding class, I hope you’ll find it useful. WPF XAML Data Binding Cheat Sheet (PDF), latest version, updated February 22. This is the first draft, I’ll update it when I find mistakes and based on comments to this blog post. If this becomes popular I’ll write similar documents for other WPF/XAML features. This cheat...

Blurred Images in WPF

Bitmaps and icons displayed using WPF often have a very annoying blur effect caused by WPF trying to draw the image with sub pixel precision. Let’s take the following image: The image is diaplyed in the WPF window using this XAML: <Image Source="blurexample.png" Stretch="None" Margin="5.0" VerticalAlignment="Top" HorizontalAlignment="Left"/> But if we set it’s margin to 5.5 pixels (or place the image after something that can take non-integral number of pixels to draw, like text) we get this: That is obviously unacceptable, but how can we overcome this? The best solution I’ve found is the Bitmap class described in this post. But the bitmap class has one limitation making...

Excellent Resource for Freelancers

Just in case any freelancer or consultant that is reading this blog doesn’t know about Freelance Switch it’s a great blog with freelancing advice and resources. They even recommended yaTimer about a year ago.

Lambda in XAML

Here are links to a 3 part series with code that let you use C#-like lambda expressions in XAML instead of writing value converters. For example, instead of writing a value converter that takes a DateTime and calls ToShortTimeString you can write: <TextBlock Text='{Binding Source={x:Static s:DateTime.Now}, Converter={fix:Lambda "dt=>dt.ToShortTimeString()"}}'> WPFix Part 1 (Lambda Converter Extension) WPFix Part 2 (Binding Extension) WPFix Part 3 (Extension Methods)

Technical Debt

"Technical debt" is the mess you make when you take shortcuts while developing software. It's a very powerful concept and it's easy to explain it to anyone with the basic understanding in taking loans, even without any technical background (for example, management). When you do something the quick and dirty way, instead of the right way, you take on technical debt, every time you have to do something with that code it's now going to take longer because its badly designed (just like interest payments) and you should sometime re-write the offending code (pay off the debt) and that will take more...

Custom Chrome (window frame) with WPF

This post on the WPF SDK blog contains almost everything you need to know to change your window appearance using WPF, this includes: Extending Vista glass effects into your window. Maximizing a window with WindowStyle of None without covering the taskbar. Removing information from the application title bar (Vista only). Drawing in the window title area in a way that is compatible with Vista glass effect. A must read for every WPF developer.

Watch This

Anyone thinking about starting a software company (or already in the process of starting one) should watch this, several times. http://www.justin.tv/hackertv/97862/DHH_Talk__Startup_School_2008 I couldn’t agree more with this talk.

Browser-shots

If you do any web development this service has to be in your bookmarks. You type in the Url of a web site and you get images of how it renders in a variety of operating systems and browsers. http://browsershots.org/

Free PDF Print Driver

CutePDF writer is a free utility that let you "print" to PDF. It's really simple, it install a virtual printer and when you use that printer it saves the results to a PDF file. you can get it at: http://www.cutepdf.com/Products/CutePDF/writer.asp Don't forget to download and install the free conveter. It's a good solution if you want to create PDF files from any application, like my own yaTimer.

Templates for WPF Custom Controls

I had planned to write a series about how powerful WPF's item control is, I wanted to show how easy it is to write a calendar using just the built in controls. But then I found this article by Charles Petzold on MSDN magazine His focus is completely different then mine, but his example does so much more then what I wanted to post that I'm not going to bother.

Setting the Selection Color for a list box item in WPF

WPF’s styling and templating support is amazing, but some controls are easier to template then others, one of the least intuitive to style controls is the ListBox, it’s very difficult to change the ListBoxItem selection background color for example. Here is a post on the WPF SDK blog that explains how to do it. I’ve posted this here so I’ll know where to look the next time I want to style a list box

Binding to the Current Item in WPF

Here's something really cool you can do with WPF data binding – bind to the current item in a collection.

The Download Sites Scam

Andy Brice, Creator the table planning software PerfectTablePlan, did a little experiment and posted an obviously fake software program to a lot download sites, and not only got listed on a lot of them – he also got many 5-star awards from some of those sites, read his post here. I've suspected this for some time, when you're looking for software those days often all you find are those spammy, low quality and ad filed download sites, they get their high search engine position by sending all those 5-star awards and getting a link from sites posting them. I haven't submitted yaTImer,...

Another Post about the Benefits of Releasing Early

Andy Brice wrote a post on his blog titled If you aren’t embarrassed by v1.0 you didn’t release it early enough. I really like the idea of releasing early, yaTimer, my time tracking software, was released just two weeks after I started working on it (two weeks of nights and weekends, I don't believe in quitting your "day job" so soon). Version 1.0 was missing important features, the setup program user experience was very poor and you couldn't even buy it (I didn't even setup my payment processor before releasing it). The current version (1.2) it much better and I plan to stop being...

Partial Serial Number Verification

I've just seen this post about how to prevent crackers from breaking a software serial number protection by reverse engineering the serial checking code (found via 47 Hats). If you are writing software you should take a look, it's very interesting, the main concept is to break the serial number verification code into several independent parts and include just one of them in the software, replacing the included part between versions or any time a cracker releases a keygen or serial number. So by never including the complete algorithm in your program you are denying the crackers access to it and by...

Book Recommendation: Applications = Code + Markup, by Charles Petzold

I learned to program for Windows by reading Charles Petzold's "Programming Windows" and it is one of the most enjoyable technical book I ever had the pleasure to read, so when I decided I want to buy an actual book about WPF I just ordered "Application = Code + Markup". If you just want to quickly jump into programming with WPF then this isn't the book you're looking for, the book doesn't even introduce XAML until the second half of the book. This is an in depth book that explains how things work behind the scenes, and I think it's a must...

Tim Lister on Best Practices

There's an interview with Tim Lister (the author of Peopleware) on the business of software blog. I'd like to just quote here the last question and answer from the interview: Cramblitt: What do you think about the reliance on best practices? Lister: I get chills when I hear that phrase.  From my point of view there are some pretty good practices, but no best practices because that implies generic software development.  All projects are related to the domain they’re in.  A best practice for defibrillator software is not the best practice in another domain.  I’d like people to think about patterns – abstracting...

32bit Windows is Not Limited to 2GB/4GB

I've just seen another blog post that talks about the Windows 4GB memory limit Here is a link to a series of posts on Raymond Chen's excellent blog that explains this in detail, I'm posting this link here so I'll have quick access to it the next time I read about the 2/4 GB limit. http://blogs.msdn.com/oldnewthing/archive/2004/08/22/218527.aspx The short version, address space is not the same as virtual memory is not the same as virtual memory. On 32bit systems a single process (not the entire system) is limited to a 4GB Address Space (not memory) (and it can use only 2GB out of it, the other 2GB belongs to...

Increasing Your Sales and SEO

If you are a small software company you should read Patrick McKenzie's MicroISV on a Shoestring blog. Here are two posts on improving your web-site/increasing your sales: Increase Your Software Sales On-page SEO For Small Companies I've done most of what he recommended on my site, and I'm planning to do the reset soon.

Kevin’s WPF bag-o-tricks

Kevin's WPF Bag-o-Tricks is THE control / sample library for anyone doing WPF development, this is a link to a page that always has the latest version, (announced in this blog post). And if you do any serious WPF development you should really subscribe to Kevin Moore’s blog.

The Single Most Important Google AdWords Advice

Look for negative keywords – add them to your campaign. Then a week or two later – look for more negative keywords and add them to your campaign. Then a week or two later … you get the point, keep analyzing you logs and adding negative keyword, otherwise your campaign performance will degrade over time. The google keyword tool has a new negative keyword finder, use it too.

Google Alerts

Google Alerts is useful service from google, you subscribe to a search term and every time a new page with this search term is found by google they send you an e-mail. As a small company use should subscribe to at least your company name and your product name, it will help you see who is talking about you on the internet. You can also add keywords relevant to your business, the name of your top competitors and your web site address (to find all links to www.example.com use link:www.example.com).

SVG to XAML Convertor

This is a very useful tool for anyone doing WPF development (not only Silverlight). If you are using WPF and the Silverlight image at the bottom doesn't look right don't worry, the generated XAML usually works well in the "full" WPF, you can test it using XAML Pad or XAML Cruncher(Scroll down to the Installable Executables section). This tool doesn't set the StrokeStartLineCap property correctly, whenever you see StrokeEndLineCap="Round" on a Path element just add a StrokeStartLineCap="Round" and you should be fine SVG to Silverlight Workbench, blog entry with information about it.