The Johnson Blog

Ramblings of a geek with a few hobbies…

Tag: Development

  • Build System

    Last night I put together a simple build system and got some of the application versioning in place for the future.  I’m running CruiseControl.NET for the builds but haven’t set it up for continuous integration since I’m the only one coding.  I’m also not running any build tasks other than a straight compile, although once I get some time that may change to include running my NUnit test cases.

    All-in-all, I didn’t spend a lot of time on Chef this weekend, but I got a few very important things done.

    In the very near future I need to really examine my source control system. I am using, and have been using, CVS at home for several years.  But I haven’t really used it for more than a simple version controlled file repository – few branches, few labels, etc.   At work I’m very comfortable with our source control system, but I’m just not with CVS.  On my list of possible replacements are SubVersion and SourceGear Vault.  All said, I’m still quite nervous about changing systems.

  • Registration Keys

    Over the weekend I finally spent some time to tackle the problem of registration keys.  Particularly, generating them.  The last piece of software I attempted this was WakeUp! Alarm Clock, with a very cheesy, homegrown routine for creating a key tied to the user’s name.  I never ran across any cracks/keygens for WakeUp! but I’m 99.999% sure that that’s because I charged a meager $5 for it.

    With Chef, however, I’m planning on a steeper price tag and don’t want to make the mistake of using an easily cracked scheme.  So, I turned my attention to the cryptographic services provided by .NET and now have a simple and, what should be, effective solution using public key cryptography.

    I haven’t integrated it into the application yet, but that shouldn’t take too long.  Once the code is in place, I’ll start strong naming the assemblies and even obfuscate them.  The obfuscation will prevent the casual snooper from using a tool such as Reflector to simply copy code and recompile it into a working replica of Chef.  The strong naming will then ensure that someone cannot release a cracked version of my assemblies with the registration limitations removed.  Pretty cool I think.

    Today I spent some time reviewing several payment processing options.  Currently, RegNow is the leading candidate.

  • Beta by Thanksgiving?

    A while back I tossed around the notion of having a beta of Chef available for testing by Thanksgiving.  So far I’m doing quite well with this goal.  Now that the setup situation has been resolved, I can work on a few other issues that have to be done before I add the few final features that will be in the 1.0 product.  It may not be too far-fetched to see the first beta available in the coming weeks, so if you’d like to give it a try I would be very appreciative.  Just shoot me an email or comment here.

  • Chef, Sql Express, and Installers

    Over the past week or so I have been reviewing the landscape of Installers that I can use to get Chef installed on people’s machines. The landscape has changed quite a bit since the last time I looked, with a lot more small install authoring tools available. Before, it was just InstallShield or Wise Installer – now there’s NSIS, InnoSetup (I know, not new..), AdvancedInstaller, and several other viable tools.

    And after carefully reviewing many of them, I’ve run into road blocks with my setup needs that can’t be fulfilled without spending upwords of $500. So I now have a setup using Visual Studio 2005’s deployment projects. It’s not quite what I wanted when I first started down the road but it’s not too bad either. In fact, I may actually end up liking this method a bit more. Read on for details.

    (more…)

  • Visual Studio Addin

    At work yesterday I created my first Visual Studio Addin.  Now that I know how to do it, I’m going to create one for something I’ve always wanted: launch windows explorer on a folder in the solution explorer.  There apparently used to be a powertoy for this feature, but that was for VS2003.

  • Icon update

    As I watched the Cardinals beat the Tigers tonight I sat and redid most of the toolbar icons for Chef. Every now and then it’s nice to take a break from coding, and for those times there is plenty of graphics and documentation work to be done. Here’s what the current toolbar looks like.

    New Toolbar Icons.png

    What do you think?

  • You just can’t rush multithreading

    A week or so ago in Chef, I needed to add some multithreaded code.  At the time, I saw a few things that were going to be issues in a multithreaded environment, so I quickly put some syncronization code around critical resources.  I didn’t feel like taking the time right then to really think it through and get it right – I even recall thinking something along the lines of This should work ok, but I don’t really think it’s enough…

    Sure enough, a bug popped up tonight from that block of code.  It didn’t take long to see what was going on, because in the back of my head was the suspect syncronization code.  But the moral of the story is (even if you try to ignore/deny it) you just cannot rush multithreaded programming.  Period.

    I’ll be fixing that code tomorrow night.

  • C and .NET

    A coworker and I have been trudging through a lot of code recently. .NET code written by a C programmer. Folks, these things should never mix, because when they do, you end up with:

    byteArray = new Byte[hexString.Length >> 1];
    That’s right. Don’t divide by 2. Bit shift. And nevermind that there is a builtin .Net function that does what this line of code came from. And nevermind yet again that there’s a good helping of HEX shit like this in an ASP.NET web app.

  • nifty visual studio 2005 feature

    A coworker just ran across this awesome feature in a book so I thought I’d share it.

    How many times have you recompiled an app just to get some debug/trace information spit out?   In VS 2005 you can have a breakpoint write information to the output window as if you compiled in Debug.WriteLine statements.  Just set a Breakpoint, right click on it and select When Hit.  In the dialog you can configure what gets printed out.

  • Axialis Icon Workshop 6.0

    A week or so ago I purchased a copy of Axialis Icon Workshop 6.0 Corporate Edition so I could crank out good looking icons for Chef. I have used trial editions of past versions and found it to be a very good product, but never pulled the trigger to buy it.

    6.0 changed that in a major way. They’ve come up with a fantastic way to allow the user to take stock “objects” and quickly and easily compose them into great looking icons. With their older versions it took me a long time to come up with icons, and they still never made me very happy. But that is surely not the case anymore, great work guys.

    I’m halfway expecting some of those computer graphics wizards out there to start putting out “object” libraries of their own.  I’m really looking forward to such a thing (anyone?! anyone!?).

    Ontop of their great software sits a reasonable pricing model and the lifetime upgrades are nothing to balk at!