RSS
Facebook
Twitter

Thursday, June 25, 2009

What to do when DebugBreak won’t let me debug on windows7/Vista

A curious problem that I had today at work:

I’m working on a component that suppose to run as another “service”. Because of the environment limitations I could not  just debug using visual studio (F5) and had to set my debug points manually using __debugbreak.

I recently installed Windows 7 and so far I enjoy using it until today instead of showing the usual dialog that asks if I want to Debug the program I got a message telling me that the application has stopped responding.

No matter what I did I could not cause window to show me the correct dialog. Searching the web proved to be futile and didn’t help me to solve the problem.

Then it hit me, perhaps this is one of these times that windows is trying to be extra helpful.

I’ve opened the action center choose “change action center settings”

image

From There I went to problem reporting setting

image

Looks exactly like what I was looking for – just choose the correct option and…

image

It works!!!

image

And after that I was able to debug my application.

Sunday, June 21, 2009

Developer GTD

A software developer job is not easy, we’re expected to be self learners, take initiative and multi-task. So much needs to be done that it you might be overwhelmed by the amount of things needs to be done in a single day: send a patch to a customer, setup a meeting, ask a fellow developer about a specific part of his code and write a new feature and all of that before lunch.

The more tasks you have the easier it is to forget one of them or delay completion of other tasks because someone, somewhere hasn’t done his bit yet. Soon you become aware of a constant feeling of not being able to do all of the tasks that await completion.

Not anymore! welcome to the world of GTD, come inside and you wouldn’t forget anything anymore and know exactly what are you suppose to do in any given moment.

What Is GTD

GTD (Getting Things Done) is a task (and time) management system invented by David Allen. In his book (called Getting Things Done as well) David explain a simple system of cataloging all your actions and to-dos and moving the information from you head to a written form. Using lists instead of remembering your tasks organize your day and reduce overall stress.

When faced with a new task you can do one for these three:

  1. Do it (if it takes less then 5 min)
  2. Delegate it to someone else
  3. Record it in a way that the task will be available in the needed time and context

I’d like to share with you the simple system I have to record my tasks

My Lists

Allen describes a suggested set of lists which can be used to keep track of items awaiting attention:

  • Next actions — For every item requiring attention, decide what is the next action that can be physically taken on that item. For example, if the item is, "Write project report", the next action might be, "Email Fred for meeting minutes", or, "Call Mary to ask about report requirements". Though there may be many steps and actions required to complete the item, there will always be something that needs to be done first, and this step should be recorded in the next actions list. Preferably, these steps are organized by the context in which they can be done, such as "in the office", "by the phone", or "at the store".
  • Projects — Every open loop in one's life or work which requires more than one physical action to achieve becomes a project. These projects are tracked and periodically reviewed to make sure that every project has a next action associated with it, and thus can be moved forward.
  • Waiting for — When an action has been delegated to someone else, or when one is waiting for some external event before a project can be moved forward, this is tracked in the system and periodically checked to see if action is due, or a reminder needs to be sent.
  • Someday/Maybe — Things to be done at some point, but not right now. Examples might be "learn Spanish", or, "take diving holiday".

[Wikipedia – Getting Things Done]

I have customized this format to my needs, I have the following lists:

  1. Personal
  2. Work
  3. Someday / Maybe
  4. List per big project I have (either personal or work related)

On top of these lists I have several tags according to where I’m suppose to do them:

  • @Office
  • @Call
  • @Errands (i.e. by groceries)
  • @Internet
  • @Email
  • @Home
  • @Blog

Each task can have additional tag

  • na (Next Actions) – the task is not dependant on other task to complete.
  • wait (Waiting For) – other task need to be completed before I can finish this task

So if I need to research the internet about unit testing framework I’ll add a new item to the work list tagged @Internet & na.

It is that simple, whenever I have a few minuets I check my task list and see if there something else needs doing.

My tools of the trade

For GTD to work you need to have a single place you keep all of your lists. It is important to have your lists with you so you’ll be bale to add new tasks on the go (otherwise you might forget them). I’ve used to keep all of my lists in my Palm TE2, it was with me most of the time and I has good task management tools. After our ways parted I’ve decided to give outlook a try – it has tasks and seemed like a good fit for me… unfortunately it wasn’t mostly because I couldn’t take it with me and I kept forgetting to update it.

Right now I’m using Remember The Milk (RTM) to store my lists, it has exactly the amount of customization I need and is accessible where I have internet access (how and work), RTM can receives email so I can send tasks on the go from my n800.

image

The trick of my system is keeping it all written down so nothing is forgotten. if you’re interested in learning more about GTD pick up David Allen book, its short and to the point.

Thursday, June 18, 2009

How to write a simple DXCore plug-in

DevExpress the creator of Refactor and CodeRush two great visual studio productivity tools provide a free library called DXCore that can be used to create rich plug-ins that can extend visual studio the same way their commercial products do. Until visual studio 2010 will be widely developers can use DXCore to extend visual studio and provide integration functionality without messing around with DTE and GUIDs.

In this tutorial I will explain what is needed to write your first DXCore plug-in

Prerequisites

  1. We need visual studio (not express) to write the plug-in, either vs2008 or vs2005 will do.
  2. DXCore – download CodeRush evaluation go run the installer and choose to install DXCore. you can install CodeRush and refactor as well if you want to try them for size.

When running visual studio you will be prompted to choose the location of your community plug-ins. this is where your plug-ins will be placed.

Now we can write our first DXCore plug-in.

Creating the plug-in

Notice that a new tool menu named DevExpress was added to VS, click on it and choose New Plug-in, or create a new project of type DXCore (using File –> new project).

image

Choose your language of choice (C#), standard plug-in and the plug-in name.image

Select a name and check “Load Manually”, This tells DXCore not to load the plug-in automatically to Visual Studio, this option is only relevant to the development phase.

image

Now we have a new plug-in that does absolutely nothing, it’s time to add some functionality.

Writing the code

DXCore adds a few new tools to VS toolbox, in this tutorial we’re going to use the “Action”.

Simply drag a new action into the designer.

image

Add name and description in the action property page:

image

Double click on the action or create an “Execute” event handler and paste this code inside:

image

The first line we get the position of the caret on the screen. Then we get the active element and use it to receive the current opened document which we use to write text of the screen. 

Running the our code

Pressing F5 (Run Debug) will open a new instance of VS, open or create a new C# project so we’ll have some where to try our new plug-in.

Open the Plug-in manager and double click the Plug-In to enable it (remember the “Load manually” checkbox).

image

Lastly we want to bind a new keyboard shortcut that will invoke our code. Inside DevExpress –> options choose Shortcuts (under IDE)

image

Select a proper shortcut and bind it to the action’s name:

image

That’s now we can run our code, each time I press the key combination a remark is written in my code:

image

Additional Resources

You can learn (much) more about DXCore in the following places:

Rory Becker has posted several tutorials about DXCore on his blog.

Travis Illig also written a few tutorials and how-tos on his blog.

DXCore community plugins on Google Code.

If you’re stuck with a tough problem DevExpress Forums is the place to ask DXCore related questions.

Friday, June 12, 2009

First Israeli Alt.Net.Beers

If you’re in Tel Aviv this Sunday (14/06) come to Leo Blooms (map) for drinks and more.

Either sign for the event in facebook or just drop by And don’t forget to toast Ariel for proposing this meeting.

image

Monday, June 08, 2009

4 Reasons I can’t wait for VS2010

Although there is some time until the official release of Visual Studio 2010 Microsoft has been kind enough to provide us early adopters a beta version to play with. Fortunately for me in I had actual work to do using the new visual studio and decided it was a good fit for me. I especially liked these four new features of the IDE:

  1. It’s Fast – I don’t know if the final version will have the same performance but visual studio loads up quickly and loads a solution lightning fast. I only hope that the good developers of visual studio will add some improvment to the notoriously slow “Add Reference” dialog.
  2. Historical Debugger – One of the new killer features added. Ever debugged a piece of code only to step over a method that thrown an exception and had to start it all over? never again just rollback to where the code when boom and analyze it. Pavel has a written a post on how it works.
  3. C++ background compiler – This one is the one feature I have been waiting for since I’ve started programming C++. All of us C++ programmers could only envy VB’ers that know when they have a compilation error without actually compiling the code, now C++ gets a little performance boost in the form of a compilers that runs in the background and let you know then minute you wrote something wrong. The days of failing compilation (with 210 errors) just because I forgot a semi colon in some file are gone!
  4. F# Support – the new kid on the block. Although I haven’t played with it yet I really like the fact that this .NET language has become a 1st grade citizen in my IDE. hopefully similar .NET languages will follow (IronPython).

VS2010 has many more new features and goodies but those four had caught my eye. I think its safe to say that all .NET (and some C++) developers would benefit from this new version of visual studio.

Related Posts Plugin for WordPress, Blogger...