Category Archives: Utilities

I need a new travel alarm clock

So I started looking for one that I could take with me easily. It’s amazing the variety that’s out there.

ClockyI started looking when I saw Clocky, the rolling alarm clock. This clock, after you hit snooze, starts running and hiding from you so you have to get out of bed to find it and turn it off.

I started thinking about the alarm clock that I saw in college. It was a baseball alarm clock that you could throw against the wall to hit snooze. That was a fun alarm clock.

alarm clock.jpgBeing the gadget junkie that I am, I realized at that point that I really shouldn’t just settle for the classic-boring-bargain travel alarm clock. It just wouldn’t fit with my persona and image. Having a clock that I have to find, however, in strange hotel room is not a fantastic idea. Not knowing what to do, I hit Gizmodo and started looking at the options. Wow! There are a ton of different types of alarm clocks out there.

 

I really like the size and features of the LifeMax Under Pillow Vibration Alarm Clock. It’s small, battery operated, robust and it has a vibration wake feature. buzz_alarm.jpgThat’s cool for those mornings that I need catch an early plane and need to get up in the morning without waking up my wonderful wife. The issue there is that I haven’t been able to find a distributor this side of the ocean. I can order it from MenKind in the UK but I don’t think that they ship international – at least their checkout form didn’t let me pick another country.

So the seach didn’t end there. There are alarm clocks that fly and more alarm clocks that can fly, sensory alarm clocks that wake you up with smells (see the Bacon Alarm Clock and Hakugen Odor Alarm) and cool audio clocks (see the Space Invaders Clock, Police Scanner Alarm Clock or any of the many MP3 alarm clocks), clocks that make you think to turn them off (see the Pattern Clock that plays Simon says with you before you can turn it off or the Puzzle Alarm Clock that makes you put together the puzzle before it turns off). I’m also interested in the Progressive Wake Alarm Clock and others like it because they don’t jolt you awake. Among the many other issues with all of the clocks in the this paragraph – very few of them will fit in the suitcase well.

So, I started looking for clocks that will travel better. Obviously the best for that would be the Online Clock but I’m not on the internet all the time. I know that Martin Shoemaker has written an alarm clock that works well when his machine is not in the shop or gets rebooted because of auto-updates. I could write/buy a software clock, but I really want a hardware solution to this because I never know how my laptop will be in use so I’m leary of that.

slim_clock.jpgI’m now looking at the Credit Card Case Clock and others like it. They are small, light and ultra portable.

So, what travel clock works for you?

 

 

 

 

 

Test Driven Development

Last night Eric Maino (http://www.meeteric.net) gave a talk at GANG (http://www.migang.org) about Test Driven Development (TDD). It was a very good talk that touched on a lot of the important issues involved in testing. It was a good overview of NUnit (http://www.nunit.org) and how TDD works. The slides will be up on the GANG web site soon.

 

One of the questions that came up was how GUI testing works with NUnit. I happened to attend a talk at SD West (http://www.SDExpo.com) by Elisabeth Hendrickson from Quality Tree (http://www.qualitytree.com) on that exact topic. She has been working on a test harness for GUI testing that’s built on NUnit. You can learn more about it here – http://www.qualitytree.com/autotest/dotnetgui.htm.

Obfuscation, IT Governance and Enterprise Risk Management

There’s a free webcast coming up that you should know about titled “Obfuscation, IT Governance and Enterprise Risk Management”. It’s being hosted by PreEmptive Solutions – the creators of Dotfuscator. They know just a bit about the topic so it should be worth hearing.

 

Event: Obfuscation, IT Governance and Enterprise Risk Management  

Date and Time: Monday, April 24, 2006 1:00 pm Eastern time zone

Duration: 30 minutes

Description: Attendees will leave with a clear understanding of the role of obfuscation as an effective control for application security, access control, IP protection in the context of broader IT governance and enterprise risk management frameworks.

Grok Talk for GANG – 10 Dev Tools in 10 Minutes

Here’s the list of ten tools that I covered in my session:

 

  1. CodeRush/Refactor
    1. http://www.devexpress.com/
    2. Mark Miller (http://doitwith.net/)
    3. Dustin Campbell (http://diditwith.net/)
  2. GhostDoc
    1. http://www.roland-weigelt.de/ghostdoc/
  3. cr Documentor
    1. http://www.paraesthesia.com/blog/comments.php?id=701 0 1 0 C
  4. SandCastle
    1. http://www.codeplex.com/Wiki/View.aspx?ProjectName=SHFB
    2. GUI for SandCastle – http://www.codeproject.com/useritems/SandcastleBuilder.asp
  5. Reflector and Add-Ins
    1. http://www.aisto.com/roeder/dotnet/download.aspx?File=Reflectorctor
  6. CopySourceAsHTML
    1. http://www.jtleigh.com/people/colin/blog/archives/2004/10/visual studio a.html
  7. ZoomIt
    1. http://www.sysinternals.com/utilities/zoomit.html
  8. Camtasia/Snagit
    1. http://www.techsmith.com/
  9. Process Explorer
    1. http://www.sysinternals.com/
  10. Snippet Compiler
    1. http://www.sliver.com/dotnet/snippetcompiler/

 

There are a lot of tools that didn’t make the list that really easily could have.

 

 

  1. Tablet UML
    1. http://www.tabletuml.com/ – the UML tool that you don’t need to learn. It was created by Martin Shoemaker out of Hopkins Michigan.
  2. CodeKeep
    1. http://www.codekeep.com/ – online Snippet Library and collaboration. It’s was created by Dave Donaldson out of Columbus Ohio.
  3. CodeSmith
    1. http://www.codesmith.com/ – template based code generation. One of the great uses of this is to generate business objects based on database tables
  4. Too many others to name at the moment…

Download: GrokTalk-10DevToolsIn10Minutes.ppt

SharpKeys

I’ve been listening to some of the old (January 2006) HanselMinutes (http://www.hanselminutes.com) and found a fantastic utility called SharpKeys (http://www.randyrants.com). It’s a key editor that will remap any of the keys on your keyboard.

I’ve had one HUGE issue with my new tablet (new as in December) which is a Fujitsu Lifebook T4020. That issue was that the End and Home keys are function keys! In other words, I have to hold down the function key and then press PageDown to get End. I use End all the time and in combination with other keys whereas I rarely use PageDown and only use it by itself so it’s not a big deal to hit a function key for that. It took just a quick moment to reverse those so that End is where PageDown used to be and PageDown is the function key.

VSTO (Visual Studio Tools for Office) Misconceptions

I did my VSTO Session (Visual Studio Tools for Office: The Agony and the Ecstasy) at VSLive yesterday. It was very interesting to gauge the reactions. In short, there were a ton of misconceptions about what VSTO is to be used for and what its capabilities are. I really think that next time that I do a VSTO talk – I’m going to devote the first 5 minutes or possibly more to dispelling some of those notions.

VSTO is used to have Office host your application, not the other way around. A lot of people didn’t understand this. The first several questions that I got after the talk were about how to integrate Office into their application for spell checking or hosting the Outlook calendar or read from the contacts in Outlook or any number of other types of integration. VSTO does not help you here. Each of the Office applications have a COM based API that will allow you to leverage that application but it’s not VSTO. You can use COM to load Word, paste text into a document, ask Word to spell check it and get back the list of spelling errors. This is a heavy process – especially if you are doing it for small amounts of text. You can use COM to load Outlook and get the list of contact, appointments and lots of other data. In fact, on the Pocket PC, this is the preferred way to have contacts, scheduling and so on. Again, VSTO does not help you here, COM does.

Actually, it’s interesting to point out that even inside a VSTO application that is hosted inside of an Office application, you are talking to the COM API in order to invoke the spell checker, talk to the list of appointments and so on. It’s just that the PIA (Primary Interop Assemblies) are referenced by default in a VSTO application so that they look like they are .NET APIs, sort of. Actually, that was a large portion of my talk yesterday. Those COM APIs are sometimes painful to work with and have some rather severe limitations.

If you are going to write a VSTO application, you need to go in with your eyes open. You are not dealing with a .NET API designed by the same guys that designed the rest of the .NET libraries. You are dealing with Office. This is good and bad. For better or worse, with VSTO, you have to make your application work like the Office application that is hosting your application. Sometimes this is very frustrating. However, the payoff is immense when you can cut the amount of training that you have to do for your users because they already know the interface.

That’s what VSTO is about. It’s about having Office as your front end because that’s what your users know.

log4net on the Compact Framework

I was reminded of log4net today when working on a project. The client asked a logging framework and the cool part is that it’s a Compact Framework application. Sure enough log4net supports the Compact Framework.

There are a couple of minor differences that you should be aware of if you are interested in using log4net on the Compact Framework. First of all, not all of the appenders make sense – like the RemotingAppender, the EventLogAppender and the OracleAppender. Secondly, there is no mechanism for retrieving assembly level attributes so you have to explicitly initialize and shut down the log4net engine.

 

static void Main()

{

      try

      {

            //This line configures the log4net engine.

log4net.Config.DOMConfigurator.Configure(

new FileInfo(@”\log4net.config”));

 

            frmLogin loginForm = new frmLogin ();

            loginForm.ShowDialog();

                  Application.Run(new frmMain());

            }

      }

      catch (System.Exception e)

      {

            _log.Error(“Main“, e);

      }

      finally

      {

            //This line shuts down the log4net engine

            log4net.LogManager.Shutdown();

      }

}

 

The other thing that was interesting is that the online help on http://logging.apache.org/log4net showed conversion patterns with %message%newline to print the message and then put a newline in the file. I had to use %m%n because the first one there printed as

 

My stringessage

ewline

 

which was not quite what was expected.

 

Have fun with log4net, it’s a great lightweight logging framework for the compact framework.