July 2007 Blog Posts

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...

yaTimer 1.2 Released

yaTimer version 1.2 has been released on July 27 (3 days ago) and I've been so busy catching up on other projects I haven't had the time to blog about it yet. yaTimer 1.2 is a free upgrade for all yaTimer customers, To upgrade your installation visit http://www.nbdtech.com/yaTimer/Upgrade.htm. I haven't released the auto-update for 1.2 yet because of a bug in the setup program of version 1.1, I forgot to include one dll that is used by the auto-update service, as a result the auto-update just doesn't work (it does work for anyone who originally had version 1.0.1). Version 1.2 does include the...

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...

yaTimer 1.2 To Be Released This Week

yaTimer 1.2 is now at the final testing phase and I will delay the release only for critical bugs. If you leave a comment in this post I'll e-mail you the moment the new version is available for download.

Extending the Free Update Period

With version 1.2 of yaTimer – my task timer application, I'm extending the free update period from 6 month to a year, and I'm also retroactively extending the free upgrade period to all existing customers. If you buy a yaTimer license you get any new version released within one year, no matter how big or small the upgrade is.

yaTimer 1.2 Task List Improvements: Highlight active counters

Disclaimer: this post talks about a new unreleased version of yaTimer – my task timer application, the software can, and will, change before the actual release – so there is no guarantee the new features I write about here will be in the release version. Details about the latest released version can always be found here. yaTimer 1.2 will be a free update to all current customers. This is the most requested feature for this version – and one that I actually wanted to add a long time ago, the reason it took so long is that at first I wanted...

New yaTimer 1.2 Feature: Quick-Task

Disclaimer: this post talks about a new unreleased version of yaTimer – my task timer software, the software can, and will, change before the actual release – so there is no guarantee the new features I write about here will be in the release version. Details about the latest released version can always be found here. yaTimer 1.2 will be a free update to all current customers. Quick-Task is a very simple but powerful feature. Before yaTimer 1.2 to time a task you had to fill in the task details and only then you could start timing, this is perfectly fine...

yaTimer Trial Period

yaTimer - my time tracking software, currently has a 45 days free trial. My original reason was that if someone uses it for this long they would be unlikely to stop, I still think this is true, but a 45 days "sales cycle" is way too long for me (at lease for now). I'm going to do a little experiment and drastically change the trial period, with version 1.2 (that will be released soon) I'm going to shorten the trial to 14 days. I hope this will make people evaluate yaTimer a little more seriously (because they have a more immediate deadline) and...

Two Ways to Start a Startup

Dharmesh Shah wrote a post called Startup Marketing: Big Bang vs. Darwinian Evolution. I totally agree with him, the first version of yaTimer - my time management application was released about two weeks after I started working on it.

New yaTimer 1.2 Windowing Features: Always on Top and Minimize to Notification Area

Disclaimer: this post talks about a new unreleased version of yaTimer – my task timer software, the software can, and will, change before the actual release – so there is no guarantee the new features I write about here will be in the release version. Details about the latest released version can always be found here. yaTimer 1.2 will be a free update to all current customers. Sometimes you want your timer to be always visible, sometimes you don't really care – that is why yaTimer 1.2 not only let you set the task list window as always-on-top it also let...

yaTimer 1.2 Progress Report

I haven't wrote about yaTimer in a while, that's mostly because I spend so much time working on it I didn't have time to write about it. I've just decided to freeze development and release the new version, version 1.2 was not supposed to be a major upgrade but it does have a huge number of tiny improvements – and work on all those tiny improvements adds up, it has taken me more time then I originally planed. So, everything that isn't already done is going to be postponed to the next version. It will take me some more time to release yaTimer...

How To Write an Automatic Update System Part 6 – The Update Process User Interface

This is part 6 of a series, previous posts: part 1, 2, 3, 4 and 5 In the end of the previous post in the series I wrote this part will be about updating the program while it's running and updating the service itself, this will wait until the next post because there is a small limitation to our auto-update service I didn't talk about – you can't interact with the user from a Windows service. Showing user interface from a service has been "not recommended" for a long time and disabled by default – but it takes just one checkbox to...

Update for yaTimer licensing options

I actually changed the licensing options a long time ago, but I've just found out the latest blog post about it wasn't updated. I simplified the licensing options, there is just one option now, for every yaTimer license you buy you can install yaTimer on up to 3 computers, I did this because I have multiple computers myself (that only me and my wife use) and having to buy multiple copies of software is extremely annoying to me. The next version of yaTimer is planned to have support for running off an external drive (such as a USB stick), for each license...

Creativity

I thought I wasn't a creative person, I just can't think of a software product idea, I don't have topics for blog posts and there is no chance I'll make any graphic design more interesting from black text on white/gray background. I thought creative people just have ideas pop into their head. I was wrong. Creativity is just picking ideas you see in front of you and using them, and the moment I start paying attentions I've started getting so many ideas I don't know what to do with them. I got the idea for my software product (yaTimer, a time tracking application)...

How To Write an Automatic Update System Part 5 – Working as a Limited User and Under Vista

This is part 5 of a series, previous posts: part 1, 2, 3 and 4 In the previous part we finally got our auto-update system working, the only problem is that it only works if we have administrator rights, I find this totally unacceptable (it also doesn't work at all under vista). The standard solutions is relatively simple, have a second component on the user's system that runs with sufficient privileges and let it do the actual updating, another approach is to prompt the user for the administrator name and password and use them to run a setup program with administrator rights,...

The Single Most Important Internationalization Tip

This post may be news to developers in the US but I (like most of the people in the world) have lived all my life on the wrong side of incorrect internationalization/localization efforts – so you can trust me on this. This post is written from a .net perspective, but it can be easily translated to any other environment. And the big tip is: respect the user preference, remember it may be different (or, in technical terms CurrentCulture, InvariantCulture). Respect the user preference - every string that is displayed to the user or entered by the user should be...

How To Write an Automatic Update System Part 4 – Downloading and Installing

This is part 4 of a series, previous posts: part 1, part 2 and part 3. After we got the download details in the previous post it's time to download the update. yaTimer - The software I'm selling, and obviously the easiest way to track your time - is a small application with small updates, so it just uses the .net WebClient class to download the file from the server, it's simple and easy to write the code and we can move on. On the other hand, if your application needs to download large files of the web you will soon discover the...

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.