Passion * Technology * Ruthless Competence

Thursday, August 16, 2007

Morning Coffee 111

  • I'm not sure if I should laugh or cry at Nick Malik's definition of politecture. I mean, it's funny so I'm laughing, but it's so true that it makes me want to cry.
  • Don Box comments on retiring the tenets. It's good to see him say "please God tell me we can do better" than CLR interfaces or WSDL.
  • Looks like the P2P APIs are finally getting the managed treatment in .NET FX 3.5. A long time ago, John deVadoss asked me what an enterprise system like CRM might look like if it used a peer-to-peer approach instead of client-server. If I had any free time, I'd prototype one out on this API. (via Mike Taulty)
  • Scott Guthrie goes back to his LINQ to SQL series to tackle Stored Procs and UDFs. Being able to use UDFs inline with LINQ queries is very cool. However, it seems to me that LINQ discourages the use of stored procs. As a developer, I'd rather write LINQ queries than stored procs, if I can. The probably puts me at odds with DBAs who'd rather all DB access be via stored procs they control.
  • Soma writes about new MSBuild enhancements in VS08: multi-targeting and parallel build.
  • I just discovered Vista Battery Saver. Basically, it turns off Aero and Sidebar when you're on battery. I'm traveling to Chicago next week, so we'll see if it has much impact on my battery life. (via Plenty of Code and Larkware)
Posted By Harry Pierson at 11:06 AM Pacific Daylight Time

Tuesday, May 08, 2007

Morning Coffee 75

  • 3D Printing is going to be huge. According to the NYT, we'll be looking at around $1,000 for one within four years. For the impatient, check out Fab@Home and build one right now.
  • It's been a while since I experimented with the P2P stack in Windows, but it looks like it's getting the managed treatment in VS "Orcas".
  • The managed Ruby hits keep on coming. Last week was DLR and IronRuby. This week it's a new drop of Ruby.NET which includes VS integration.
  • Looks like Sun is trying to get back into the Ajax/Flash/Silverlight fray with JavaFX Script. I wrote over a year ago that "In platform portability, Flash has succeeded where Java failed." I can't help but believe JavaFX is too little too late. Also, it's yet another Java technology name that sounds like it's been blatantly copied from MSFT. JDBC, JSP, JDO ... What's next? JINQ? (via TechMeme)
  • Steve Maine has a great series of posts on the new Web Programming Model that's coming in .NET 3.5 and is currently being previewed as part of the BizTalk Services SDK. But it was his Balancing reach and rich post that I found most illuminating. The first version of WCF feels hopelessly bound to the WS-* view of the world, which makes it difficult to incorporate alternative messaging models into the same programming model. I've run into this trying to use SSB with WCF. In the next version, that WCF / WS-* marriage looks like it's getting a little more open. In my current role, I'm not so interested in the web programming model, but I am very interested in how they are integrating these alternative models.
Posted By Harry Pierson at 10:16 AM Pacific Daylight Time

Tuesday, May 11, 2004

The Managed P2P Hit Parade

From the one-less-thing-for-me-to-do department, Chris Dix has created a managed wrapped of the WinXP P2P SDK. He also has several sample apps, including a Scoble-inspired MagicFolder. According to his site, Chris plans to extend his library to support web services (WSE custom channels?) which should be very cool.

It's funny, I used to get really sad when I discovered someone else had built something that I had started building. Especially if, as in this case, theirs was better. Now, I'm just relieved that I can reuse the library without having to build all the surrounding infrastructure. I'm glad I never released my managed P2P wrapper, it would be one more thing for me to kill. Like my HtmlReader stuff. I still get people looking for it even though I killed it a while ago. (Hasn't everyone figured out they should use SGML Reader instead?)

Posted By Harry Pierson at 8:11 PM Pacific Daylight Time

Sunday, February 08, 2004

P2P Blogger

Noah Horton, former teammate who has gone on to become PM in the Peer Networking Group, has started a blog. Of course, with the new aggregated feed of MSDN bloggers, you probably already knew that. However, I am compelled to blog this as Noah is a friend, works in the next building over from me and I've got a special interest in P2P. I'm looking forward to his promised tips and tricks. Subscribed.

Posted By at 10:39 AM Pacific Standard Time

Tuesday, January 06, 2004

P2P in Longhorn

I realized I wasn't going into the office today @ 6am. My wife's school called to let us know school was canceled. Given how hard it has been to get my email all day, I'm guessing I'm not the only one. Since I'm not at work or doing email, I figured I'd mess around with my new Longhorn machine.

I noticed browsing through the samples that Longhorn has a managed P2P API. The PDC build only supports PNRP and identities, which means you can't acually communicate with another machine via P2P (yet), but it's nice to see that it exists.

Posted By at 3:55 PM Pacific Standard Time

Thursday, December 18, 2003

P2P Revisited

So I want to start kicking the P2P SDK around again. However, most of my work to date is on my busted laptop that I am still waiting to get fixed. Rather than reinvent the wheel, I started looking at wrapping two other relevant SDKs: IP Helper and Internet Connection Sharing & Firewall. IP Helper allows access to the network configuration of the local computer (including IPv6 settings). ICS/F allows you to programmatically manage XP's NAT and firewall functionallity (including the IPv6 firewall). Both are relevant to P2P due to the management of IPv6.

I'm not sure why these systems have a custom API instead of just using WMI, but they do. So I'm looking to wrap them either in managed code or WMI (which is then available to managed code via System.Management).

UPDATE: MSFT just published a document about the new Windows Firewall in XP SP2. One of the big new features is the ability to configure the firewall at the global scope., though you can still specify connection settings which override the global settings. SP2 also includes the IPv6 firewall that is a part of the Advanced Networking Pack (which may mean that the P2P infrastructure is baked into SP2). I'm sure this will imply changes to the ICF API.

UPDATE 2: I finally got my laptop back today, and I found my previous P2P work. I hope to kick some code around over the holidays.

Posted By at 7:35 AM Pacific Standard Time

Sunday, August 31, 2003

Links relevant to P2P

My contact on the P2P team just gave me two more important links for the construction of IPv6 based P2P apps. The first is IP Helper, a library included with XP that "enables the retrieval and modification of network configuration settings for the local computer". I had never seen that library before, but it's full of useful methods like GetAdaptersInfo and GetAdaptersAddresses. I want to be able to retrieve the IPv6 address of my NICs directly, so this is the library I need. Anyone out there wrapped it in managed code yet? I was hoping to do this part with WMI, but the IPv6 info doesn't seem to be exposed via WMI.

The other relevant link is the IPv6 Internet Connection Firewall SDK, which "contains all the software required to configure the IPv6 Internet Connection Firewall". I assume that means that I can open relevant ports to enable P2P communication. As I wrote yesterday, the issue I'm having with GraphChat is likely related to the IPv6 Firewall configuration. I'd like to include in my P2P managed library the ability to manage the IPv6 Firewall.

Posted By at 9:10 AM Pacific Daylight Time

Saturday, August 30, 2003

P2P Problems Solved

Someone from the P2P team internally saw my blog and set me a list of commands to execute and send back to him to help troubleshoot my problem. One of those commands was "net start pnrpsvc". Aha! I hadn't realized that the WinXP Adv. Networking Pack installed any services. Turns out it installs four, including the "Peer Name Resolution Protocol" service (i.e. pnrpsvc). What's odd is that now that I've started it manually once, it seems to autostart on demand now. I can resolve addresses, as well as ping the seed server. GraphChat doesn't work yet, but I think that's because the IPv6 firewall only has two ports open by default - PNRP (UDP 3540) and Grouping (TCP 3587). The GraphChat sample uses a dynamically chosen port, which would be blocked.

So now that I'm back on track, I've got the PNRP namespace provider API wrapped in Managed C++. I can register, unregister, resolve and enumerate PNRP clouds from managed code. I've also got a first pass of the Identity Manager API and a skeleton of the Graphing API done. I'll post code when I have a managed GraphChat sample working.

Posted By at 9:57 AM Pacific Daylight Time

Monday, August 11, 2003

More on P2P Problems

I discovered a FAQ for the WinXP Advanced Networking Pack Among other FAQ's (including "What is a F.A.Q.?") are "What is a PNRP seed server?" and "How do I know if I can contact the Microsoft hosted PNRP seed server?". A seed server is a bootstrap for a PNRP "cloud". PNRP is supposed to be serverless, but there has to be some way for the system to be bootstrapped. MSFT runs a seed server at a well known address (well known to the P2P system, since no one told me). To see if you can reach said seed server, you can run "netsh p2p pnrp diag ping seed". If the number is one or greater, all is good. In my case, that command raises Error 0x800706d9: "There are no more endpoints available from the endpoint mapper". I'm not sure what that means, but I'm guessing that explains why I can't resolve PNRP names.
Posted By at 9:55 PM Pacific Daylight Time

Friday, August 08, 2003

Problems with P2P SDK

Has anybody gotten the P2P SDK to work? I've been playing with it, working on ideas for wrapping it in managed code. I've actually got classes wrapping the Identity Manager and PNRP Namespace APIs as well as a start on the Graphing API. Due to the nature of the SDK, I've been writing in Managed C++. While tricky and not as much fun as writing C#, MC++ is pretty cool. Wrapping the P2P SDK with MC++ has been much easier than I expected. Except for one problem - I can't seem to get PNRP to work. Even the GraphChat demo doesn't work for me.

PNRP stands for the Peer Name Resolution Protocol. It is supposed to be a serverless DNS system. It allows me to register a peer name for later look up and resolution. I can register and unregister a peer name and endpoint. It even throws and exception if I attempt unregister without registering first, so something must be happening. But I can't resolve the peer name to an address. And it's not just my code (which is copied near verbatim from the help files), the sample GraphChat app doesn't seem to work either. I'm attempting to register in the default "global" cloud as is the GraphChat sample, but no luck.

Just chatted Scoble on this - since he was so excited when we released it. As a fellow evangelist, he is willing to put me in touch with the powers-that-P2P. However, I'd appreciate hearing any other "war stories" out there.

Posted By at 10:00 PM Pacific Daylight Time

Tuesday, August 05, 2003

Pulling out the Petzold to use the P2P SDK

Lots of people (including me) have pointed out that the WinXP Advanced Networking Pack and P2P SDK have been released. But I haven't seen any code besides the samples. And if you look through the samples, I think you'll see why. I've picked thru the "GraphChat" sample, which is written in raw pre-MFC Petzold-style C. It took a while to isolate the relevant parts of the code from all the windows goo that I thought I had finally seen the end of. I have to go through the code since the docs aren't all that fleshed out yet.

One of the trickier parts is integrating with the new Peer Name Resolution Protocol (PNRP). PNRP is a serverless DNS-esque system (though there is a "global" PNRP server hosted by Microsoft). It's supposed to be independent of the Graphing and Grouping API's, but the GraphChat sample gets the IPv6 address from the created graph in order to register the address with PNRP. Now that I've installed the Adv Net Pack, I have three virtual tunneling psudeo-interfaces. Other than hardcoding, I'm not sure how to get the address of the right tunneling psudeo-interface to register w/o creating a graph.

I'm getting the feeling that I should have started with the Grouping API, rather than the Graphing API. It runs at a higher level of abstraction, so I figured I should learn the underpinnings first. But I bet the Grouping API would have been much easier to understand.

Posted By at 5:47 PM Pacific Daylight Time
DevHawk
World Tour 2008
DevDays 2008

Change Congress
Recent Bookmarks
Tags .NET Framework (2) ADO.NET (5) Agile (7) AJAX (3) Architecture (282) Guidance (6) Interop (2) Modelling (61) Patterns (7) Process (4) SOA (93) Web Services (5) ASP.NET (18) Battlestar Galactica (3) BI (2) BizTalk (4) Blogging (113) dasBlog (11) Podcasting (4) BPM (1) C# (5) C++ (3) Capitals (5) CardSpace (3) CLR (2) College Football (10) Comedy Central (1) Community (81) Concurrency (6) Consumer Electronics (1) Database (12) Dependency Injection (2) Development (115) C Plus Plus (1) Embedded (5) Lanugages (36) Media (2) P2P (11) Rotor (1) SharePoint (6) SOP (3) DIY (1) DLR (8) Domain Specific Languages (13) Durable Messaging (5) Dynamic Languages (9) Dynamic Silverlight (1) Education (3) Enterprise 2.0 (1) Entertainment (14) ETech (15) F# (38) Functional Programming (11) Game Development (2) Guidance Automation (3) Hardware (8) HawkEye (3) Hockey (29) Home Electronics (1) Home Network (4) Humor (5) IASA (1) Idempotence (3) infrastructure (5) Instrumentation (4) Integration (2) IronPython (14) IronRuby (3) Java (2) Job (3) LINQ (19) Lost (1) Master Data Management (1) Media 2.0 (6) Microsoft (27) MIX06 (2) Mobile Phone (1) Morning Coffee (165) Object Oriented (4) Office (5) Open Source (4) Open Space (2) Operations (3) Other (135) Art (1) Books (1) Family (30) Games (17) General Geekery (25) Home Theater (1) Movies (22) Music (20) Politics (3) Society (1) Sports (37) Working at MSFT (15) Parsing Expression Grammar (15) patterns & practices (2) Politics (39) PowerPoint (2) PowerShell (28) Presentation (4) Projects (1) HawkWiki (1) Python (3) Quote of the Day (4) Refactoring (1) Research (2) REST (18) Reuse (5) Robotics (1) Rome (5) Ruby (23) Sci-Fi (2) Scripting (4) Security (3) Service Broker (14) SharePoint (2) Silverlight (15) Social Software (1) Software + Services (2) Software Factories (11) Software Industry (1) Spark (1) SQL Server (2) Stephen Colbert (1) TechEd (7) TechEd06 (1) TechRec League (1) Television (6) Travel (5) Unified Client (1) Unit Testing (3) UX (1) Virtual PC (2) Visual Studio (19) Volta (2) Washington Capitals (33) WCF (31) Web 2.0 (64) Web Services (5) WF (20) Windows Live (21) Xbox (1) Xbox 360 (51) XML (7) XNA (13)
Disclaimer: The information in this weblog is provided "AS IS" with no warranties, and confers no rights. This weblog does not represent the thoughts, intentions, plans or strategies of my employer. It is solely my opinion. Inappropriate comments will be deleted at the authors discretion.