Sam Gentile's Weblog
|
|
Sunday, November 17, 2002 |
|
My good friend John Burkhardt has some good push-back on Joel's latest well-done essay: The Law of Leaky Abstractions. "While I agree with a lot of it, I'm not sure I buy the idea that because an abstraction might have a performance penalty in some cases, its a leaky abstraction. And there certainly are some that seem well cemented by now. For example, how much .asm have you written in the past 5 years? And I don't know anyone who can hand code floating point Pentium assembler better than the compiler. We tried to be sure, but couldn't do any better.. And I hear VS C++ is about to get even better." 11:20:19 AM |
|
|
Saturday, November 16, 2002 |
|
Snow [Hugh's ramblings] Yes! Its been snowing all day up here in NH! 7:05:30 PM |
|
Towards a Quantum Programming Language. (via The Types Forum) [Lambda the Ultimate] 1:38:03 PM |
|
Baby.msi Installation complete, reboot? I'm proud to announce that at 1:07am this morning Christina and my first major release went gold. Claire Elizabeth Whittington was born at 8 pounds even. Mom and baby are both doing fine and are asleep. Dad is sooo sleepy. Guess I've got plenty more of that to look forward to :) What, you thought you were going to get away without having to look at pictures? Jason! In all our emails you could have told me you were expecting-) Conrats! 1:36:48 PM |
|
|
Friday, November 15, 2002 |
|
My work lately led me quite naturally to the seminal book, Generative Programming: Methods, Tools, and Applications. I read most of the book yesterday in one sitting (yikes!) and although I found much of it tough going, I want to share one key insight I got. I have always had a lot of trouble understanding the Smalltalk argument as put forth on places like Wiki when I used to be there and indeed the real advantage of late binding languages. I always viewed the safety of static type checking as a given. Well, in Chapter 6 on Generic Programming, in the area of Overloading and Parametric versus Subtype Polymorphism, is the example that lays it bare before my eyes and makes me see it. Consider writing a function for squaring a number. In pseudo-code, it looks like: sqr(x) return x * x In a dynamically typed language, such as Smalltalk, this pseudo-code code can be typed in almost "as- is": sqr: x ^x * x However, if we want to implement it in a statically typed language; we have to declare the type of x and the return type, for example in C++: intsqr(int x) { return x * x; }
This only works for int types; it is more "special" than the pseudo-code or Smalltak, which understands the message "*", or for any type including the operation "*." In C++, you could have a whole series of squaring functions for different types, but you would eventually come to the solution: a function template: template<class T> T sqr(T x) { return x * x;}Of course, the compiler will automatically generate a concrete function for each parameter type. The interesting thing to note that the sqr() template will work, not only for number types, but for any type providing the operation "*", just as the Smalltalk implementation of sqr(). However, there a difference between these implementations and here's my revelation: The sqr() template is statically type-checked and no run-time errors of the type "operation * are not found" are possible, whereas the Smalltalk version is dynamically type-checked and a runtime error is possible (no suprise there; thats been my main objection to dynamic languages in general). But, on the other hand, the Smalltalk version if more flexible of x is not fixed at compile-time and objects of different types can be passed to sqr:. Wow, thats pretty more powerful and certainly leads to the rapid Refactoring that they have always talked about. This example is also a good one of just taking the proble semantics and "just typing it in."
9:28:31 AM |
|
PocketSOAP 1.4.0 beta 2 available. includes support for HTTP compression and HTTP timeouts on PocketPC [PocketSOAP News] 8:41:09 AM |
|
|
Thursday, November 14, 2002 |
|
I just "found" another of my "lost" Radio stories from last July 1 - Introduction to .NET Com Interop. This is real basic and I have written much deeper stuff since then but it might be of use to people starting out. 9:42:18 PM |
|
John Giudice has started a weblog. John is another Product Manager here at Groove. He is in charge of the Groove Developer Kit and its various tools and utilities. John says:
Cool! I worked with John a lot on the Toolkit. One of the very cool things that I always loved about John is he is one of the very few Product Managers I have ever seen anywhere that gets as dirty in the code as he does. He codes at home too. Cool! 6:32:44 PM |
|
WinForms Auto-Scaling. That cool auto-scaling that WinForms does when moving between system font settings baffled me 'til I sat down to really understand it. [sellsbrothers.com: Windows Developer News] 6:28:35 PM |
|
WinForms Data Validation. A little essay on the WinForms Validating event. [sellsbrothers.com: Windows Developer News] 6:28:17 PM |
|
C# and Java: The Smart Distinctions. Article by Dominik Gruntz from Journal of Object Technology (Nov-Dec 2002 Issue), this article shows some of the subtle difference between C# and Java. [sellsbrothers.com: Windows Developer News] 11:35:41 AM |
|
Distributed Programming Runtime Systems: Inside Rotor "This is a hands-on book that focuses on the internals of a CLI implementation on a UNIX platform" Cool! This morning Google led me to this book. There are several chapters online too. I only had time to glance at them this morning, but looks like good stuff. Check out chapter 3 for a nice overview of the VES. [Managed Space]11:35:15 AM |
|
New telescope provides sharpest view of Sun. A new Swedish telescope has taken the sharpest images to date of the Sun, astronomers... [spacetoday.net] 9:30:37 AM |
|
Writing Secure Code I agree that its quite basic. However, judging from the amount of buffer overruns that are seen in everyday C/C++ code, and the fact that Buffer Overrun checks had to be put into Everett C++, I don't at all agree that many programmers are writing C/C++ write code that doesn't have these problems (or even aware). Heck, to some extent Java and C#/.NET exist for large reasons because of the failure of C/C++ programmers to write good safe code. 9:30:16 AM |
|
|
Wednesday, November 13, 2002 |
|
I'm completly enthralled with Generative Programming right now (witness latest essay), of which AOP, IP and even OOD using STL are subsets. I was happy to learn of the following webpage on orbital.encapsule.com: http://orbital.encapsule.com/go.htm?go=devlinks-generative DESCRIPTION: Generative Programming - Generative programming resources on the web. 3:31:09 PM |
|
Lending more crendece to the theory that only one company is making money selling Java, Pud writes: 2:14:15 PM |
|
Jason has moved his Blog 2:08:42 PM |
|
Microsoft launches corporate IM. Just days after AOL announced its corporate instant messenger solution, Microsoft has announced it will jump in the market and release its own corporate IM system sometime in the first quarter of 2003.... [Lockergnome's Bits and Bytes] 1:52:46 PM |
|
Everett just made my day.... Sam Gentile on the new version of Visual Studio.NET: "Last, but certainly not least, there is now a Form Designer for Managed C++! You will be able to do everything you do with the C# or VB designer. You can visually design forms and work with Managed C++. This obviously opens powerful opportunities to do certain things like Direct/X without Interop penalities and much more. Its very exciting!" [Sam Gentile's Weblog] Damn straight it's exciting. Reading this paragraph just made my day. [StrangeCoding] An important affirmation of the core strengths of C++: "Games are going to be written mostly in C++ for the next umpteen-thousand years. Even if MS comes through with their promise to make managed DirectX run at 98% performance, you won't be seeing C# games on the shelves. You're probably never gonna see any form of CLR running on a console." and now the new features of Managed C++ WinForms: "So I'm back to square one, working with the built-in Dialog Editor that has barely changed in the last 4 versions of Visual Studio -- and that means internal tools create frustration from having a poor UI. But now... a Managed C++ Form designer... rock." 11:25:03 AM |
|
New C# features: whitepaper now available. The whitepaper (a Word file) is now available. And the Demo Files link, previously dead, now works. [sellsbrothers.com: Windows Developer News] 10:07:48 AM |
|
|
Tuesday, November 12, 2002 |
|
I've been trying to stay on top of the hype, rumours, and news being released about the 'next' version of Windows. Just when I think I am getting a handle on it all, this type of news announcement is made: Microsoft to skip Longhorn Server Release [Andrew Law's .NET Radio Weblog] 2:32:14 PM |
|
Power is Useless with Geeks. Traditionally, leadership is conceptualized as a special form of power relationship where leaders have substantial influence over the behaviour of followers and exercise that power for mutual benefit. [read more] [Tony Bowden: Software Engineering] 11:15:02 AM |
|
Leaky Abstractions. Joel has written a great piece on software development abstractions and complexity. [The .NET Guy] 11:14:44 AM |
|
[The Creation of a Constraint-based Programming Language]. I had to paraphrase the title to fit the maximum length, it's really: The Definition and Implementation of a Computer Programming Language Based on Constraints, by Guy L. Steele (thesis) This is a really wonderful piece of writing. What I got out of it was an introduction to constraint-based programming, a gentle tour of growing a language bit by bit, and an amazing demonstration of Lisp techniques for writing interpreters that fit in neatly with their host environment. (And I only read the first half!) That said, it is book-length and the electronic copy is a scan. The result is 20 megabytes and challenging to print - but well worth the effort. [Lambda the Ultimate] 11:14:20 AM |
|
|
Monday, November 11, 2002 |
|
Radio blogger #115946 I'm finally taking a foray into Radio after my friend Peter Drayton told me about it. Lots of my friends are using RSS aggregators these days and I decided to get with the program. Radio seems like a good fit if for no other reason than the jaunty Saguaro logo - plenty of those around my place ;) [Jason Whittington's Radio Weblog] Update: New Home Jason's here! Welcome. 11:23:25 PM |
|
I have just been given a go-ahead (Visual C++.NET only so I won't talk about the rest) since a lot of this has gone public already. The Everett Visual C++.NET features, I feel, are the biggest changes to VC++ since 5.0 and have made me extremely happy. The features break into 4 main areas:
The ANSI/ISO compliance is particularly exciting as Visual C++ finally does Partial Template Specialization, Partial Ordering, Member Template Definitions, and pretty much everything in the standard. Public statements have said 98% compliant. I have not been able to throw any Standard C++ at it that it couldn't compile and handle correctly yet. Very heavy users of advanced Standard C++ features, particuarly templates like Loki, Boost and Blitz now compile 100%! Also, in the unmanaged arena, there have been significant additions for security, paticuarly in the area of buffer overruns. The new /GS flag, when code is recompiled with 71, will catch many buffer overruns. There are also Safe Exceptions which I won't go into here. Also, in the unmanaged area, there have been some outstanding improvements made in the optimizer, particuarly for floating point. The /G7 flag builds code optimized for the P4 and there are major gains. Also the new /arch:[SSE:SSE2] flags let you generate code for the Streaming SIMD and Streaming SIMD Extensions 2 instructions. Last, but certainly not least, there is now a Form Designer for Managed C++! You will be able to do everything you do with the C# or VB designer. You can visually design forms and work with Managed C++. This obviously opens powerful opportunities to do certain things like Direct/X without Interop penalities and much more. Its very exciting! 3:45:10 PM |
|
DM'er Jason Whittington has written a hillarious song on the whole PetShop saga. It so rules-). I can just picture Band on the Runtime doing it now. Sing along.... 2:50:26 PM |
|
I've found another .NET Blogger! -) He even has as his masthead "Another .NET Developer :)" Cool, cool, cool. Welcome Husein and RSS-subscribed! 12:26:54 PM |
|
Now here's a cool gift to AOL-) 12:12:59 PM |
|
The warmth and depth of this community never ceases to amaze me. I was just talking to Tomas down in Columbia, who has posted a very thoughtful reply to my essay), and Ingo at .NET One, (at the same time!) who are both encouraging me to go out on the circuit and speak on COM Interop. Since they asked, and Radio seems to have lost the pointers, here is the Is COM Interop Fundamentlaly Flawed (Parts 1 and 2) story which Radio has once again lost the links to, from last August. There is actually more detail in my slides on my web site. I will be updating this after talking to Don about it and with new insights but for now, Paresh, who worked heavily with me on this area during that period, has an excellent article on what we found in Connection Points in particular and how to write wrappers to fix some of the mess. 10:59:26 AM |
|
Dotfuscator in VS.Net Everett. From Brian: As of today, I am finally allowed to talk publically about what I have been working on for the past six months. Here is the press release and an early article. In all fairness, I had really very little to do with this. Most of my contributions were related to getting Dotfuscator translated into all of the languages that Visual Studio ships in. We turned over our first feature complete version three weeks after I was hired, so most of my stuff won't be seen until a future version. Congratulations to everyone at PreEmptive Solutions for a job well done.[Brian Graf's Weblog] Well, I couldn't say anything either until now (It seems like all the pieces of Everett are going public one by one!). Congrats Brian. 10:38:39 AM |
|
|
Sunday, November 10, 2002 |
|
I want to step away from coding, talking about .NET altogether, and talk about abstraction, domain engineering, generic programming, and design paradigms for a bit. In 1999, I read a book by Jim Coplien, “Multi-Paradigm Design for C++”, which forever changed the way I looked at design paradigms. Lately, while reading Andrei Alexandrescu’s “Modern C++ Design: Generic Programming and Design Patterns Applied”, combined with doing a lot of “Modern C++”, I had several awakenings those shook up things for me even more. For years now, it seems to me, we have had many design “gurus” repeating a mantra “Object Oriented Design good, all other techniques bad”, to the extent that for many developers and designers, that is the only paradigm that they use and even know. Abstraction is one of the key tools for managing the ever-increasing complexity of modern software. As Coplien says, “The common answer to what is abstraction usually has something to do with objects, thereby reflecting the large body of literature and tools that have emerged over the past decade to support object-oriented techniques.” Even more so, frameworks, languages and abstractions like .NET’s BCL and most of Java is only OO based (yes, I had been thinking about this for 2 weeks now, before Microsoft’s vapor announcement of future generic programming features in .NET). Java is touted, rightly or wrongly, as completely OO such that everything must be in a class. NET’s BCL is mostly only OO. Both of these, for the most part, wrap your abstraction and your way of thinking in object-oriented ways. Yes, there are exceptions (no pun intended!), but for the most part, most of the world thinks in objects. Well, that’s goodness, right? After all, it models the real world and builds abstractions much better, right? Well, yes and no. There’s no denying the vast benefits of OO but the key message in these books, and particularly Coplien’s book, is that Object Oriented Design is just one subset of the solution domain and not always appropriate for the problem at hand. {READ MORE...} 3:03:16 AM |
|
|
Tuesday, November 05, 2002 |
|
From the Rotor List: On behalf of the entire Rotor team, I am pleased to announce the 1.0 release of Rotor. This release is available at the usual place http://msdn.microsoft.com/net/sscli. The 1.0 release builds and runs on Windows XP, the FreeBSD operating system, and Mac OS X 10.2. In addition, the release contains many bug fixes, more documentation, new samples and additional test suites. Please download it and let us know what you think. Geoff Shilling Rotor Project 7:38:12 PM |
|
Just entered chat below and right off start getting messages from all sorts of bloggers-) Ethan Brown, Greg, Matt Griffith, Ingo, Simon, Alexis, Jim Don's talking about the overall architecture right now and putting in place all the pieces that other middleware stacks have had, and going for adoption...SOAP Preliminaries: SOAP message format described by envelope is pretty straightforward...In general, SOAP fairly silent about what goes on in body, some to say about header...exists so 3rd parties can augment. SOAP has always had this extensibility mechanism. AS SOAP has evolved more rigor has been applied to headers and thats what we rely heavily on in GXA specs... Two roles Ultimate Reciever and Next (predefined). Drill into WS_ROUTING - gives transport independent way of sending SOAP. HTTP wonderful, until end of time but lot of people want to send over other transports. Tried to abstract away transport details. Yikes! So many messages from bloggers, can't keep track of talk...WS_ROUTING - Action, Id, relatesTo, To, Source Routing in form of Foward and Reverse Paths...We need Intermediaries for things likes firewalls, proxies, may want to smear message over several locations. Another aspect is hard to build IP Router...Idea rebuilding IP Routing in User Mode...Application aware routing...All of specs are layered on SOAP 1.1 and 1.2 not replacement for. Though probably end of line for SOAP in 1.2, if we don't hold constant, pretty hard to get Interop. Move on to WS-Coordination, Released as same time as WS-Tx, so didn't get a lot of attention - bizare to me. The real interesting innovation, unknown stuff in WS-Coordination. 3 people of 75 have read it. WS-c igives us lot of functionality that people expected when moved from classic RPC. Look at Corba, COM. Tended to want to build things that lasted more than one msg - COM+ - Contexts. Want to establish temporal, spatial relationship. Take bunch of messages and make sure the context has an id. Spec is org in most peculair way - two most interesting things in 2 appendicies. Context = collection of messages over time that share at least one property - identifier. May share others. When 2 or more WS are doing work together they may want to establish shared context. Basic Header Type - Context Header Block - Contains at least ID and maybe more info. Header blocks have distinct URIs. WS-C pre-defines a Cordination Context. 2nd thing in Appendix - PortRef - contains bare minimum of address. <CoordinationContext> <Identifier>uri</Identifier> <CoordinationType>uri</CordinationType> <RegistrationService> <Address>http://foo.com/mycoordinator.jsp</Address> <PortReference> <Address>http://www.microsoft.com/foo.asmx</Address> </PortReference> WS-Tx really two specs - Part 1 2 Phase Commit and ACID. Part 2 Business Activities. ACID Txs - no one who worked on spec expected it to be used across trust boundaries. Part 1 exists to allow existing Tx apps to be able to do 2PC in a web context. Never intended to go across web sites and firewalls - across org boundaries. Tried to make that clear in the spec. Don't read Part 1 unless building Tx plumbing - codification of work done last 10-20 years in Tx. Part 2 really long-running transactions. Not strong isolation...No expectation of isolation or stability...BA is much simpler to understand - combine with WS-C an app dev could grok...So don''t wory about ACID, BA more interesting... Reliable Messaging in next couple of months...Lots of plans... Wow, I have to clean this up and get it in a story tonight... 3:33:20 PM |
|
Project Mono Does SQL / Windows / ASP.NET. Project Mono can now execute SQL statements on MS SQL Server through TDS and has a bit of Windows.Forms code running on both Linux and Windows as well as a good deal of ASP.NET support. Looks like things are coming along at a decent rate. [sellsbrothers.com: Windows Developer News] COOL!!!! 2:21:55 PM |
|
WS-Routing, WS-Coordination, and WS-Transaction Just in case you weren't aware...Don Box is scheduled to give a webcast this afternoon, discussing the above web service protocols. Details and free registration are here. [Greg Reinacker's Weblog]1:05:30 PM |
|
Went down and voted this morning. I hope everyone is doing the same. I view it as one of this country's great privileges(among many others). 10:23:04 AM |
|
|
Monday, November 04, 2002 |
|
Another one Bites the Dust. Bryce Yehl has moved from Radio to Movable Type. His new blog is at http://www.ntwizards.net/blog/. Sam has been complaining about Radio a lot lately... I wonder if he's next? [The .NET Guy] Very, very close. In fact, if I weren't aggainst a wall in deliverables, and knew how to do it, I would have done it already. 5:32:35 PM |
|
A New Day. It's great to be back![Brian Graf's Weblog] Its so good to have my friend Brian back! Good show. 11:43:53 AM |
|
Here we go... As we near the initial release of Groove Web Services, we've started speaking more openly [Matt Pope's Radio Weblog] Obviously, this has a big bearing on our Groove Experiments stuff. 11:31:32 AM |
|
Steve Gillmor's column also references Groove Web Services heavily. He mentions the contribution Peter Drayton made to the design of the API. No doubt, the value of enlisting Peter's help has been immeasurable. Thank you Peter! [Matt Pope's Radio Weblog] The single best recomendation I have ever made... 11:30:35 AM |
|
/WSDK Web Service Development Kit dev article. Detailed walkthrough of the WSDK Tech Preview for WS-Security, WS-Routing, and DIME protocols. Provides sample code repackaged for VS .NET, some extensions of sample code for more realistic scenarios, and tips on how to avoid 'InvalidSecurityToken' faults when working with X.509 Certificates. [.netWire Headlines] 9:20:19 AM |
|
Working with Queued Components. The author shows how Queued Components, a .NET Enterprise Server feature that provides an easy and safe way to implement background processing, can be used to increase the performance and reliability of applications that call XML Web services. [.netWire Headlines] 9:19:58 AM |
|
Why you should move to C#. The migration to the .NET platform offers many development choices. This top 10 list explains why C# is an important offering and why you should consider moving to C#. [.netWire Headlines] I haev been doing a lot of stuff with C++ lately and don't agree with all of this but here it is anyhow. 9:17:50 AM |
|
Ticket to ride. 9:30pm Sunday @ Gate 89, Terminal 3, San Francisco International. I'm sitting here with a one-way ticket to Seattle. One-way. Wow. Seems slightly unreal... [Peter Drayton's Radio Weblog] He's off. I got an email last night too. Good luck Peter. I'm sure you will have a lot of fun as well as making a big impact. 9:14:48 AM |
|
|
Saturday, November 02, 2002 |
|
I first got notice of LSW DotNet Reflection-Browser Release 1.0 from the Dotnet-Products mailing list. I asked how if it was was different than Lutz's free and most essential kick-ass tool Reflector (whoo, just noticed new version there 2.7.1.0), Highlights
The differences I got from the company: it differs much.
Built in decompiler and disassembler.
totally different code-navigation possibilities ( Callers / Callees / Implementers / Type References / Assembly References / Event Handler, Field & Property references )
Navigation-History, Type-Filters and member Filters.#
It allows to browse code in the Smalltalk way. Download here7:54:21 AM |
|
|
Friday, November 01, 2002 |
|
Slashdot has links to the not-yet-released Microsoft decision. Here's the directory on the US Courts website. Yes! Sanity reigns in the world re the Microsoft decision. "In brief: Kollar-Kotelly accepts the settlement that the Federal Gov't and some states wanted, but she wants a minor change to it; and she has decided the case which was pursued by the other states as well, mostly ordering Microsoft to refrain from certain behaviors with regard to the user-visible desktop. Overall: a massive win for Microsoft, who can restrict the release of its APIs to major commercial companies only. " The official opinion is here 5:33:05 PM |
|
DevConnections. [IUnknown.com: John Lam's Weblog on Software Development] 2:25:11 PM |
|
Q317129 - PRB: The Common Language Runtime Does Not Support Type 'internal virtual' Methods
Apparently not. Eric Gunnerson [DOTNET-CX]: [Adrian Bateman (VisionTech)] 2:21:42 PM |
|
Are there any Groove tools that would let me keep track of what I did hour by hour in a day? Example: for contracting 12:26:42 PM |
|
Microsoft's Weblog Software. Magazine:Microsoft has created a weblog tool that is designed to run inside the firewall at a company. It's browser-accessible from... [Hugh's ramblings] "Heh! (I'm not sure this isn't just a lucky coincidence - I'm working on the product and haven't had that discussion with other people here; it only very recently occurred to me how good a weblogging tool we're building)" Heh, that didn't escape all of us-) Also concides with our directions in Groove Experiments...There is a synergy there for sure. 10:46:01 AM |
|
I was wondering what happened to Chris (Kinsman) 10:33:59 AM |
|
Eiffel for .NET: An Introduction 9:18:20 AM |
|
When less is more. "My flight to Orlando, FL earlier this week took me through NYC and inspired an epiphany; this entry describes that epiphany.Over the past week or so, I've been spending a lot of time thinking about code generation. Michael Lenaghan, who has been one of my most important mentors since we met in 1995, recently got me thinking about code generation. Chris Sells, who actually created a code generation product, was unable to convince me of the importance of code generation. Why did one of my friends succeed where the other failed?".... Personally, I'm very excited about the prospects of using code generation in the software that I create. It is a new and extremely powerful tool in my toolbox. Hopefully this article will inspire you to think about adding code generation to your toolbox. But don't just believe me, read this article next. [IUnknown.com: John Lam's Weblog on Software Development]8:31:15 AM |
|
A Simple NUnit Set in Visual Studio.NET [StronglyTyped - Richard Caetano's weblog on software development] 8:28:54 AM |
|
Earthquake in Italy Kills at Least 20 Children. At least 20 children were killed when an earthquake in southern Italy on Thursday caused the sudden collapse of a nursery and elementary school. By Frank Bruni. [Headlines From The NY Times] 8:23:30 AM |
|
Strong Names Considered Dangerous. Keith Brown poses (yet another) interesting question on DOTNET-CLR this week:
[John Bristowe's Radio Weblog] I have been too busy to follow all of the details of this as I saw it but this is a very interesting issue that I will track this weekend. 8:22:56 AM |