Shadowfax is an interesting set of “Reference Solution” that is being worked on by the PAG group at Microsoft. I think this would be a very important piece in the whole SOA (Service Oriented Architecture) space, with getting bits out the door in a quick and reusable fashion. Basically this is a similar implementation of Indigo in todays technologies (i.e. those that are currently shipping such as .NET). This “unifies” the four messaging options you have today:

  1. Web Services
  2. Remoting
  3. MSMQ
  4. DCOM

Per Microsoft here are the goals for this are:

  1. Enable separation between stable service interfaces and possibly volatile and unreliable Service Dispatching (Without the framework one would have to think about how to expose the service first. With the framework one can build a service first and then think about how to expose it.)
  2. Make it possible for developers to keep aspect-like logic, for example monitoring or auditing logic, separate from Service Dispatching logic.
  3. Provide a single, consistent mode of handling service requests regardless of the transport transport on which they came.
  4. Help developers build robust services that can be accessed by client applications through multiple transports.

This is how is translates to Architecture speak:

  1. Provide support for sending service request and receiving service responses over multiple transports (such as Web Services or message queue transport)
  2. Provide multiple, configurable means of dispatching Service Dispatchings.
  3. Provide multiple, configurable means of passing requests to and receiving responses form Service Dispatchings.
  4. Provide configurable means of “inserting” aspect-like logic into request and response flow.
  5. Provide simple means of integration with BizTalk orchestration

And the constraints within which this has to operate are:

  • The architecture must be logically consistent with the future direction of relevant Microsoft products (Indigo and BizTalk in particular).
  • The implementation should use the .NET Framework.  To be deployed, the architecture must only require the Windows platform with the .NET Framework distributable installed.
  • The development and modifications of the framework should be done with VS 2003 Enterprise Version.

Again, I think this would be quite a significant advantage before Indigo ships. I just started playing with this, so look out for more details on this in the next few weeks.

Hardware Error Codes

I suddenly started getting an error during boot up on one of my machine and could not figure out what it was, after spending a fair amount of time on google, I found this listing of error codes that I feel was very helpful. You can bookmark this post and use it as your reference.

Code  Description
01x   Undetermined problem errors
02x   Power supply errors

1xx     System Board Errors
   101  System board error – Interrupt failure
   102  System board error – Timer failure
   103  System board error – Timer interrupt failure
   104  System board error – Protected mode failure
   105  System board error – Last 8042 command not accepted
   106  System board error – Converting logic test
   107  System board error – Hot NMI test
   108  System board error – Timer bus test
   109  Direct memory access test error
   110  System board memory
   111  Adapter memory
   112  (any adapter in system unit)
   113  (any adapter in system unit)
   121  Unexpected hardware interrupts occurred
   131  Cassette wrap test failed
   151  System Board Error; Defective battery
   152  System Board Error; Real time clock failure
   161  System Options Error – (Run SETUP) Battery failure
   162  System options not set correctly-(Run SETUP)
   163  Time and date not set – (Run SETUP)
   164  Memory size error – (Run SETUP)
   165  System options not set – (Run SETUP)
   166  (any adapter in system unit)
   199  User-indicated configuration not correct

2xx    Memory (RAM) Errors
xxyyyy yyzz 201 bad ram chip in bank xx row zz

   201  Memory test failed
   202  Memory address error
   203  Memory address error
   215  (system board memory failure)
   216  (system board memory failure)

3xx    Keyboard Errors

   301  Keyboard did not respond to software reset correctly, or a stuck key failure was detected. If a stuck key was detected, the scan code for the key is displayed in hexadecimal. For example, the error code 49 301 indicates that Key 73, the PAGE UP key, has failed (49 hex = 73 decimal)

   302  User-indicated error from the keyboard test, or AT keylock is locked
   303  Keyboard or system unit error
   304  Keyboard or system unit error; CMOS does not match system
   305  Models 50 and 60 fuse or keyboard cable error
   341  Replace keyboard
   342  Replace interface cable
   343  Replace enhancement card or cable

4xx    Monochrome Monitor Errors
   401  Monochrome memory test, horizontal synchronous frequency test, or video test failed
   408  User-indicated display attributes failure
   416  User-indicated character set failure
   424  User-indicated 80 X 25 mode failure
   432  Parallel port test failed (monochrome adapter)

5xx    Color Monitor Errors
   501  Color memory test failed, horizontal synchronous frequency test, or video test failed
   508  User-indicated display attribute failure
   516  User-indicated character set failure
   524  User-indicated 80 X 25 mode failure
   532  User-indicated 40 X 25 mode failure
   540  User-indicated 320 X 200 graphics mode failure
   548  User-indicated 640 X 200 graphics mode failure

6xx    Floppy Disk Drive Errors
   601  Disk power-on diagnostics test failed
   602  Disk test failed; boot record is not valid
   603  Disk size error
   606  Disk verify function failed
   607  Write-protected disk
   608  Bad command disk status returned
   610  Disk initialization failed
   611  Timeout – disk status returned
   612  Bad NEC (controller) – disk status returned
   613  Bad DMA – disk status returned
   614  DMA Boundary error
   621  Bad seek – disk status returned
   622  Bad CRC – disk status returned
   623  Record not found – disk status returned
   624  Bad address mark – disk status returned
   625  Bad NEC (controller) seek – disk status returned
   626  Disk data compare error
   627  Disk change line error
   628  Disk removed

7xx    8087 or 80287 Math Coprocessor Errors
   701  Math coprocessor test failed

9xx    Parallel Printer Adapter Errors
   901  Parallel printer adapter test failed

10xx    Reserved for Parallel Printer Adapter
  1001  Alt printer Adapter test failed

11xx   Asynchronous Communications Adapter Errors
  1101 Asynchronous communications adapter test failed
  1102 Any serial device (system board)
  1106 Any serial device (system board)
  1107 Communications cable (system board)
  1108 Any serial device (system board)
  1109 Any serial device (system board)
  1110 Modem status register not clear
  1111 Ring indicate failure
  1112 Trailing edge ring indicate failure
  1113 Receive and delta receive line signal detect failure
  1114 Receive line signal detect failure
  1115 Delta receive line signal detect failure
  1116 Line control register; all bits cannot be set
  1117 Line control register; all bits cannot be reset
  1118 Xmit holding and/or shift register is stuck on
  1119 Data ready stuck on
  1120 Interrupt enable register, all bits cannot be set
  1121 Interrupt enable register, all bits cannot be reset
  1122 Interrupt pending stuck on
  1123 Interrupt ID register stuck on
  1124 Modem control register, all bits cannot be set
  1125 Modem control register, all bits cannot be reset
  1126 Modem status register, all bits cannot be set
  1127 Modem status register, all bits cannot be reset
  1128 Interrupt ID failure
  1129 Cannot force overrun error
  1130 No modem status interrupt
  1131 Invalid interrupt pending
  1132 No data ready
  1133 No data available interrupt
  1134 No transmit holding interrupt
  1135 No interrupts
  1136 No received line status interrupt
  1137 No receive data available
  1138 Transmit holding register not empty
  1139 No modem status interrupt
  1140 Transmit holding register not empty
  1141 No interrupts
  1142 No IRQ4 interrupt
  1143 No IRQ3 interrupt
  1144 No data transferred
  1145 Maximum BAUD rate failed
  1146 Minimum BAUD rate failed
  1148 Timeout error
  1149 Invalid data returned
  1150 Modem status register error
  1151 No DSR and Delta DSR
  1152 No data set ready
  1153 No delta
  1154 Modem status register not clear
  1155 No CTS and Delta CTS
  1156 No clear to send
  1157 No delta CTS

12xx   Alternate Asynchronous Communications Adapter Errors
  1201 Alternate asynchronous communications adapter test failed
  1202 Dual Asynchronous Adapter/A (Any serial device)
  1206 Dual Asynchronous Adapter/A (Any serial device)
  1207 Dual Asynchronous Adapter/A board error
  1208 Dual Asynchronous Adapter/A (Any serial device)
  1209 Dual Asynchronous Adapter/A (Any serial device)

13xx   Game Control Adapter Errors
  1301 Game control adapter test failed
  1302 Joystick test failed

14xx   Printer Errors
  1401 Printer test failed
  1404 Matrix printer failed

15xx   Synchronous Data Link Control (SDLC) Communications Adapter Errors
  1510 8255 Port B failure
  1511 8255 Port A failure
  1512 8255 Port C failure
  1513 8253 Timer 1 did not reach terminal count
  1514 8253 Timer 1 stuck on
  1515 8253 Timer 0 did not reach terminal count
  1516 8253 Timer 0 stuck on
  1517 8253 Timer 2 did not reach terminal count
  1518 8253 Timer 2 stuck on
  1519 8273 Port B error
  1520 8273 Port A error
  1521 8273 command/read timeout
  1522 Interrupt level 4 failure
  1523 Ring Indicate stuck on
  1524 Receive clock stuck on
  1525 Transmit clock stuck on
  1526 Test indicate stuck on
  1527 Ring indicate not on
  1528 Receive clock not on
  1529 Transmit clock not on
  1530 Test indicate not on
  1531 Data set ready not on
  1532 Carrier detect not on
  1533 Clear to send not on
  1534 Data set ready stuck on
  1536 Clear to send stuck on
  1537 Level 3 interrupt failure
  1538 Receive interrupt results error
  1539 Wrap data miscompare
  1540 DMA channel 1 error
  1541 DMA channel 1 error
  1542 Error in 8273 error checking or status reporting
  1547 Stray interrupt level 4
  1548 Stray interrupt level 3
  1549 Interrupt presentation sequence timeout

16xx   Display Emulation Errors (327x, 5520, 525x)

17xx   Fixed Disk Errors
The following is a listing of Personal Computer AT Error Codes for the fixed disk drive and fixed disk drive adapter:

  1700 Fixed Disk/Adapter
  1701 HDD Controller Failure
  1702 Time out error
  1703 Seek error
  1704 Disk adapter error
  1705 No record found
  1706 Write fault error
  1707 Track 0 error
  1708 Head select error
  1709 Defective ECC
  1710 Read buffer overrun
  1711 Bad address mark
  1712 Error-cause not determined
  1713 Data compare error
  1714 Drive not ready
  1780 Disk 0 failure
  1781 Disk 1 failure
  1782 Disk adapter error
  1790 Disk 0 error
  1791 Disk 1 error

18xx   I/O Expansion Unit Errors
  1801 I/O expansion unit POST error
  1810 Enable/Disable failure
  1811 Extender card warp test failed (disabled)
  1812 High order address lines failure (disabled)
  1813 Wait state failure (disabled)
  1814 Enable/Disable could not be set on
  1815 Wait state failure (disabled)
  1816 Extender card warp test failed (enabled)
  1817 High order address lines failure (enabled)
  1818 Disable not functioning
  1819 Wait request switch not set correctly
  1820 Receiver card wrap test failure
  1821 Receiver high order address lines failure

19xx   3270 PC Attachment Card Errors

20xx   Binary Synchronous Communications (BSC) Adapter Errors
  2010 8255 Port A failure
  2011 8255 Port B failure
  2012 8255 Port C failure
  2013 8253 Timer 1 did not reach terminal count
  2014 8253 Timer 1 stuck on
  2016 8253 Timer 2 did not reach terminal count, or timer 2 stuck on
  2017 8251 Data set ready failed to come on
  2018 8251 Clear to send not sensed
  2019 8251 Data set ready stuck on
  2020 8251 Clear to send stuck on
  2021 8251 Hardware reset failed
  2022 8251 Software reset failed
  2023 8251 Software “error reset” failed
  2024 8251 Transmit ready did not come on
  2025 8251 Receive ready did not come on
  2026 8251 Could not force “overrun” error status
  2027 Interrupt failure – no timer interrupt
  2028 Interrupt failure – transmit, replace card or planar
  2029 Interrupt failure – transmit, replace card
  2030 Interrupt failure – receive, replace card or planar
  2031 Interrupt failure – receive, replace card
  2033 Ring indicate stuck on
  2034 Receive clock stuck on
  2035 Transmit clock stuck on
  2036 Test indicate stuck on
  2037 Ring indicate stuck on
  2038 Receive clock not on
  2039 Transmit clock not on
  2040 Test indicate not on
  2041 Data set ready not on
  2042 Carrier detect not on
  2043 Clear to send not on
  2044 Data set ready stuck on
  2045 Carrier detect stuck on
  2046 Clear to send stuck on
  2047 Unexpected transmit interrupt
  2048 Unexpected receive interrupt
  2049 Transmit data did not equal receive data
  2050 8251 detected overrun error
  2051 Lost data set ready during data wrap
  2052 Receive timeout during data wrap

21xx   Alternate Binary Synchronous Communications Adapter Errors
  2110 8255 Port A failure
  2111 8255 Port B failure
  2112 8255 Port C failure
  2113 8253 Timer 1 did not reach terminal count
  2114 8253 Timer 1 stuck on
  2115 8253 Timer 2 did not reach terminal count, or timer 2 stuck on
  2116 8251 Data set ready failed to come on
  2117 8251 Clear to send not sensed
  2118 8251 Data set ready stuck on
  2119 8251 Clear to send stuck on
  2120 8251 Hardware reset failed
  2121 8251 Software reset failed
  2122 8251 Software “error reset” failed
  2123 8251 Transmit ready did not come on
  2124 8251 Receive ready did not come on
  2125 8251 Could not force “overrun” error status
  2126 Interrupt failure – no timer interrupt
  2128 Interrupt failure – transmit, replace card or planar
  2129 Interrupt failure – transmit, replace card
  2130 Interrupt failure – receive, replace card or planar
  2131 Interrupt failure – receive, replace card
  2133 Ring indicate stuck on
  2134 Receive clock stuck on
  2135 Transmit clock stuck on
  2136 Test indicate stuck on
  2137 Ring indicate stuck on
  2138 Receive clock not on
  2139 Transmit clock not on
  2140 Test indicate not on
  2141 Data set ready not on
  2142 Carrier detect not on
  2143 Clear to send not on
  2144 Data set ready stuck on
  2145 Carrier detect stuck on
  2146 Clear to send stuck on
  2147 Unexpected transmit interrupt
  2148 Unexpected receive interrupt
  2149 Transmit data did not equal receive data
  2150 8251 detected overrun error
  2151 Lost data set ready during data wrap
  2152 Receive timeout during data wrap

22xx   Cluster Adapter Errors

24xx   Enhanced Graphics Adapter Errors

26xx   XT/370 Error Codes

27xx   XT/370 Error Codes

29xx   Color Matrix Printer Errors

30xx   Primary PC Network Adapter Errors
  3001 CPU Failure
  3002 ROM Failure
  3003 ID Failure
  3004 RAM Failure
  3005 HIC Failure
  3006 +/- 12v Failed
  3007 Digital Loopback Failure
  3008 Host Detected HIC Failure
  3009 Synchronous Fail & No Go Bit
  3010 HIC Test OK & No Go Bit
  3011 Go Bit & No CMD 41
  3012 Card not present
  3013 Digital Failure ( Fall Through )
  3015 Analog Failure
  3041 Hot Carrier (not this card)
  3042 Hot Carrier (This Card)

31xx   Secondary PC Network Adapter Errors
  3101 CPU Failure
  3102 ROM Failure
  3103 ID Failure
  3104 RAM Failure
  3105 HIC Failure
  3106 +/- 12v Failed
  3107 Digital Loopback Failure
  3108 Host Detected HIC Failure
  3109 Synchronous Fail & No Go Bit
  3110 HIC Test OK & No Go Bit
  3111 Go Bit & No CMD 41
  3112 Card not present
  3113 Digital Failure ( Fall Through )
  3115 Analog Failure
  3141 Hot Carrier (not this card)
  3142 Hot Carrier (THIS CARD !!)

33xx   Compact Printer Errors

74xx   Display Adapter 8514/A

850x   80286 Expanded Memory Adapter/A

851x   80286 Expanded Memory Adapter/A

852x   Memory Module Package on the 8028
6 Expanded Memory Adapter/A

860x   PS/2 Pointing Device Errors
   8601   Pointing device (IBM mouse)
   8602   Pointing device
   8603   System board error
   8604   System board : Pointing device

100xx  Multiprotocol Adapter/A
   10002  Multiprotocol Adapter/A any serial device
   10006  Multiprotocol Adapter/A any serial device
   10007  Communications cable Multiprotocol Adapter/A
   10008  Multiprotocol Adapter/A any serial device
   10009  Multiprotocol Adapter/A any serial device

101xx Modem Adapter/A
   10102  Modem Adapter/A any serial device
   10106  Modem Adapter/A any serial device
   10108  Modem Adapter/A any serial device
   10109  Modem Adapter/A any serial device

104xx Fixed Disk Adapter (ESDI) Drives 0 or 1 (C or D)
   10480  Fixed disk C, adapter (ESDI) or system board error
   10481  Fixed disk D, adapter (ESDI) or system board error
   10482  Fixed disk C or system board error
   10483  Fixed disk adapter (ESDI) or system board error
   10490  Fixed disk C or adapter (ESDI) error
   10491  Fixed disk C or adapter (ESDI) error

16500  6157 Tape Attachment Adapter

16520  6157 Streaming Tape Drive

16540  6157 Streaming Tape Drive or tape attachment adapter

Gmail Account

So, somehow I was one of the “dudes” to get a gmail account. Since I have been travelling a lot (on work), I don’t get the time to be online as much – if you have me on one of the IM’s, you know that – since I am online only about 50% of the day. But the point I am getting to, is that I have not had a chance to play with gmail all that much. Karan, got in and was fooling around with it and gave me his feedback. Today is the first day I think I did something meaningful with it. What better way to set it up that to forward all my spam mails from my “honeypot” account to gmail. So that is done! Now we will see how good the spam filter is. As of now about 50% if the spam is not getting caught! Also would be an interesting test on what advertisments am I shown based on all the spam I get?

Switching gears to accessibility on Gmail. Someone has done an extensive test on this using a number of browsers, if you care about this check it out.

Here is what I found for the shortcuts from GMail’s help (and I like most of these):

Shortcut Key Definition Action
c Compose Opens the Compose Mail window.
/ Search Puts your cursor in the search box.
k Move to newer conversation Opens or moves your cursor to a more recent conversation. You can hit <Enter> to expand or collapse a conversation.
j Move to older conversation Opens or moves your cursor to the next oldest conversation. You can hit <Enter> to expand or collapse a conversation.
n Next message Moves your cursor to the next message. If the message is closed, you can hit <Enter> to expand it.
p Previous message Moves your cursor to the previous message. If the message is closed, you can hit <Enter> to expand it.
o or <Enter> Open Opens your conversation. Also expands or collapses a message if you are in Conversation View.
u Return to conversation list If you’re in Conversation View, this shortcut will refresh your page and return you to your list of conversations.
y Archive Automatically archives the message or conversation.
x Highlight conversation Automatically checks and highlights a conversation so that you can archive, apply a label, or choose an action from the drop-down menu to apply to that conversation.
s Star a message or conversation Adds or removes a star to a message or conversation. Stars allow you to give a message or conversation a special status. You can use stars in any fashion you’d like — for some, stars serve as a to-do list. For others, stars might represent a reminder or a message that needs to be followed up on later.
! Report spam Marks a message as spam and removes it from your conversation list.
r Reply Reply to the message sender.
a Reply all Reply to all message recipients.
f Forward Forward a message.
<Esc> Escape from input field Removes the cursor from your current input field.

But I gotta admit the 1 GB space certainly is appealing!

Longhorn Refresh

Microsoft is planning on releasing a Longhorn Refresh to geeks like me at WinHEC next month. I am looking forward to that as there are just too many leaks right now. On an average on a machine with a 1gb of mem, I have to reboot on an average every two hours otherwise the memory workingset get way to huge with all the disk thrashing!

More on spyware

After my recent post on spyware, there is an interesting story being run by BBC where 90% of technology managers say that there is some kind of  “spyware” running on their employees PC to track their browsing habits with 29% of those being installed surreptitiously. The interesting number to me was that about 6% of users believed that the machine they use had been infected by such software. So I guess you should stop reading this now and get back to work. 🙂

Porgrammable Logic Controller

ICP DAS USA has a new PLC coming out that is running on Windows CE.NET 4.2 on a Intel Strong ARM CPU. It can run PC based control software developed with higher languages such as c#, and embeded c++. This offers the best of both the worlds – PC and PLC. If you like ladder logic you can use ISaGRAF and TraceMode. It also has a builtin VGA, Ethernet, CompactFlash, USB, Keyb and mouse ports (phew) and can use a regular monitor (or touchscreen) to view its HMI. You can check it out here.

Zachman Framework

I posted an article (click here or on the title) on what the Zachman Framework is all about. I find it so surprising that in today’s world, I came across a whole bunch of people who call themselves as “Architects” who have no idea or clue as to what the Zachman Framework is. I am not trying to be critical towards those people, they are probably very smart and know their stuff, but I figured maybe its a time for a crash course.

Spyware and IE

Today, on one of the computers at home, Meenakshi accidentally installed one of the spy-wares (via a popup – which interestingly was not blocked). This changed the search engine used by IE, installed some toolsbars and opened a whole bunch of popup windows. Also disabled some of the other legit toolbars that were running (MSN, Yahoo, Google, etc.) Anyways, it took me a good 3+ hours to track the bugger down and clean up the whole machine. What a pain and waste of time. But it got me the opportunity to document what I did and hopefully you can benefit from it.

I would like to also point out that an 1+ hours was taken by the two anti-spy-ware software that I use (Adware and Spybot – if you have not heard of them, I highly recommend download and using both of them). Though neither of them cleaned this particular one. :'(

Well how do you find out what is installed? First of all try and find the name of the “thing” running. Right-click on the toolbar and since that toolbar would be checked, you can find out the name. The first and foremost you should do is run your anti-spywares (make sure you update them). If they do find anything I would recommend rebooting your machine ASAP, after cleaning it. If the problem is solved, you got lucky (and you can stop Reading now :)). If not then goto your Add/Remove and see if you find something there that you don’t recognise if you find something uninstall and check if the problem has done. When uninstalling try and find the location of where it was installed and delete that as most uninstall programs keep something lingering (hopefully you are a geek like me and are not required to be told how to this).

If you still have the spyware, then you got more trouble (like I had). Next steps would be to poke in the (dreaded) registry and see what you can find there. To start, run Regedit (Start => Run => regedit.exe). Next goto HKLM\SOFTWARE\Microsoft\Internet Explorer\Toolbar where you would see a list of entries. Now I don’t presume you would know the GUIDs for the toolbars *grin*, so you would need to find everyone and see if they are legit or not. Here is the list of the ones I found in this computer (and what they meant):

  • {2318C2B1-4965-11d4-9B18-009027A5CD4F} – Google
  • {47833539-D0C5-4125-9FA8-0819E2EAAC93} – Acrobat (6)
  • {79FFEBC8-745B-AFDE-82E6-14ACEDC16E19} – This was the CLUPRIT!
  • {8E718888-423F-11D2-876E-00A0C9082467} – Mmedia Radioband
  • {EF99BD32-C1FB-11D2-892F-0090271D4F88} – Yahoo

Well the second one in the list above was the culprit called SLOW.Citydent, and was installed at “C:\Program Files\Settings Book”.

To find the right or wrong guid, you need to search the registry for each of the GUID and traverse it (i.e. that GUID (or CLSID) might point to another one – so keep following the rabbit trail and at the end of it you would see a COM entry (InProc32) that would point to the execuatable (dll/exe) and also a class name (e.g. SLOW.Citydent.1 in my example). Make sure you search for the GUID from the root in Regedit and delete all entries you find – as always be very careful when modifying anything related to the registry.

Also search using the ClassName in addition to the GUID, as you could potentially find entries realted to this also. Before deleteing the hives/keys make sure you find out the path in the InProc to find out where this is installed in the system. In my case this was at C:\Program Files\Settings Book (which would look like C:\progra~1\settin~1 – the 8 characters from the old DOS days). Make sure you go to this directory and inspect all files and folders – once you are found all other COM entries, you can delete all these files and folders.

Also search for the path in addition to the ClassName and GUID as that would ensure you caught all missed spywares.

You also should clear the similar entries from the following hives:

  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Extensions
  • HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Extensions

Lastly, also check for the programs you may not recognise in HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

Make sure you reload regedit after you delete some key as it still would show it in its cache, which is not flushed till its loaded.

So, after a long number of hours I was able to clean the machine. The moral of the story is, be careful, if you don’t trust something, don’t open it or run it, no matter how convincing it might seem no matter how trustworthy the person sending it is. As more applications move to .NET this would be eliminated because of the security features built in the framework (and CAS – code access security), but till then, we all need to use our common sense.

Resource Management in .NET

Here is a very old post I found lying around on my disk by Brian Harry, he was the Product Manager of the CLR team at Microsoft (he might still be, I just don’t know). This is a long and very interesting read on the issue of resource management and the deterministic finalization of .NET. Brian provides the backgorund so most people (who were flaming MS at that time), understand that this is really a hard problem to solve. Happy Reading….

PDC Xaml Demo

This is probably stupid (and old news now), but if you saw the xaml demo during the PDC of Avalon (presented by Don Box I think), here is the code to reproduce that sample. Please note that you would need to change the source tag in the Video class to a path that makes more sense for you.

Also, as always, please use common sense when running this. Don’t flame me if something blows up. 🙂


    Text=”Amit’s First Longhorn App” Visible=”True”
    <!–  The namespace + class name in the codebehind file and the def:Class attribute in the root of this document, must stay identical.  You can change them, but you must keep them in sync. –>
        <Canvas DockPanel.Dock=”Fill”>
    <Video Width=”100%” Height=”100%” Stretch=”Fill” Source=”c:\temp\ChrisA-DonB_300K.wmv” />
    <TransformDecorator Transform=”rotate 30 scale 3 3″ DockPanel.Dock=”Fill”>
        <TextBox ID=”foo” Width=”2in” Height=”20pt”></TextBox>
        <Button Click=”Pushed”>Click Me</Button>

window1.xaml codebehind:

//This is a list of commonly used namespaces for a window.
using System;
using MSAvalon.Windows;
using MSAvalon.Windows.Controls;
using MSAvalon.Windows.Documents;
using MSAvalon.Windows.Navigation;
using MSAvalon.Windows.Shapes;
using MSAvalon.Windows.Data;

namespace LonghornApp1


/// Interaction logic for Window1.xaml

public partial class Window1 : Window

// To use Loaded event put Loaded=”WindowLoaded” attribute in root element of .xaml file.
// private void WindowLoaded(object sender, EventArgs e) {}

void Pushed(object o, ClickEventArgs e)



Avalon Introduction (XAML)

Here are some excerpts from my slide deck on XAML. If you need to see the complete powerpoint, let me know and I can either mail it to you or upload it here.

If you don’t know, XAML is the new Extensible Application markup language that is part of Longhorn. If you have the PDC bits you should be able to run these. I am skipping on most of the details of the controls, probably will post that some other day.

What is XAML?

  • Pronounced as “Zammell”
  • “Extensible Application Markup Language”
  • Declarative Language
  • Elements represented in a .xaml file by tags
  • “XAML” is a collection of class objects that correspond to markup elements

Why use XAML?

  • Combination of both desktop and web worlds to an application.
  • Separation of UI and Implementation.


  • Application object.
  • XAML pages are characteristically dynamic incorporating both procedural code and markup elements

  • All that things you can do with markup can be done with procedural code.

  • XAML applications are managed.

  • Only “pure” XAML pages need not be compiled.

Structure of a XAML File

  • Panels
    • Handles Page Layout

    • Containers for other Elements

  • Controls

    • Handles user interaction
  • Documents
    • Handles document presentation
  • Shapes
    • Handles vector graphic shapes

What are Panels?
Panels control rendering of elements and objects
  • size
  • dimensions
  • position
  • arrangement

Kind of Panels

  • Canvas
    • Area in which child elements can be explicitly positioned
  • DockPanel
    • Area in which child elements can be arranged horizontally or vertically.
  • FlowPanel
    • Used to break, wrap, and align content > length of a line
  • GridPanel
    • Defines a grid area consisting of columns and rows
  • TextPanel
    • Formats, sizes and draws text
    • Supports multiple lines of text and formats

Kind of Controls

  • Chief components of a UI and enable user interaction
  • Control Patterns
    • Simple Controls
    • Content Controls
    • Items Controls
    • Headered Items and Headeres Content
  • Resources


IT Manager Game – Simulation of an IT department

First of all here are the sys. requirements:

  • Macromedia Flash Player 6 r79
  • IE 6 compatible browser with Javascript enabled

The IT manager – overworked and underappreciated. You know the story. Back in school, always the last to be picked for football, but the first one they ran to when they accidentally deleted a homework assignment. Not much has changed since then. But the fact is it takes a special skill set to manage an IT department. As IT manager you need to monitor industry trends and administer mission-critical resources for an entire company. At the same time, you have to manage increasingly tighter budgets – finding ways to do more with less – and possess the people skills to oversee staff and run interference with top decision makers.

The Intel® IT Manager Game tests your entire skill set – people management, resource allocation, strategic analysis and planning. It also tests your courage under fire – can you stand up to the scrutiny of top management along with that of your peers in the industry? Will the decisions you make result in breathtaking profits or devastating losses? Will you enjoy the sweet taste of victory or the bitter agony of defeat? Are you destined for management glory or will you be the kid sitting on the sidelines, waiting for the bell to ring?

Humans are "Failure Machines"

I forget where I read this recently, but it stuck to me. Humans are failure machines, we are not success machines. We fail all the time and almost all the things. And it is only through this “weeding” process we get the feedback for the failures and learn how to correct them and then do better. Well … at least the smart ones learn to how to correct them.