<feed version="0.3" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns="http://purl.org/atom/ns#" xml:lang="en-US"><title>John Wood</title><link rel="alternate" type="text/html" href="http://dotnetjunkies.com/WebLog/johnwood/default.aspx" /><tagline type="text/html">Thoughts on Enterprise Development</tagline><id>http://dotnetjunkies.com/WebLog/johnwood/default.aspx</id><author><url>http://dotnetjunkies.com/WebLog/johnwood/default.aspx</url></author><generator url="http://communityserver.org" version="1.0.1.50214">Community Server</generator><modified>2006-06-02T14:12:00Z</modified><entry><title>To Do List Manager with SubTasks: Priorganizer v1.0.8</title><link rel="alternate" type="text/html" href="http://dotnetjunkies.com/WebLog/johnwood/archive/2006/09/13/to_do_list_manager_subtasks.aspx" /><id>58df7014-fd75-437c-9641-150997716d1c:147071</id><created>2006-09-13T15:12:00Z</created><content type="text/html" mode="escaped">&lt;P&gt;&lt;A href="http://www.todolistmgr.com/product,priorganizer,product_dl_req.aspx"&gt;Click here to download a free trial of Priorganizer&lt;/A&gt;! (it's less than 1Mb)&lt;/P&gt;
&lt;P&gt;A month ago it went &lt;a href="http://dotnetjunkies.com/WebLog/johnwood/archive/2006/08/08/task_manager_todo_list.aspx"&gt;into beta&lt;/A&gt;; today it's released: My &lt;B&gt;To-Do List Manager&lt;/B&gt; / &lt;B&gt;&lt;A href="http://en.wikipedia.org/wiki/Task_list"&gt;Task Manager&lt;/A&gt;&lt;/B&gt; application with an Outlook-like interface that supports unlimited hierarchical subtasks and a knowledge base. Very easy to learn with an extremely convenient and fluid interface! There's no learning curve - once you &lt;A href="http://www.todolistmgr.com/product,priorganizer,product_dl_req.aspx"&gt;download&lt;/A&gt; you'll be up and running &lt;U&gt;&lt;B&gt;in seconds&lt;/B&gt;&lt;/U&gt;.&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://www.todolistmgr.com/pics/priorganizer/main_task_list.jpg"&gt;&lt;/P&gt;
&lt;P&gt;Thanks to the enormous amount of feedback I received I was able to put out 11 updates, add more great features, fix bugs and make it stable and rich enough to release to market.&lt;/P&gt;
&lt;P&gt;The goal of Priorganizer is flexibility and convenience. We all have different ways of organizing and managing our time and our task lists, with a flexible hierarchical space for entering your tasks you can even use Priorganizer as a brain-dump or mind-mapping application. There are places to enter tasks, and places to enter ideas, thoughts and even &lt;A href="http://www.clt.cornell.edu/campus/learn/LSC%20Resources/TimeManagmentforRightBrain.pdf"&gt;time management values&lt;/A&gt;. Use it the way &lt;B&gt;you&lt;/B&gt; work.&lt;/P&gt;&lt;U&gt;&lt;B&gt;
&lt;H4&gt;Task Manager Screen&lt;/H4&gt;&lt;/B&gt;&lt;/U&gt;
&lt;P&gt;Priorganizer sports a clean, contemporary user-interface, with its major features separated into independent views, each of which is accessed through an icon down the side. The main view is the task list, which shows your hierarchical to-do list.&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://www.todolistmgr.com/pics/priorganizer/hierarchical_task_list.jpg"&gt;&lt;/P&gt;
&lt;P&gt;Every list window in Priorganizer has a consistent look and feel, offering an easy to navigate &lt;B&gt;hierarchy&lt;/B&gt;, preview text against each item (similar to Outlook), a Quick-Entry line for quickly creating either top level items or subtasks, and drag and drop support for repositioning or re-parenting items with a simple drag of the mouse (&lt;A href="http://www.priorganizer.com/pics/priorganizer/dragndrop.htm"&gt;&lt;B&gt;click here to see a flash demo of this&lt;/B&gt;!&lt;/A&gt;). All lists can be customized to show columns you choose, change the sort order and a variety of other options.&lt;/P&gt;
&lt;P&gt;The Task List view shows both a main task list and a subtasks window. This is a familiar paradigm that is consistent with Windows Explorer. In Explorer you select folders and see files to the right. In Priorganizer you select tasks on the left and see that task's subtasks on the right. If having two windows is too much for you, then you can simply close the subtasks window and navigate the entire hierarchy in the main task window only.&lt;/P&gt;
&lt;P&gt;Because of its flexibility in creating a hierarchy, you can group tasks into projects, milestones, context, subjects, people, departments - anything you wish. &lt;/P&gt;&lt;U&gt;&lt;B&gt;
&lt;H4&gt;Task Intelligence and Customizing Priorganizer&lt;/H4&gt;&lt;/B&gt;&lt;/U&gt;
&lt;P&gt;What makes Priorganizer more than just a simple task repository is its understanding of the tasks and how they relate to one another. For example when you complete a parent task, all the sub-tasks and their sub-tasks will be completed automatically. Likewise, when all subtasks are complete the parent will automatically be marked as complete, triggering a cascade of events up the task tree. There are many more business rules that control the behavior and how you interact with your tasks, and in the future I hope to allow users to extend this behavior with the use of &lt;A href="http://en.wikipedia.org/wiki/Workflow"&gt;workflow&lt;/A&gt; add-ins.&lt;/P&gt;
&lt;P&gt;While Priorganizer does try its best to apply some intelligence to the tasks, most of the behavior can be customized via the options dialog. For example you may not want a parent task to automatically be set to "started" just because one of its subtasks was started -- everything like this can be configured.&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://www.todolistmgr.com/pics/priorganizer/options.jpg"&gt;&lt;/P&gt;
&lt;P&gt;Another configurable aspect of Priorganizer is the &lt;B&gt;window layout manager&lt;/B&gt;. Every window in Priorganizer can be relocated by dragging the caption bar of the window to an edge of the screen or in-between existing windows. Hold the mouse during the drag and you will see it cycle through the different layout options, letting go of the mouse selects that configuration. You can also drag one window onto another's caption bar to create a tabbed window. Also windows can be floated or hidden using the buttons in the caption bar and made visible once again using the icon in the toolbar. The possibilities are endless. &lt;/P&gt;
&lt;P&gt;To see a flash demo of the layout manager in action, &lt;A href="http://www.riaform.com/pics/priorganizer/splitterdemo.htm"&gt;click here&lt;/A&gt;!&lt;/P&gt;&lt;U&gt;&lt;B&gt;
&lt;H4&gt;Task Quick-Entry&lt;/H4&gt;&lt;/B&gt;&lt;/U&gt;
&lt;P&gt;&lt;IMG src="http://riaform.com/pics/priorganizer/quick_entry.jpg"&gt;&lt;/P&gt;
&lt;P&gt;The Quick-Entry line allows you to quickly add either tasks or subtasks, and is also available in all other list windows. You simply click on the Quick-Entry line and enter the title of the task. Once you press enter the task will appear and will be selected, ready for you to edit in-place. Of course you can also just right-click and select 'New Item', from which a task form will pop-up. &lt;/P&gt;
&lt;P&gt;Another useful feature is '&lt;B&gt;one-click complete'&lt;/B&gt;. Every task line is displayed with a checkbox that can be clicked in-place. Clicking the checkbox sets the task to complete, moving it to the end of the list and striking it out. To see a flash demo of one-click-complete, &lt;A href="http://www.riaform.com/pics/priorganizer/oneclickcomplete.htm"&gt;click here&lt;/A&gt;.&lt;/P&gt;&lt;U&gt;&lt;B&gt;
&lt;H4&gt;In-Place, Rich Editing&lt;/H4&gt;&lt;/B&gt;&lt;/U&gt;
&lt;P&gt;&lt;IMG src="http://www.todolistmgr.com/pics/priorganizer/in_place_editor.jpg"&gt;&lt;/P&gt;
&lt;P&gt;Most people &lt;A href="http://vsbabu.org/mt/archives/2002/02/26/why_i_hate_popup_windows.html"&gt;dislike&lt;/A&gt; pop-up windows, web or desktop it makes little difference. Priorganizer allows you the choice of either editing your data in a pop-up editor, or in-place as a window docked in the main screen. As you edit the item in-place, the changes are automatically saved as you type, making updating your tasks a fluid and convenient process.&lt;/P&gt;
&lt;P&gt;Of course, like all editors in Priorganizer, the in-place editing window is also a rich editor, providing you with a variety of formatting options: font size, color and style, paragraph options, indentation and bulleting just to name a few.&lt;/P&gt;&lt;U&gt;&lt;B&gt;
&lt;H4&gt;Priorganizer Quick Access via the System Tray&lt;/H4&gt;&lt;/B&gt;&lt;/U&gt;
&lt;P&gt;Priorganizer also provides an icon that sits in the system tray. When clicked a miniature version of Priorganizer, optimized for quick-access, pops up and provides you a simpler 'What's Next' todo list and a scratch pad for making quick notes.&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://www.todolistmgr.com/pics/priorganizer/quick_access.jpg"&gt;&lt;/P&gt;
&lt;P&gt;The &lt;B&gt;What's Next List &lt;/B&gt;(WNL) is a significant feature. While the main task list provides you with amazing flexibility in creating a rich, highly organized and deeply hierarchical task list, the WNL is intended to let you maintain a smaller, focused list of tasks you will be tackling in the immediate future. What's different about the WNL is that it lets you drag tasks from anywhere in your main task list right into the WNL and then synchronizes the two. If you update the task in the WNL, it will update in the main task list and vice-versa.&lt;/P&gt;
&lt;P&gt;What makes this incredibly useful is that, at the start of the day you can find the tasks you plan on tackling, drag them in to your WNL and for the rest of the day you can work solely from the WNL - a simple, focused to-do list. Get interrupted with a phone call or other ad-hoc task? No problem as the WNL has a Quick-Entry line for entering miscellaneous tasks. Once entered they go straight to the top of the WNL list. Complete that task and you'll be back working on the tasks you dragged in. I find this style of working fits in well with the '&lt;A href="http://en.wikipedia.org/wiki/GTD"&gt;Getting Things Done&lt;/A&gt;' methodology that is becoming so popular.&lt;/P&gt;
&lt;P&gt;The bottom line is that the What's Next List gives you the convenience of a simple to-do list integrated into the power of a hierarchical task manager.&lt;/P&gt;&lt;U&gt;&lt;B&gt;
&lt;H4&gt;Task Pop-Up Editor&lt;/H4&gt;&lt;/B&gt;&lt;/U&gt;
&lt;P&gt;While the in-place editor in the main task list provides some task editing capability, only a select number of fields are available in-place. To access fields such as the due date, completed date, category etc. you will find the more comprehensive task pop-up editor more suitable. &lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://www.todolistmgr.com/pics/priorganizer/popup_form.jpg"&gt;&lt;/P&gt;
&lt;P&gt;The pop-up editor is activated by double clicking a task, or when creating a new task. It's modeless and resizable, allowing you to open several tasks simultaneously, and to minimize the main application letting you work on tasks independently. All changes are made in a copy of the task, only committing if you save those changes.&lt;/P&gt;&lt;U&gt;&lt;B&gt;
&lt;H4&gt;Knowledge Base&lt;/H4&gt;&lt;/B&gt;&lt;/U&gt;
&lt;P&gt;In this day and age we have more information available to us than ever before. Information collation and aggregation is a part of everyone's life, more so since the Internet has enabled us to so easily research subjects. I, for one, am constantly learning new things and taking notes. Priorganizer has been of substantial value to me as I can now organize my thoughts hierarchically, have all my thoughts in one (organized) location, and search through everything I've written in a split second.&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://www.todolistmgr.com/pics/priorganizer/knowledge_base.jpg"&gt;&lt;/P&gt;
&lt;P&gt;Priorganizer offers a special place to store your thoughts, things you learn, and tidbits of information you want to remember: The &lt;B&gt;Knowledge Base&lt;/B&gt;. With a familiar tree structure in which you can organize your thoughts, and a rich editor for constructing formatted documents, Priorganizer gives you a powerful tool for building a valuable repository for your thoughts. My wife, for example, loves to use the Knowledge Base to store her favorite recipes!&lt;/P&gt;&lt;U&gt;&lt;B&gt;
&lt;H4&gt;Log and Archive&lt;/H4&gt;&lt;/B&gt;&lt;/U&gt;
&lt;P&gt;Every day I spend hours working on tasks, sometimes completing several but often interrupted while working, a distraction that costs me a lot of time in simply regaining focus on the tasks at hand. What's worse is when I come back the next morning and try to remember what it was I was doing the previous evening.&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://www.todolistmgr.com/pics/priorganizer/log_and_archive.jpg"&gt;&lt;/P&gt;
&lt;P&gt;That's why I keep a log. The &lt;B&gt;Log and Archived Tasks &lt;/B&gt;feature in Priorganizer is a central journal of what I've been doing and an automatic record of tasks that I've completed. This lets me look back to see what I was doing the past month (useful for time tracking for timesheets, for example), or just to see what I was doing the day before. Keeping a log helps considerably in maintaining a sense of continuum while I work on several projects simultaneously, and makes for a nice narrative on my life at work.&lt;/P&gt;&lt;U&gt;&lt;B&gt;
&lt;H4&gt;Scheduled Tasks and Task Templates&lt;/H4&gt;&lt;/B&gt;&lt;/U&gt;
&lt;P&gt;No matter how hard you try to avoid deadlines and schedules, in many cases they're inevitable. When you have tasks scheduled in the future, either once-off or recurring tasks, you will need to create a scheduled task in the &lt;B&gt;Scheduled Tasks &lt;/B&gt;view in Priorganizer.&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://www.todolistmgr.com/pics/priorganizer/scheduled_tasks.jpg"&gt;&lt;/P&gt;
&lt;P&gt;The purpose of the Scheduled Tasks view is to keep all your future-scheduled tasks out of the way of your main task list, avoiding the clutter that you get in other traditional task managers. It allows you to organize your scheduled tasks in a hierarchy that's independent of the main task structure, and schedule not only single tasks but hierarchical tasks with subtasks - all of which can be activated on a single date.&lt;/P&gt;
&lt;P&gt;Priorganizer does offer recurring task options, but its real power is in the flexibility it allows you by grouping together and dictating the activation date of each individual task instance. For example, one user has a task and set of subtasks that are activated at different times throughout the month. Priorganizer lets her group those tasks under one parent task which helps her be organized. She then sets unique dates for each subtask, each set to recur every month. This allows for some very complex&amp;nbsp; task scheduling - it's a powerful feature.&lt;/P&gt;
&lt;P&gt;The Scheduled Tasks window is also where you can manage your &lt;B&gt;task templates&lt;/B&gt;. Task templates are tasks (or task trees) that are not scheduled, but can be activated manually through a right-click menu option. Each time they are activated they are &lt;I&gt;copied&lt;/I&gt; into the task list - parent and all its subtasks, providing you a great way to create templates for common tasks that are perhaps tied to a specific incident or action and not a date.&lt;/P&gt;&lt;U&gt;&lt;B&gt;
&lt;H4&gt;Search&lt;/H4&gt;&lt;/B&gt;&lt;/U&gt;
&lt;P&gt;There wouldn't be much use in keeping so much useful information through the task, log, knowledge base and schedules if you couldn't find items quickly. When you're creating a hierarchical task repository, one thing that quickly becomes apparent as the task list grows is that you will need a way to easily find tasks. This is where you will use the Search view.&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://www.todolistmgr.com/pics/priorganizer/search.jpg"&gt;&lt;/P&gt;
&lt;P&gt;The Search view provides you with a way to search across all types of entries that Priorganizer supports, for any word that appears in any of the fields. For each result found, it shows the item (along with an abstract) and lets you open it up, read or make changes. It also saves recent search terms in the drop down list, and separates the results into pages to make searching faster.&lt;/P&gt;&lt;U&gt;&lt;B&gt;
&lt;H4&gt;Printing&lt;/H4&gt;&lt;/B&gt;&lt;/U&gt;
&lt;P&gt;If you're away from your desk, out of the office, or need to talk about tasks in a meeting with others, you will certainly need a hard copy of your task list. &lt;/P&gt;
&lt;P&gt;Priorganizer provides you with the ability to print (&lt;A href="http://www.todolistmgr.com/pics/priorganizer/print_preview.jpg"&gt;and print-preview&lt;/A&gt;) all the major lists it supports. It prints the list exactly as you see it, subtasks and all, but in its entirety spanning as many pages as needed. &lt;/P&gt;
&lt;P&gt;Not only can you print your tasks, log, knowledge base and scheduled tasks list, you can also print your What's Next list. This is a great feature if you have a set number of tasks to complete that day but you won't be at a computer. What's more: it prints out the checkboxes against each item, letting you ink-in the checkmark as you complete each task. &lt;/P&gt;&lt;U&gt;&lt;B&gt;
&lt;H4&gt;Dynamic Help&lt;/H4&gt;&lt;/B&gt;&lt;/U&gt;
&lt;P&gt;Priorganizer is designed to be intuitive, consistent and very easy to use - with very little learning. However, in case anything is unclear Priorganizer comes with an integrated help system. The dynamic help is integrated into the application and shows along side the main screen at all times, unless closed by the user. &lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://www.todolistmgr.com/pics/priorganizer/dynamic_help.jpg"&gt;&lt;/P&gt;
&lt;P&gt;As you select different windows, even pop-up windows, the help changes dynamically explaining the window that has focus in clear, simple terms and giving you links to learn more about each related section.&lt;/P&gt;
&lt;P&gt;Also to get you started, Priorganizer comes with a sample data file consisting of some fictitious tasks and knowledge base entries taken from my blog. Navigate around the tasks in the file and make changes to your heart's content to help you get familiar with how the application works. To load the sample data, simply select File-&amp;gt;Open Sample File.&lt;/P&gt;&lt;U&gt;&lt;B&gt;
&lt;H4&gt;Automatic Updates&lt;/H4&gt;&lt;/B&gt;&lt;/U&gt;
&lt;P&gt;Over the past month there have been 11 releases of Priorganizer: Make no doubt, it's very much in active development. One of the best features of Priorganizer is its ability to keep itself up to date with the latest changes. &lt;/P&gt;
&lt;P&gt;Unlike other applications, when an update is available it explains what has changed and gives you the option of upgrading, which it then downloads in the background. Every effort has been made to make the update procedure a straightforward and clear process.&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://www.todolistmgr.com/pics/priorganizer/auto_updates.jpg"&gt;&lt;/P&gt;
&lt;P&gt;Another unique feature is the ability to configure Priorganizer (via the Options dialog) to download development builds (beta test versions) in addition to the more formal releases. For those of you daring enough to take on the less stable but more frequent releases, this option is for you.&lt;/P&gt;
&lt;P&gt;Both during the trial and after you purchase Priorganizer, you will continue receiving updates up until the next version (1.2 for example) free of charge! And at any time you can view the most recent changes available via an option in the Tools menu.&lt;/P&gt;&lt;U&gt;&lt;B&gt;
&lt;H4&gt;Add-Ins&lt;/H4&gt;&lt;/B&gt;&lt;/U&gt;
&lt;P&gt;Last, but not least, is the up-and-coming &lt;A href="http://en.wikipedia.org/wiki/Plugin"&gt;add-in architecture&lt;/A&gt;, providing an interface to allow extensions to Priorganizer without adding extra baggage to the base application. Currently you can extend the application to add new options to the Tools menu, which can be configured to spawn other executables that will have access to the task list (which is in XML format) for custom processing. &lt;/P&gt;
&lt;P&gt;In the future we're hoping to release a substantial number of addins covering shared, workgroup task lists to Gantt charts and &lt;A href="http://www.ietf.org/rfc/rfc2445.txt"&gt;iCal&lt;/A&gt; support. Watch this space.&lt;/P&gt;&lt;U&gt;&lt;B&gt;
&lt;H4&gt;Pricing&lt;/H4&gt;&lt;/B&gt;&lt;/U&gt;
&lt;P&gt;Priorganizer can be used &lt;B&gt;for free for 30 days&lt;/B&gt;, after which you will need to purchase a license for just $29.95 (at time of print). &lt;/P&gt;
&lt;P&gt;Why not &lt;A href="http://www.todolistmgr.com/product,priorganizer,product_dl_req.aspx"&gt;download a trial&lt;/A&gt; and give it a go? I honestly think it will change the way you work, for the better. After all, with organization comes peace of mind.&lt;/P&gt;
&lt;P&gt;As always if you have any suggestions or find any bugs, please &lt;a href="http://dotnetjunkies.com/WebLog/johnwood/contact.aspx"&gt;contact me&lt;/A&gt; and I'll get back to you right away.&lt;/P&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=147071" width="1" height="1"&gt;</content><slash:comments>1</slash:comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/johnwood/commentrss.aspx?PostID=147071</wfw:commentRss></entry><entry><title>Funny Microsoft Interview</title><link rel="alternate" type="text/html" href="http://dotnetjunkies.com/WebLog/johnwood/archive/2006/08/28/145196.aspx" /><id>58df7014-fd75-437c-9641-150997716d1c:145196</id><created>2006-08-28T04:07:00Z</created><content type="text/html" mode="escaped">&lt;P&gt;Just had to share this with everyone - Ricky Gervais (of The Office, UK version) as David Brent does a spoof interview at Microsoft UK for a management position.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://video.google.com/videoplay?docid=9076288729387457440&amp;amp;q=david+brent"&gt;http://video.google.com/videoplay?docid=9076288729387457440&amp;amp;q=david+brent&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Parts are hilarious, well worth watching. Apparently a faux training video for Microsoft UK employees.&lt;/P&gt;
&lt;P&gt;---&lt;/P&gt;
&lt;P&gt;Download a &lt;A href="http://www.todolistmgr.com/product,priorganizer,product.aspx"&gt;free trial of Priorganizer&lt;/A&gt; the &lt;STRONG&gt;to-do list application&lt;/STRONG&gt;, featuring &lt;STRONG&gt;hierarchical tasks&lt;/STRONG&gt;: fast, powerful yet&amp;nbsp;very simple to use.&lt;/P&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=145196" width="1" height="1"&gt;</content><slash:comments>1</slash:comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/johnwood/commentrss.aspx?PostID=145196</wfw:commentRss></entry><entry><title>Dissecting Windows Live Writer</title><link rel="alternate" type="text/html" href="http://dotnetjunkies.com/WebLog/johnwood/archive/2006/08/23/windows_live_writer_dissecting.aspx" /><id>58df7014-fd75-437c-9641-150997716d1c:144288</id><created>2006-08-23T15:26:00Z</created><content type="text/html" mode="escaped">&lt;P&gt;Whenever Microsoft brings out some new application, the first thing I do is dig beneath the surface to see what's going on inside - see what they're using to develop the application, what libraries they're using, whether they're eating their own dog food - stuff like that. &lt;/P&gt;
&lt;P&gt;Windows Live Writer is Microosft's most recent addition to their lineup. But it's different to their other applications, maybe not externally but internally you can see some major shifts in how they're developing software.&lt;/P&gt;
&lt;P&gt;So I go into the program directory and see what files there are. The first thing I notice is that there are no cryptic DLLs in there - each DLL is named using what seems to be (gasp) a convention that reflects namespaces. .Net namespaces at that.&lt;/P&gt;
&lt;P&gt;And sure enough, if I open the DLLs in Reflector it's quite evident these are managed DLLs, written in a .Net language. I would take a guess the whole thing is written in C#.&lt;/P&gt;
&lt;P&gt;There is one exception though. The appearance of the DLL called ssceonfl.dll is a spell checking library created by Wintertree. &lt;/P&gt;
&lt;P&gt;It's easy to say that Microsoft already have several spell checker libraries they could use - Office for example - because these are created by other departments who tend to protect their intellectual property like the crown jewels, even across departments, you'd be surprised how little re-use goes on at Microsoft. But still, seeing them using a third party component here is a little surprising.&lt;/P&gt;
&lt;P&gt;Using Spy++ it also looks like they're using the Internet Explorer's editing capabilities for the WYSIWYG blog editing features. I would suppose this is some kind of mix between a contenteditable=true div block and some automation from C# for formatting options in the toolbar. This would certainly make their HTML view quite easy to implement. (Edit: I since learnt that you can achieve this by setting document.designmode = "On").&lt;/P&gt;
&lt;P&gt;Given that's a COM component there are a couple of interop DLLs that allow the browser to be pulled into .Net.&lt;/P&gt;
&lt;P&gt;Looking through rest of the DLLs there is also evidence of some kind of Windows Live API in the works. You can see DLLs to access Passport, Live Clipboard and 'core services'. Perhaps this is something they will be releasing independently as a Live SDK?&lt;/P&gt;
&lt;P&gt;What's also interesting is that none of the DLLs are obfuscated in any way. It's quite easy to run Reflector and see what's going on in there. If this is going to be a trend I could imagine hackers having a field day with their future releases - given there is so much software out there to decompile an entire application back to a .csproj and compilable source files.&lt;/P&gt;
&lt;P&gt;The BlogClient DLL seems to contain all the work involved in communicating to the various blogger APIs. Most of these are xml-rpc based (which is a little unfortunate for Microsoft who invested so heavily in SOAP), and just delegate to the xml-rpc API.&lt;/P&gt;
&lt;P&gt;Looking at the GUI we also see evidence of a brand new toolbar and menu - with a subtly different look. Whether this is going to be some kind of standard UI library for future Live desktop applications remains to be seen, but it looks like some investment went into its development.&lt;/P&gt;
&lt;P&gt;Overall the look is quite nice - but clearly immature compared to Office applications. Then again this is free software, at least currently. &lt;/P&gt;
&lt;P&gt;What's quite exciting is that this is one of the few Microsoft applications where they're actually using .Net themselves and creating an application that is managed. Why they've been so slow on the uptake of their own platform is the $64,000 question, but no doubt politics and kicking old habits took on a very central role.&lt;/P&gt;
&lt;P&gt;----&lt;/P&gt;
&lt;P&gt;Download a &lt;A href="http://www.todolistmgr.com/product,priorganizer,product.aspx"&gt;free trial of Priorganizer&lt;/A&gt; the &lt;STRONG&gt;to-do list application&lt;/STRONG&gt;: fast, powerful yet&amp;nbsp;very simple to use.&lt;/P&gt;&lt;/FONT&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=144288" width="1" height="1"&gt;</content><slash:comments>2</slash:comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/johnwood/commentrss.aspx?PostID=144288</wfw:commentRss></entry><entry><title>RiaForm.Com</title><link rel="alternate" type="text/html" href="http://dotnetjunkies.com/WebLog/johnwood/archive/2006/08/19/143996.aspx" /><id>58df7014-fd75-437c-9641-150997716d1c:143996</id><created>2006-08-18T19:00:00Z</created><content type="text/html" mode="escaped">&lt;P&gt;Just a quick note to say that all my applications and utilities are now hosted on &lt;A href="http://www.riaform.com"&gt;http://www.riaform.com&lt;/A&gt;. It's the same content, just a new look.&lt;/P&gt;
&lt;P&gt;Priorganizer (my To-Do list program) can also be accessed at &lt;A href="http://www.priorganizer.com"&gt;http://www.priorganizer.com&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;All old URLs should automatically be rewritten to use riaform.com. Don't you just love &lt;A href="http://www.devx.com/dotnet/Article/6962/0/page/2"&gt;IHttpModule&lt;/A&gt;?!&lt;/P&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=143996" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/johnwood/commentrss.aspx?PostID=143996</wfw:commentRss></entry><entry><title>Priorganizer v1.0 - Task Manager / To-Do List</title><link rel="alternate" type="text/html" href="http://dotnetjunkies.com/WebLog/johnwood/archive/2006/08/08/task_manager_todo_list.aspx" /><id>58df7014-fd75-437c-9641-150997716d1c:143491</id><created>2006-08-07T16:02:00Z</created><content type="text/html" mode="escaped">&lt;P&gt;Click &lt;A href="http://www.todolistmgr.com/todo,task,product,priorganizer,product_dl_req.aspx"&gt;here to download a free trial of Priorganizer&lt;/A&gt; - a task and to-do list manager with subtasks support that can be used for managing anything from a simple to-do list, to a large project plan. It's something I've been working on for a while now.&lt;/P&gt;
&lt;P&gt;Here's a screenshot of the main application window:&lt;/P&gt;&lt;IMG src="http://www.servicestuff.com/pri_mainapp.png"&gt; 
&lt;P&gt;And this is a screenshot of the &lt;STRONG&gt;sys-tray pop-up&lt;/STRONG&gt;, where you maintain your 'What's Next' list and Scratch Pad:&lt;/P&gt;&lt;IMG src="http://www.servicestuff.com/pri_whatsnext.png"&gt; 
&lt;P&gt;When it comes to managing tasks, Priorganizer offers a number of features that you just don't see in other task list programs&amp;nbsp;such as Microsoft Outlook. Here are some examples:&lt;/P&gt;
&lt;P&gt;1. &lt;STRONG&gt;Unlimited hierarchical tasks&lt;/STRONG&gt;. Group tasks into projects, milestones, tasks, and sub-tasks ad-infinitum. Set the status, category (from a list of global, user-defined categories), priority, progress and structure your tasks in a way that matches how &lt;EM&gt;you&lt;/EM&gt; work.&lt;BR&gt;2. Built-in &lt;STRONG&gt;Knowledge Base &lt;/STRONG&gt;for recording articles / tidbits of information you find. Also hierarchical and using a rich-text editor.&lt;BR&gt;3. &lt;STRONG&gt;In-Place Editing&lt;/STRONG&gt;. No need to pop-up task windows, all editing can be done inside the application window. Pop-up editor windows are still available when you need more space.&lt;BR&gt;4. &lt;STRONG&gt;'Whats Next' list &lt;/STRONG&gt;- a list of tasks you can access from any application by clicking an icon in the &lt;STRONG&gt;system tray&lt;/STRONG&gt;.&amp;nbsp; The 'What's Next' resizable popup maintains a list of tasks that you will be focusing on next. Simply drag tasks from anywhere in your main task list into the 'What's Next' list and edit or complete them as if you were in the main application. Having this subset of your tasks so visible and accessible can have very positive effects on your productivity, not to mention the satisfaction you feel when you empty your 'What's Next' list.&amp;nbsp;This is very much in the spirit of &lt;A href="http://en.wikipedia.org/wiki/Getting_things_done"&gt;'Getting Things Done'&lt;/A&gt;. &lt;BR&gt;5. &lt;STRONG&gt;Scratch Pad&lt;/STRONG&gt;. This miniature popup window not only lets you see and edit the tasks that are most important to you, but also provides a scratch pad - something like a miniature version of Notepad that sits in your system tray and doesn't need a filename of its own, persisting its content automatically when you exit. The Scratch Pad is a handy rich text area where you can write down quick notes conveniently from any application.&lt;BR&gt;6. &lt;STRONG&gt;Drag and drop&amp;nbsp;positioning of tasks&lt;/STRONG&gt;. And not only can you move tasks into the order that suits you best, you can also move tasks in and out as sub-tasks within your task hierarchy.&lt;BR&gt;7. &lt;STRONG&gt;Built-in Log&lt;/STRONG&gt;. Unlike the Journal feature in Outlook, this is more for writing a daily commentary on work you've done, problems you've hit - anything you like. As Priorganizer automatically makes records of task activity in your log, it's a great way to record a timeline of your project.&lt;BR&gt;8. &lt;STRONG&gt;Rich Text Editing. &lt;/STRONG&gt;All tasks, knowledge base and log entries can be edited using rich text with a multitude of formatting options.&lt;BR&gt;9. Extensive flexibility in creating and grouping &lt;STRONG&gt;recurring tasks&lt;/STRONG&gt;.&lt;BR&gt;10. Stores task lists in &lt;STRONG&gt;an XML file&lt;/STRONG&gt; for easy backup and versioning. Why not keep a history of your tasks in source control?&lt;/P&gt;
&lt;P&gt;There are plenty of other features. For more information &lt;A href="http://www.priorganizer.com/"&gt;click here&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.todolistmgr.com/product,priorganizer,product.aspx"&gt;Why not try it out?&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Note: Priorganizer is flagged as being a beta version during a period while it is undergoing rapid development. However it's fully functional and is set to continue improving over the coming weeks and months. Updates to the application (which typically occur several times a week) are automatically downloaded and installed for you free of charge.&lt;/P&gt;
&lt;P&gt;After the 30 day trial period, a license will cost you $29.95 (price at time of posting). However if you're very helpful during the beta test period you may get a discount coupon or even a complementary license free of charge! And, of course, after you purchase a license you will continue receiving free updates to the application until the next major version is released.&lt;/P&gt;
&lt;P&gt;If you find any bugs while using the trial, please leave a comment here or &lt;a href="http://dotnetjunkies.com/WebLog/johnwood/contact.aspx"&gt;email me&lt;/A&gt; and I'll get back to you.&lt;/P&gt;
&lt;P&gt;I honestly hope it makes you more productive and your work a little more, dare I say, fun.&lt;/P&gt;
&lt;P&gt;PS. More information on Priorganizer will be posted at my new site &lt;A href="http://www.riaform.com"&gt;www.riaform.com&lt;/A&gt;&amp;nbsp;and is also available from &lt;A href="http://www.priorganizer.com"&gt;www.priorganizer.com&lt;/A&gt; and &amp;nbsp;&lt;A href="http://www.todolistmgr.com"&gt;www.todolistmgr.com&lt;/A&gt;.&lt;/P&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=143491" width="1" height="1"&gt;</content><slash:comments>13</slash:comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/johnwood/commentrss.aspx?PostID=143491</wfw:commentRss></entry><entry><title>VS Tip #2: Easier File Navigation</title><link rel="alternate" type="text/html" href="http://dotnetjunkies.com/WebLog/johnwood/archive/2006/07/27/visual_studio_file_navigation.aspx" /><id>58df7014-fd75-437c-9641-150997716d1c:142761</id><created>2006-07-27T03:22:00Z</created><content type="text/html" mode="escaped">&lt;P&gt;If there's one thing I hate when programming it's having to switch between the keyboard and the mouse constantly. A while ago I &lt;a href="http://dotnetjunkies.com/WebLog/johnwood/archive/2006/04/10/visual_studio_tabs.aspx"&gt;posted a tip&lt;/A&gt; to switch open files more easily without using the mouse.&lt;/P&gt;
&lt;P&gt;That's useful but since then I've set up another shortcut - this time to open any file, both existing and unopened files, without using the mouse.&lt;/P&gt;
&lt;P&gt;The trick is to set up a shortcut key to the Solution Explorer. You do this in Tools/Options in the Environment/Keyboard area. Find View.SolutionExplorer and set up a shortcut key to something like Ctrl+; (semi-colon) - as this isn't used for anything else.&lt;/P&gt;
&lt;P&gt;Then, no matter where you are, you can press Ctrl+; to set focus to the solution explorer. Then comes the trick, rather than using the mouse to select a file to open you can just &lt;STRONG&gt;type in the first few characters of the file you want&lt;/STRONG&gt;. This finds the file in the solution explorer and selects it. Then press F7 or Enter to open the file and continue editing.&lt;/P&gt;
&lt;P&gt;Voilla - you've now got a shortcut key to open any file without using the mouse.&lt;/P&gt;
&lt;P&gt;Hope you find it useful.&lt;/P&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=142761" width="1" height="1"&gt;</content><slash:comments>3</slash:comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/johnwood/commentrss.aspx?PostID=142761</wfw:commentRss></entry><entry><title>Shareware Developers: A Registration Service that Rocks</title><link rel="alternate" type="text/html" href="http://dotnetjunkies.com/WebLog/johnwood/archive/2006/07/25/shareware_registration_service.aspx" /><id>58df7014-fd75-437c-9641-150997716d1c:142655</id><created>2006-07-25T14:45:00Z</created><content type="text/html" mode="escaped">&lt;P&gt;A couple of weeks ago I was looking for a company that would accept credit cards and fulfill orders for shareware products - generating registration keys, providing some level of support and generally being reliable and helpful.&lt;/P&gt;
&lt;P&gt;After reearching about 10 different registration services, I finally found one that I was happy with: &lt;A href="www.bmtmicro.com"&gt;BMT Micro Software Registration Services&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;My intiial research involved sending each service company an email asking them if they can provide some details about how I might integrate my custom key generation software with their system. It was a short email.&lt;/P&gt;
&lt;P&gt;Several just ignored my email. Some wrote back with either a simple link or some standard verbiage that didn't really answer my question. And when I asked them to clarify they didn't respond. My gut feeling was - if they're not willing to help me at this stage, they certainly won't be willing once I have the account set up.&lt;/P&gt;
&lt;P&gt;However BMT Micro not only responded within the hour, but they sent me what seemed to be a personal, detailed explanation that directly answered my question. They offered to help more. Each response came just minutes after I hit the send button.&lt;/P&gt;
&lt;P&gt;I had the account set up in about 10 minutes. No charge whatsoever.&lt;/P&gt;
&lt;P&gt;Over the next couple of days we had a dozen or so emails back and forth (including over the weekend), each providing prompt and very detailed responses to my queries. With their help getting the key generator set up was a breeze, far easier than I imagined.&lt;/P&gt;
&lt;P&gt;When you log in to their vendor area you feel like they've thought of everything - ways to pass in test orders, pricing tiers, discount coupons, gift certificates, custom order forms - you name it, they support it.&lt;/P&gt;
&lt;P&gt;Their helpfulness didn't just stop after my intiial order page was set up - they would even go beyond that and make suggestions about how to improve the registration process I had come up with. How about that for customer service?&lt;/P&gt;
&lt;P&gt;Overall they were extremely helpful and I highly recommend them. &lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Note - I do not represent and have absolutely no affiliation with the BMT Micro.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;If you want more information just go to their website: &lt;A href="http://www.bmtmicro.com"&gt;www.bmtmicro.com&lt;/A&gt;.&lt;BR&gt;&lt;/P&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=142655" width="1" height="1"&gt;</content><slash:comments>4</slash:comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/johnwood/commentrss.aspx?PostID=142655</wfw:commentRss></entry><entry><title>Transparent RichTextBox in C#</title><link rel="alternate" type="text/html" href="http://dotnetjunkies.com/WebLog/johnwood/archive/2006/07/04/transparent_richtextbox.aspx" /><id>58df7014-fd75-437c-9641-150997716d1c:141536</id><created>2006-07-04T03:00:00Z</created><content type="text/html" mode="escaped">&lt;P&gt;I've come across countless articles in the past explaining how to implement a transparent background in a RichTextBox control. I was disappointed to find that they're all terribly complex, and incredibly slow.&lt;/P&gt;
&lt;P&gt;While researching the problem I stumbled across a far easier way to implement this in just a few lines of code.&lt;/P&gt;
&lt;P&gt;The real problem isn't so much that the RichTextBox doesn't support transparency, it's that .Net uses an old version of the RichEdit control. &lt;/P&gt;
&lt;P&gt;It seems there are 4 versions of the RichEdit control out there - when I'm talking about the RichEdit control, I'm talking about the C DLL that either comes with Windows or some version of Office. The files are named either RICHEDXX.DLL (XX is the version number), or MSFTEDIT.DLL and they're in the System32 folder.&lt;/P&gt;
&lt;P&gt;.Net RichTextBox control is bound to version 2. The biggest problem with this version (at least for me) is that it does not render properly if you try to make the window transparent. Later versions, however, do.&lt;/P&gt;
&lt;P&gt;We can fix that. If you create a control deriving from the original RichTextBox control, but overriding the CreateParams property, you can put in a new Windows class name (this is the window class name, nothing to do with classes in the C# sense). This effectively gives us a free upgrade. When the .Net RichTextBox control instantiates, it will now use the latest RichEdit control and not the old, archaic, version 2.&lt;/P&gt;
&lt;P&gt;There are other benefits too - version 3 and beyond of the RichEdit control support quite an extensive array of layout features, such as tables and full text justification. This is the version of the RichEdit that WordPad uses in Windows XP. To really see what it's capable of displaying you can create documents in Word and save them in RTF, load these into the new RichEdit and in a lot of cases it'll look identical, it's that powerful. A full list of features can be found here:&lt;BR&gt;&lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/richedit/richeditcontrols/aboutricheditcontrols.asp"&gt;http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/richedit/richeditcontrols/aboutricheditcontrols.asp&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;There are a couple of caveats. &lt;BR&gt;1. The control that this is bound to was shipped with Windows XP, and so this code won't work in Windows 2000 or earlier. &lt;BR&gt;2. The RichTextBox control in C# only knows about version 2, so the interface doesn't include all the new features. You can wrap a few of the features yourself through new methods on the RichEdit50 class. I may implement a few and post them at a future date. nb - I've noticed that SelectedFont also doesn't seem to report the correct values in this version.&lt;/P&gt;
&lt;P&gt;The code is as follows:&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;public class RichEdit50 : RichTextBox&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;[DllImport("kernel32.dll", CharSet=CharSet.Auto)]&lt;BR&gt;&amp;nbsp;static extern IntPtr LoadLibrary(string lpFileName);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp;protected override CreateParams CreateParams&lt;BR&gt;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;get&lt;BR&gt;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;CreateParams prams = base.CreateParams;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (LoadLibrary("msftedit.dll")!=IntPtr.Zero)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;prams.ExStyle |= 0x020; // transparent&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;prams.ClassName = "RICHEDIT50W";&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;return prams;&lt;BR&gt;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;}&lt;BR&gt;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;Just replace you references to RichTextBox with RichEdit50 and you'll be rolling. Because it's transparent you will need to create some kind of background on the control behind the RichTextBox - draw a gradient or something to get some cool effects. Of course if you just want the features of the RichEdit without transparency, comment out the line that ends with '// transparent'. &lt;/P&gt;
&lt;P&gt;Have fun.&lt;/P&gt;
&lt;P&gt;---&lt;/P&gt;
&lt;P&gt;Download a &lt;A href="http://www.todolistmgr.com/product,priorganizer,product.aspx"&gt;free trial of Priorganizer&lt;/A&gt; the &lt;STRONG&gt;to-do list application&lt;/STRONG&gt;, featuring &lt;STRONG&gt;hierarchical tasks&lt;/STRONG&gt;: fast, powerful yet&amp;nbsp;very simple to use.&lt;/P&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=141536" width="1" height="1"&gt;</content><slash:comments>13</slash:comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/johnwood/commentrss.aspx?PostID=141536</wfw:commentRss></entry><entry><title>WinFS and Microsoft's Missed Opportunities</title><link rel="alternate" type="text/html" href="http://dotnetjunkies.com/WebLog/johnwood/archive/2006/07/03/winfs_missed_opportunities.aspx" /><id>58df7014-fd75-437c-9641-150997716d1c:141479</id><created>2006-07-03T12:45:00Z</created><content type="text/html" mode="escaped">&lt;P&gt;The Internet is so vast that the only real way to realize its usefulness is through search. These days when people want to find something out they go straight to their computer. They go through layer upon layer of Microsoft software, all those mouse moves, clicks and keypresses, to get to what? Google.&lt;/P&gt;
&lt;P&gt;If I were Bill Gates there'd be a few more holes in the walls at Microsoft.&lt;/P&gt;
&lt;P&gt;1. The user turns on the computer and 90% of the time they're going into Windows. At this point, can they search the Internet ? No.&lt;/P&gt;
&lt;P&gt;2. So they double click Internet Explorer. At this point can they get what they want? It seems not.&lt;/P&gt;
&lt;P&gt;3. They're taken to msn.com. This is a portal that offers a search capability. But is this good enough for the consumer? It appears not.&lt;/P&gt;
&lt;P&gt;4. They go to Google. Using Internet Explorer, Microsoft's own browser software, and DHTML, a technology Microsoft mostly pioneered. Isn't that a slap in the face?&lt;/P&gt;
&lt;P&gt;Those are very real opportunities that Microsoft have missed to get customers. &lt;/P&gt;
&lt;P&gt;I &lt;A href="http://www.gartner.com/DisplayDocument?doc_cd=141825&amp;amp;ref=g_homelink"&gt;read the other day&lt;/A&gt; that Gartner think Microsoft missed an opportunity to turn their killing of WinFS into a public anouncement reinforcing their focus on Live services. What this means is, they think the reason Microsoft dumped WinFS was because it just isn't &lt;EM&gt;needed&lt;/EM&gt; considering most people these days work in the browser and not on their own filing system.&lt;/P&gt;
&lt;P&gt;I really don't agree with them. Search is a very primitive way to find information. WinFS was a very innovative move towards making information organization more efficient, improving the exposure of file metadata and linking it together in ways that search cannot. We need to move &lt;STRONG&gt;&lt;EM&gt;beyond&lt;/EM&gt;&lt;/STRONG&gt; search. Ideas like WinFS represent new opportunities for Microsoft. This is client-rich technology that Microsoft does best. Dropping it or putting it on the backburner was a bad idea.&lt;/P&gt;
&lt;P&gt;If Microsoft can innovate beyond search and integrate this into the operating system, then they will capture a whole new customer base at stage 1 - before they even click on Internet Explorer. &lt;/P&gt;
&lt;P&gt;Given this is all it would take to derail Google, remind me again why Google's stock price &lt;A href="http://www.google.com/finance?q=GOOG"&gt;is so high&lt;/A&gt;?&lt;/P&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=141479" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/johnwood/commentrss.aspx?PostID=141479</wfw:commentRss></entry><entry><title>Will Web 2.0 Lead to HTML's Demise?</title><link rel="alternate" type="text/html" href="http://dotnetjunkies.com/WebLog/johnwood/archive/2006/06/18/ajax_smart_client.aspx" /><id>58df7014-fd75-437c-9641-150997716d1c:140744</id><created>2006-06-18T15:06:00Z</created><content type="text/html" mode="escaped">&lt;P&gt;When the web first took off HTML was quite primitive. It handled flow layout well, could provide tables for more complex layout, and was able to post data back to a server to provide some degree of interaction, to name but a few features. When it came to presentation though, it really wasn't that much more advanced than, say, Word.&lt;/P&gt;
&lt;P&gt;But there was one common thread between all web sites: &lt;STRONG&gt;they had a monopoly on both the user interface and content of their site&lt;/STRONG&gt;.&amp;nbsp; If they wanted to provide news, then they would decide how it gets rendered. If they wanted to provide a shopping cart then they would decide how that would look.&lt;/P&gt;
&lt;P&gt;As HTML has matured so has its place in the browser. Technologies such as more advanced scripting capability (DHTML) and more advanced data integration technology (AJAX) have transformed the role of HTML from the only way to access content on the Internet, to &lt;STRONG&gt;Just Another User Interface technology&lt;/STRONG&gt;. As HTML advances, more emphasis is put on client-side processing. This is the basis of Ajax for instance. But with this emphasis comes a natural progression from tightly coupled content and presentation to loosely coupled. More and more sites are separating their content from their presentation, simply because it's more scalable and makes for a better user interface experience.&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;And so, as Web 2.0 permeates throughout the Internet, the HTML monopoly diminishes.&lt;/EM&gt; &lt;/P&gt;
&lt;P&gt;The best evidence of this is the huge explosion of mashup websites over the past year. But while these mashups are implemented in HTML using AJAX, they certainly don't need to be. &lt;/P&gt;
&lt;P&gt;The next best evidence is the popularity of RSS. Many people interchange the terms RSS and blogs, but they forget that RSS is actually the largest movement so far to separate content from presentation. It's the first real liberation of HTML from the Internet.&lt;/P&gt;
&lt;P&gt;When you take HTML as being Just Another User Interface Technology, it suddenly doesn't look so great. Sure it has some fantastic layout features, but no matter how you twist and mould it, at the end of the day it has its roots as being a document technology and not an application user interface technology. &lt;STRONG&gt;All the recent advances in HTML just make it more and more like a smart client technology.&lt;/STRONG&gt; This puts it in a new realm, with new competitors. It puts HTML up against a whole new standard of quality.&lt;/P&gt;
&lt;P&gt;The browser of yesterday is an HTML rendering tool. The browser of today and tomorrow will be a navigation tool at best. HTML might have a place for adhoc information pages, much like a magazine. But when competing with other user interface technologies - WPF, WinForms, Flash, to name a few - it really is inferior.&lt;/P&gt;
&lt;P&gt;Humans are generally lazy creatures. They like convenience. This is one reason why the Internet has become so popular - it's just so convenient to have all that information brought together in one place. More power to Google for creating a convenient tool for accessing this information. But only now is it becoming clearer that even searching for information is a burden. &lt;/P&gt;
&lt;P&gt;The ultimate in convenience is not searching for information, it's having an application that can search for you. RSS aggregators can bring together news from all over. Kayak.com can bring together flight information from most major airlines in the world. But these really only scratch the surface of what's possible.&lt;/P&gt;
&lt;P&gt;Mashing up information is the first step. The next step is to scale this and really innovate with the user interface. Realtime results, advanced graphing, being able to process more data and extract more information and present it in less space will be the key to future mash-up applications. We're talking about pushing the user interface technology beyond simple document layout. HTML just won't cut it for this demand. Consumer demand for convenience will drive the focus away from HTML and towards smart client technology. &lt;/P&gt;
&lt;P&gt;&lt;EM&gt;And, ironically, Web 2.0 is the catalyst for this change. &lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Has all this been said before? &lt;/STRONG&gt;I think there's something new to say now. The landscape has changed drastically over the past year or two. &lt;/P&gt;
&lt;P&gt;Ajax has taken off, RSS has taken off - both of which are tearing apart HTML sites. Then we have important advances in smart client technology. As more computers come with .Net 2.0 installed, there are more computers capable of running ClickOnce based websites. &lt;STRONG&gt;ClickOnce provides the means to run rich .Net code in the browser with the same peace of mind you have viewing HTML&lt;/STRONG&gt;. Sure the Google spreadsheet may seem quite an accomplishment, but only because they've written a spreadsheet in Javascript, an interpreted, typeless scripting language. It really wouldn't take much for someone to create a .Net spreadsheet and have this hosted on the web, running seamlessly and safely in the browser. And Google's spreadsheet will look FAR inferior next to this rich client technology.&lt;/P&gt;
&lt;P&gt;And then there is WPF, even WPF/E for non-Windows platforms. With incredibly rich three dimensional graphics, WPF offers to bridge the gap between the dazzling experience we get from the graphics we see on television and how we experience information on the Internet. It's only a matter of time before every computer is capable of running WPF just as transparently as HTML. For creating superior looking web sites in the future it won't be a question of HTML vs. Flash, it will be HTML vs. WPF.&lt;/P&gt;
&lt;P&gt;These transitions will come, &lt;STRONG&gt;it's just a matter of time&lt;/STRONG&gt;. The clock is ticking for HTML, and all these Web 2.0 companies investing billions into HTML will ultimately be left behind.&lt;/P&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=140744" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/johnwood/commentrss.aspx?PostID=140744</wfw:commentRss></entry><entry><title>When Coder Turns Father</title><link rel="alternate" type="text/html" href="http://dotnetjunkies.com/WebLog/johnwood/archive/2006/06/17/coder_on_fatherhood.aspx" /><id>58df7014-fd75-437c-9641-150997716d1c:140662</id><created>2006-06-17T07:52:00Z</created><content type="text/html" mode="escaped">&lt;P&gt;Can it be? Some words emanating from my fingers that have nothing to do with technology? It's true. This is a personal post. It's Fathers' Day weekend and, well, I have something to say about it, and it's not in C#.&lt;/P&gt;
&lt;P&gt;Being the father of a 15 month old has been such an extraordinary experience it's something I can't help but write about.&amp;nbsp; Given it's father's day weekend, why not share the experience with everyone else?&lt;/P&gt;
&lt;P&gt;I can't say I wasn't scared at the prospect of having kids. My wife always wanted kids, and so did I. The only difference was that I used to joke that I wishes children would be born 10 years old, to avoid the whole diaper changing, sleepless nights, temper tantrum-ridden terrible-two years and, well, all the joys I thought being a father was about.&lt;/P&gt;
&lt;P&gt;That wasn't really what I was scared of though. It was more finding space in my life for kids. I spend so much time working on software, the the rest of my time with my wife and... well, sleeping, I honestly wondered how I would ever make room for the hundreds of hours a week of attention that a child demands.&lt;/P&gt;
&lt;P&gt;Throughout most of my wife's pregnancy I hardly tried to imagine what life would be like after my daughter was born. That always seemed to be a different phase of my life that I would tackle when it arrived. &lt;/P&gt;
&lt;P&gt;All my friends also joked (or half joked) that the end of my life as I knew it was imminent. They warned me that nothing would be the same again.&lt;/P&gt;
&lt;P&gt;Well, they were right. &lt;/P&gt;
&lt;P&gt;Not only did my life change, but I feel like my life&amp;nbsp;&lt;EM&gt;&lt;STRONG&gt;began&lt;/STRONG&gt; &lt;/EM&gt;when my daughter was born. &lt;/P&gt;
&lt;P&gt;She is such an amazing and delightful character. Somehow, through some kind of mysterious magic (or perhaps genetics), she seems to have become this perfect combination of my wife and I. Beaming with everything I love about my wife, she's exciting and fun to be with and I miss her like crazy when we're apart. &lt;/P&gt;
&lt;P&gt;When you have kids, it's not just you that changes. The whole world changes. Now you look at everything differently. You experience everything as if it's the first time you've experienced it. You have a new best friend to share everything with. More importantly you're now a family, not just a couple. This seems to elevate your status in the world, you become a bigger person.&lt;/P&gt;
&lt;P&gt;The knowing looks you get from other fathers when your kid is crying in the store, or running around screaming with excitement, is like a passport into a secret fathers club. They've all been there before. With a simple (manly) nod you're saying 'respect, i've been there too and you're doing a great job'. &lt;/P&gt;
&lt;P&gt;Having a child teaches you more about life and humanity than you could ever learn any other way. The most important lesson for me was that logic and reason (or more precisely algorithms and software) can't explain everything. When your kid wakes you up in the morning with a beaming smile, run up to you and hug you, or laugh and kiss you on the cheek - you realize that nothing else matters in this world. Not even Ajax.&lt;/P&gt;
&lt;P&gt;So if you're a workaholic like I am, and are scared to commit to having kids - don't shy away from it. It's time to wake up and smell living, it changes everything for the better. And don't try to imagine what it's like, because you just can't. It's one of those things you only understand when it happens to you. Believe me.&lt;/P&gt;
&lt;P&gt;Plus you get to use father's day as an excuse to buy yourself a new gadget.&lt;/P&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=140662" width="1" height="1"&gt;</content><slash:comments>2</slash:comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/johnwood/commentrss.aspx?PostID=140662</wfw:commentRss></entry><entry><title>Optimizing Reflection</title><link rel="alternate" type="text/html" href="http://dotnetjunkies.com/WebLog/johnwood/archive/2006/06/16/optimizing_reflection.aspx" /><id>58df7014-fd75-437c-9641-150997716d1c:140605</id><created>2006-06-16T14:44:00Z</created><content type="text/html" mode="escaped">&lt;P&gt;For the purpose of optimizing an application of mine I set out to evaluate the performance of retrieving members (eg, GetField or GetProperty, anything derived from MemberInfo) from a Type.&lt;/P&gt;
&lt;P&gt;I created a test to see whether it is faster to cache the MemberInfo in your own hashtable, or whether the performance of the GetField and GetProperty functions are actually more optimized than a simple hashtable lookup.&lt;/P&gt;
&lt;P&gt;The setup was a class that contained 21 fields and 21 properties, 42 members in total (excluding the constructor).&lt;/P&gt;
&lt;P&gt;I stored a list of these member names in a string array. I then looped through some code that looked up the MemberInfo for each member, and repeated this 20,000 times.&lt;/P&gt;
&lt;P&gt;The second test cached each MemberInfo in a hashtable, and the loop instead retrieved the data from the hashtable rather than from the type.&lt;/P&gt;
&lt;P&gt;The result was quite surprising.&lt;/P&gt;
&lt;P&gt;The first test, using GetField or GetProperty, took about 3.8 seconds. The second test, using the hashtable, took 0.19 seconds. &lt;STRONG&gt;That's about 20 times faster. &lt;/STRONG&gt;This was .Net 1.1 - in .Net 2 it's about 8 times faster (reflection was optimized in version 2).&lt;/P&gt;
&lt;P&gt;So if you're have some code that makes heavy use of GetField/GetProperty methods, you may want to conisder caching them in a hashtable first.&lt;/P&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=140605" width="1" height="1"&gt;</content><slash:comments>6</slash:comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/johnwood/commentrss.aspx?PostID=140605</wfw:commentRss></entry><entry><title>What is Ad-hoc Reporting?</title><link rel="alternate" type="text/html" href="http://dotnetjunkies.com/WebLog/johnwood/archive/2006/06/06/what_is_adhoc_reporting.aspx" /><id>58df7014-fd75-437c-9641-150997716d1c:139880</id><created>2006-06-06T05:41:00Z</created><content type="text/html" mode="escaped">&lt;P&gt;Most applications have some form of reporting. Any printing of data is, in essence, reporting. &lt;/P&gt;
&lt;P&gt;When you need a report you're often looking down a list of available, stock reports, looking for one that may include the data you were looking for. It's often the case that you need to print several different reports and then piece the data together yourself, to get to what you want.&lt;/P&gt;
&lt;P&gt;Report generation is often a complicate thing, and a task most definitely suited to a programmer. Using tools such as SQL Query Analyzer to develop the query, Visual Studio to write the code that executes the query into datasets, and then Crystal Reports to design the actual report. Not to mention the complexity of deploying the report to the users, and training the users how to read the reports.&lt;/P&gt;
&lt;P&gt;At many companies I've visited the typical turnaround for a report is a couple of days for a simple report, and maybe even a couple of weeks for the more complex reports. It's common for there to be a backlog of reports waiting to be developed.&lt;/P&gt;
&lt;P&gt;Because of the time involved in generating these reports, and the never-ending changing of requirements that mandates new reports to almost constantly be developed, reports are an expensive and frustrating business for many companies.&lt;/P&gt;
&lt;P&gt;But help is available.&lt;/P&gt;
&lt;P&gt;Reporting doesn't have to be difficult. At a fundamental level reporting is just about extracting data from a database, applying some degree of filtering, joining and formatting and presenting it. The fact this is a complicated procedure is purely because of the tools that are used.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Ad-hoc Reporting &lt;/STRONG&gt;refers to a type of reporting application that allows power-users to produce their own reports with little technical knowledge. No programmers, no designers, no SQL and most importantly no wait. &lt;/P&gt;
&lt;P&gt;Typically an Ad-hoc Reporting tool presents a view of the database's structure, and the user visually drags and drops the fields from the structure onto the report - specifying any filtering, grouping or sorting they wish to apply. The report is then saved and can be pulled up and executed any time the user wishes: The report is under total control of the user.&lt;/P&gt;
&lt;P&gt;There are no deployment issues with Ad-hoc Reporting tools, other than installing the tool itself and a viewer. Many Ad-hoc reporting tools are web based, making installation unnecessary. &lt;/P&gt;
&lt;P&gt;The best aspect of Ad-hoc Reporting tools is that they put users in charge. The users know what data they need, and they can go straight in and pull it out.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Of course there are some disadvantages. &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;For one, the database is a shared resource. Managed reports (ie. Those that are not ad-hoc) are crafted by technical engineers who understand the database and how far it can be stretched. They ensure the queries are using indices, for example, and that the user cannot download so much data that the database grinds to a halt. With ad-hoc reporting you have few safeguards to stop the user from hogging the database and slowing everything down for everyone else.&lt;/P&gt;
&lt;P&gt;While ad-hoc reporting tools provide users with the ability to construct quite complex queries, they won’t be able to do everything. Some complex joins and custom calculated fields may not be possible for the user to produce.&lt;/P&gt;
&lt;P&gt;Also, there will be some training involved to get the users constructing their own reports. With managed reports they simply had to click a link and maybe enter some parameters to launch a report, now the bar is considerably higher.&lt;/P&gt;
&lt;P&gt;But for many organizations the benefits outweigh the drawbacks. The cost savings alone make it worth installing and training users to create their own reports.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;More Information&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Microsoft have a video on setting up the Report Designer (Ad-hoc reporting tool) that comes with SQL Server 2005. You can &lt;A href="http://msdn.microsoft.com/msdntv/episode.aspx?xml=episodes/en/20050531SQLServerCC/manifest.xml"&gt;watch the video here&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=139880" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/johnwood/commentrss.aspx?PostID=139880</wfw:commentRss></entry><entry><title>ANN: FTP Upload Utility - ftpupload.exe</title><link rel="alternate" type="text/html" href="http://dotnetjunkies.com/WebLog/johnwood/archive/2006/06/03/ftp_upload_utility.aspx" /><id>58df7014-fd75-437c-9641-150997716d1c:139669</id><created>2006-06-03T09:13:00Z</created><content type="text/html" mode="escaped">&lt;P&gt;Here's a free little utility I wrote for uploading files to an ftp site in one command, from the command prompt. &lt;A href="http://www.serviceframework.com/jwss/ftpupload.zip"&gt;You can download the utility here&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;We all know that downloading files from an FTP site is easy, you can do that in explorer. But uploading is a bit more tricky. You can use the ftp.exe command from the prompt, but this requires you to understand the&amp;nbsp;FTP commands. The ftp program also doesn't allow you to automate uploads because it requires user interaction.&lt;/P&gt;
&lt;P&gt;Uploading files automatically is exactly what I wanted to do, so to solve this problem I created a utility whole sole purpose is to upload a file to an FTP server. &lt;/P&gt;
&lt;P&gt;To upload the file you simply run:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;ftpupload&lt;/STRONG&gt; [servername] [username] [password] [serverpath] [localfile]&lt;/P&gt;
&lt;P&gt;Where...&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;servername &lt;/STRONG&gt;= the host name of the server, eg. &lt;A href="ftp://ftp.yourdomain.com"&gt;ftp.yourdomain.com&lt;/A&gt;.&lt;BR&gt;&lt;STRONG&gt;username &lt;/STRONG&gt;= the user name used to login to the FTP server&lt;BR&gt;&lt;STRONG&gt;password &lt;/STRONG&gt;= the password&lt;BR&gt;&lt;STRONG&gt;serverpath &lt;/STRONG&gt;= the path on the server to put the file. If this includes spaces, enclose the path in double quotes. eg. "/files"&lt;BR&gt;&lt;STRONG&gt;localfile &lt;/STRONG&gt;= the file on the local machine to upload. If this includes spaces, enclose the file in double quotes, eg. "c:\myfiles\blah.zip"&lt;/P&gt;
&lt;P&gt;Files are uploaded in binary mode. Progress is indicated as the file is uploaded.&lt;/P&gt;
&lt;P&gt;I find this utility particularly useful for backing up files to a web site automatically, as the upload can be run from a DOS batch file on a schedule.&lt;/P&gt;
&lt;P&gt;Let me know if you find any bugs.&lt;BR&gt;&lt;/P&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=139669" width="1" height="1"&gt;</content><slash:comments>6</slash:comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/johnwood/commentrss.aspx?PostID=139669</wfw:commentRss></entry><entry><title>User Interface Cross-Roads</title><link rel="alternate" type="text/html" href="http://dotnetjunkies.com/WebLog/johnwood/archive/2006/06/02/user_interface_technologies.aspx" /><id>58df7014-fd75-437c-9641-150997716d1c:139503</id><created>2006-06-02T06:12:00Z</created><content type="text/html" mode="escaped">&lt;P&gt;We've hit a cross-roads. If you had to decide, today, which technology to use in order to create the user interface for a consumer application, which direction would you go? It seems that more options are being added to the list every other week. Lets look at technologies available today:&lt;/P&gt;
&lt;P&gt;1. Win32 App, developed in VB6, C++, Delphi etc.&lt;BR&gt;2. .Net WinForms, smart-client&lt;BR&gt;3. .Net WinForms running in a browser deployed with ClickOnce. Admittedly not much different to above, but you do have to take special precautions with how you're interacting with the system to ensure you don't step outside your privelege box.&lt;BR&gt;4. .Net ASP using server-side controls and viewstate.&lt;BR&gt;5. &lt;A href="http://atlas.asp.net/Default.aspx?tabid=47"&gt;Atlas&lt;/A&gt; with ASP.&lt;BR&gt;6. Standalone Atlas with no ASP side.&lt;BR&gt;7. Plain old HTML and JavaScript.&lt;BR&gt;8. Flash.&lt;BR&gt;9. Java. Yes people are still developing in client-side Java.&lt;BR&gt;10. Microsoft's &lt;A href="http://www.nikhilk.net/ScriptSharpIntro.aspx"&gt;Script#&lt;/A&gt; - developing HTML/JS with C#.&lt;BR&gt;11. &lt;A href="http://code.google.com/webtoolkit/"&gt;Google's Web Toolkit&lt;/A&gt; - developing HTML/JS with Java.&lt;BR&gt;12. WPF - not released yet, but something many companies are using already and would be stupid to ignore.&lt;BR&gt;13. WPF/E - unless you're targeting multiple platforms (on, like, the Internet), then you need to write to a subset of WPF with JavaScript as your language.&lt;BR&gt;14. Access. Ok I had to mention this because believe it or not you can still create those forms-over-data type apps using Access without having to touch a line of code.&lt;BR&gt;15. DOS. Ok maybe that's taking it too far.&lt;/P&gt;
&lt;P&gt;Alright I'm sure there are a lot more options. But it does go to show you that the simple question 'what should I write this in?' isn't quite so simple to answer. The front-runners would have to be Microsoft and Google, but which do you bet on? Microsoft may even be competing with themselves to take developers away from WinForms and ASP and move them to WPF. &lt;/P&gt;
&lt;P&gt;These are difficult times for developers. Hopefully in a few years the path will seem clearer, in the meantime all we can do is take a gamble.&lt;BR&gt;&lt;/P&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=139503" width="1" height="1"&gt;</content><slash:comments>0</slash:comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/johnwood/commentrss.aspx?PostID=139503</wfw:commentRss></entry></feed>