|
|
I have come across Developers and System Engineers who have trouble with networking time and again. The principle reason I have observed is a lack of thorough understanding of the underlying TCP/IP layer. Most engineers assume that if they know what is an IP Address, Subnet and DHCP they know networking. How wrong can they be?. This gets more complicated with the introduction of IPv6, Security and Performance features newly introduced in Windows Vista and Windows Server 2008.
Till now the hurdle in solving this was availability of easily accessible and digestible materials on the subject. Today thanks to one of my fellow MVPs who pointed me to this resource from Microsoft – a free book on “TCP/IP Fundamentals for Windows“. It is available both for online viewing and downloadable as a PDF file. Don’t let the 559 page count scare you, the book is easily readable with some effort. I highly recommend downloading the PDF file and saving – it will be a worthy reference.
Last few days I had a firewall issue in my desktop that made web browsing irregular. It was a peculiar problem, I was able to browse few sites like Google, Vishwak.COM but not others. I had to keep running the same diagnostic commands many times to take values to be sent to my support team. Finally I ended up writing this handy tool that copies to clipboard diagnostic informations from IPConfig, Tracert, Ping & WebGet commands. This information can be used for further investigation or email to support. I also added features to FlushDNS, Renew IP & Turn Auto Tuning (Vista and Windows Server 2008) OFF/ON.

While developing the tool over two half-a-days I learnt quite a few APIs and a bit of C# coding. This included how to call a console command like IPCONFIG /ALL and capture the output to a string from a C# application, get the Internet Explorer Proxy settings, Call Network Properties applet, create an install with VS 2008 & how to paste a code snippet in WLW.
1: private string DoConsoleAndCapture(string sInput)
2: {
3:
4: string sOutput = "";
5: ProcessStartInfo pi = new ProcessStartInfo("cmd.exe", "/c " + sInput );
6: pi.WindowStyle = ProcessWindowStyle.Minimized;
7: pi.RedirectStandardOutput = true;
8: pi.UseShellExecute = false;
9: Process p = Process.Start(pi);
10: p.WaitForExit();
11: //p.Start();
12: TextReader t = p.StandardOutput;
13: sOutput = t.ReadToEnd();
14: t.Close();
15: p.Close();
16:
17: return sOutput;
18: }
The experience of using Visual Studio 2008 was interesting as it has been few years since I coded something end to end. I wish the coding surface to become more intelligent in terms of offering help on discovering commands and APIs that the developer is looking for. When VB6 came a decade or so back the help feature that it had was revolutionary and the wealth of information MSDN provided was without par in the industry. Now with Web & Internet Search prevalent the present IDE calls for a complete rethinking and revamp – unfortunately I don’t feel the tools have come there yet. What I am talking here is not about wizards, smart tags or even intellisense but about how the tool helps a developer to learn/discover necessary APIs/solve the problem at hand.
MVP Award for the year 2008 |
 MVP Award for the year 2007 |
I have been a Microsoft Regional Director (RD) from 1999 and I am happy to write here that Microsoft has renewed me as an RD for another two years. The RD program is a honorary title conferred to select professionals around the world who are passionate on Microsoft technologies. Over 140 software architects, developers, trainers and other professionals are selected by Microsoft as Regional Directors. The first thing to know is that, while we’re officially recognized by Microsoft and often receive inside information about forthcoming technologies, we are completely independent. We are not Microsoft employees.
Apart from being a RD, last year (2007) I was named as a Microsoft Most Valuable Professional (MVP) as well. I was given MVP in the category of Visual Developer – Solutions Architect. Recently, I was renewed as a MVP for this year as well. This entitles apart from other benefits, membership to a very lively exclusive email alias participated by all MVPs. You can check out my MVP Profile here.
Microsoft recently announced their new virtualization technology “Hyper-V” (codename Viridian) as part of Windows Server 2008 that will replace Microsoft Virtual Server 2005. I wanted to understand the differences between the two virtualization products and how to use Hyper-V. In my search, I came up with the following list of references and understandings.
Rough Technology differences between Hyper-V and earlier products: One way to think about these new chip technologies is that they introduce a “-1” ring essentially to the usual four rings in the x86 CPU architecture. With the VPC and Virtual Server offerings, they use a trick called ring compression where the kernel of the VM is placed into Ring 1, instead of the expected Ring 0. This is so that the host can absolutely ensure that VMs are running in their own sandbox and can’t gain access to any resources of the host or other VMs. There is something like 14-17 CPU instructions in the x86 instruction set that can’t be executed directly because of sandbox violation. Hence, the need to place the child VM’s kernel into Ring 1 so that the host can place itself in Ring 0 to intercept those calls to protect them directly or to emulate them. By introducing a “-1” ring, the hypervisor lives here and controls the access to the various virtual machines. So, with the introduction of a hypervisor living in ring -1, the need for ring compression of child VMs is essentially removed. At least, this is one way to think about. They hypervisor itself is not a complete OS, per se. The hypervisor is a VERY thin and small, trusted computing base.
Technical References:
VM Additions for Linux
Earlier Microsoft Virtual PC and Microsoft Virtual Server 2005 didn’t have VM Additions for Linux, recently Microsoft released fully supported VM Additions for Linux (Download from here).
I was in lookout today for a small footprint / compact / embedded database engines suitable for .NET applications (mainly web) and found the following candidates. This is just a list compiled from the Internet.
- Microsoft Access (JET Engine) – Very Popular from Windows 3.1 days due to the fact it is out-of-box in most versions of Windows OS.
- Microsoft SQL Server 2005 Express – The plus here is that it is easy to upgrade to full-fledged SQL Server as Express edition uses the same file format and is binary compatible. Also ships with a free management tool “SQL Server Management Studio”
- Microsoft SQL Server 3.5 Compact – Can be embedded easily with less than 2MB in distribution size. Works with Windows Mobile as well.
- SQLite – A free / no license extremely lightweight Database engine which is less than 250KB in distribution size. There is no server process that needs to be started, stopped, or configured here. A detailed article here.
- VistaDB – Quite popular, 3rd party, commercial Database Engine that can be easily embedded. Written in NET Managed Code.
In the above list, other than VistaDB all the other are free (as in free beer) to deploy/distribute.
My everyday work laptop is a lightweight Sony Vaio TX57GN around 1.25Kg, having a Core Solo CPU, 1.5GB RAM, 4200RPM HDD, Vista its speed is sub-optimal and I can only use it for email and browsing. Even then I am not complaining and actually I love it especially on my travels. This changes when I have to do demos (customer presentations or Microsoft events) I got to run multiple virtual machines and at that time CPU muscle, RAM and Speed are crucial. So few months back I decided to buy a second laptop for demos alone and eventually settled down on Dell Vostro 1400. That was the time (August ’07) Dell had introduced Vostro series in USA, the price of USD 1740 (with taxes) for the configuration was attractive so I immediately purchased it and got it through one of my colleagues coming to India.
Dell Vostro 1400 configuration
- Vostro 1400, Intel Core 2 Duo T5470, 1.6GHz, 800Mhz FSB 2M L2 Cache
- 14.1 inch Wide Screen XGA LCD
- 4GB, DDR2, 667MHz
- Mobile Intel 965 Express Chipset
- Intel Integrated Graphics Media Accelerator X3100
- 160GB 7200RPM SATA Hard Drive
- Windows Vista Business
- 24X COMBO CD-RW/DVD for Vostro
- Dell Wireless 1390 802.11g
- Warranty Support, 2 Year Extended
The laptop scores good on Vista Benchmarks and performs well with multiple VPCs and Vista Aero interface. Dell shipped the laptop (strangely) with Vista 32Bit OS, so it showed only 3.5GB of RAM. This week I decided to upgrade the machine to Vista x64, so I got it formatted and installed Vista Ultimate x64. Now the laptop shows 4GB RAM, but most of the devices (as expected) were not installed with drivers. Luckily Wi-Fi worked and after running Windows Update which download 150MB of 42+ updates and a reboot, most of the devices including Graphics card got installed. The Ethernet card proved tricky with no drivers available either from Microsoft’s Windows Update or from Dell support site. Dell doesn’t provide drivers for Windows x64 OS for any of the devices in their Vostro series Laptop. After some searching I found the driver from Broadcom’s support site for the LAN card and now everything is working fine.
Download Vista x64 Ethernet Driver for Dell Vostro 1400 laptop from here.
I came across these two references today.
One was Web Browser Standards Summary that summarizes the level of support for web standards and maturing technologies in popular web browsers. It covers the Internet Explorer, Firefox, and Opera web browsers, with focus on the HTML, CSS, DOM, and ECMAScript technologies.
Second one is the Audio interview with Chris Wilson, the Platform Architect for Internet Explorer at Microsoft. “Chris has been building web browsers for as long as there have been web browsers, and it was a pleasure to sit down with him at the end of the final day of the conference. In his talk at the conference, Moving the Web Forward, Chris gave the audience a glimpse into the realities of developing the most popular web browser in the world. With over 500,000,000 users to answer to, the words Don’t break the Web have become an overriding mantra for the company in its work to develop the next version of Internet Explorer (currently known as IE.Next)”.
Microsoft announced recently a new Sync Framework. This is a CTP release that is targeted for release in Q2 2008 and it supports P2P and Online/Offline synchronization of data. Currently though customers require Outlook like Offline/Online Sync scenario, it means developers doing custom coding. The Sync Framework is claimed to support P2P sync of any type of file including contacts, music, videos, images and settings. And has built-in support for synchronizing relational databases, NTFS/FAT file systems, Simple Sharing Extensions for RSS/ATOM, devices and web services.
I welcome having a standard framework for doing this repetitive job, it also removes the complexity of handling multiple connection types, scenarios, fail over, retry, etc. Download CTP from here.

If you are a web developer you might be familiar with the great free tool – Firebug. Firebug is an add-on for Mozilla Firefox that allows you to easily inspect the HTML DOM/CSS for a page, edit them inplace and many other useful tricks. Recently I came across another useful tool YSlow -which is an addon to Firebug. YSlow is from Yahoo! which analyzes web pages and tells you why they’re slow based on the rules for high performance web sites. Check them out!

Thanks to Scott Hanselman (my fellow RD) for this post where he had pointed to a four part series by Microsoft’s Michael Kaplan on this topic. MichKa’s post talks in detail with sample code on how you can embed fonts in a Windows Forms Application and have it run in any target machine where that font is not available & doesn’t get installed permanently. Please note that I am talking about Windows Client Applications here and not a Web Application where you can use WEFT (Microsoft’s IE only option for embedded font) or sIFR (Flash based technique) to embed fonts.
Part 1 – Basics of Font Embedding
Part 2 – Getting the Font you’re going to embed
Part 3 – Loading the Embedded Font
Part 4 – Embedded Font Licensing and DPI
I found the part of creating a font from a file, loading and using dynamically very interesting. It opens interesting possibilities especially for Indic Language applications.
|