Thinking In .NET

Pre-order Thinking in C# now!

Source code for Thinking in C#

Free C# Compilers

Personal Homepage

Thinking In .NET

A place to learn about C# and the .NET platform, by Larry O'Brien. But mostly the obligatory braindump cross-linking that characterizes the blogsphere.

To receive an occasional announcement message regarding my seminars or publications, please subscribe to my mailing list.

Email:

Wednesday, October 30, 2002

Palm OS 6 to be based on BeOS and .NET compatible? It's from The Register, so take it with a grain of salt.
4:18:14 PM    comment []

The consistently excellent Dino Exposito has a nice introduction to .NET Remoting. Unfortunately its in VB.NET but he's a great writer and teacher and it looks good. [Sam Gentile's Weblog]
1:25:37 PM    comment []

Hacker license plate gallery. Great gallery of nerdy license plates. Link Discuss (Thanks, Jeff!)
[
Boing Boing Blog] Fun. The last time I was as broke as I am now (wait... let me count... no, the third-to-last time I was as broke as I am now... God, I'm terrible at making a living... anyhow...) I was going to get "HPP CPP" and then the last time I was as broke as I am now I was going to get "NACL H2O". I guess when I'm productively employed, I'm far too busy to think up clever vanity plates.
1:12:03 PM    comment []

Not only can you download Ecco, you can download Agenda! Agenda was one of the best DOS programs ever. Like Ecco, it was a Personal Information Manager. If you ask "Like Outlook?" the answer is "No! Nothing like Outlook!" As far as I know, Outlook does nothing to relate items from disparate sources. With Agenda, if you jot down "Meet Alan for lunch Tuesday" it will link up to your contact list and calendar -- it was wonderful for managing complex to do lists. Zoe and Chandler make me suspect that personal information management is reemerging as the most likely ground from which the next killer app will emerge...


12:59:28 PM    comment []

O'Reilly has announced OnDotNet. At first glance it apeared to be a renaming of the .NET Dev Center until I found Scott's editorial: "The goal of ONDotnet.com is to create a destination for the .NET community by ensuring content that is immediately applicable to working and weekend-warrior developers, while not ignoring the future of .NET and all of its related technologies (e.g. Web Services, GXA, XQuery, etc.)." Having Scott as the editor is fantastic. Scott has been in the trenches for years and as the ADO Guy has been dispensing valuable knowledge for years. Congrats!
[
Sam Gentile's Weblog]
12:41:34 PM    comment []

Unit tests. There's nothing like doing drastic refactoring to the implementation of a class when you trust the unit tests to be solid. It's so much easier. [Jon Shute's WeblogYes!! That's the key. [Sam Gentile's Weblog] The thing is, "unit testing" is almost a misnomer for what's going on; an xUnit test is as much about expressing requirements as it is about reflecting the inherent capabilities of the software module. For instance, let's say you had a method string Foo(string input); from a strictly "testing inherent capabilities" standpoint, you'd test this by sending it a null, a string a single character long, super-huge buffer-overflowing strings, etc. But from an xUnit standpoint, your first test might be testing that if sent "cow" it returns "woc" and your second might be that if you send it "Cow" it returns "woc" So, in this case, the xUnit tests are expressing, concretely, that the Foo method means "return the string reversed and converted to lowercase." When you have tons of such things and "you trust them to be solid" what you're saying is not so much "This dramatic refactoring does not change the inherent capabilities of the 500 software modules comprising it" as "This dramatic refactoring does not change the value delivered to the client." And that is a very good feeling to have. (Earlier this year, I refactored a template method and it affected every single response the system produced. I did it and integrated it in a single long day. I would have been absolutely paralyzed by doubt had I not had a solid xUnit suite.)
12:40:30 PM    comment []

IBM CEO stakes $10 billion on 'on-demand' future. Palmisano says next wave of connected computing worth betting on [InfoWorld: Top News] I can't find the whitepaper referenced in the article, but I think that what they're talking about is what elsewhere on the site they call "autonomic computing" along with for-rent grid computing. If anyone knows for sure, drop a comment.
12:27:02 PM    comment []

Little kittycats wearing viking outfits sing Zeppelin. Not that I'm avoiding work today or anything.
12:12:33 PM    comment []

Privatized schools sell off textbooks, force students to engage in unpaid labor.  [Boing Boing Blog] "Dear parents, Congratulations! Your child's exceptional academic performance has qualified him or her from the vocational soccer-ball sewing track and into our advanced placement sneaker-assembly track." Oh, I'm so happy that iMind collapsed before we did such things.
12:07:18 PM    comment []

A cool utility in TweakUI for XP allows you to add "search prefixes" to Internet Explorer. For instance, if you add http://www.google.com/search?q=%s you can say "google foo" or if you add http://www.dictionary.com/search?q=%s you can say "define cow".


11:58:57 AM    comment []

Borland gets TogetherSoft for $185 million. The software maker says acquiring TogetherSoft will help Borland bolster its programming tools lineup. [CNET News.com]

Well, this is interesting. TogetherSoft has never been the best CASE tool, while JBuilder has traditionally been the best Java-based IDE. Will TogetherSoft bring down the quality of JBuilder or will JBuilder bring up the quality of TogetherJ?

Borland's strategy re .NET is not yet clear. Borland has the tricky job of straddling what are now four platforms: native Linux apps with Kylix, Java applications with JBuilder / TogetherJ, native Intel with C++ Builder, and .NET.  Mind you, each of these platforms involves a different library. If it were just code generation, I could see the company going down the "platform neutral" path, but the effort involved in going forward with library compatibility in so many disparate areas while still allocating sufficient resources to the primary task of improving the IDE and programming experience seems impossible.

Ramifications: Will Rational cede the integrated Java CASE market and move into an even tighter emphasis on .NET?


11:05:52 AM    comment []

Smart guy joins Microsoft, film at 11.

Peter Drayton, who's written some of the better stuff about REST and SOAP has taken a job at Microsoft as a Program Manager in the Common Language Runtime group. Reading the job description, which Peter called his "dream job" in a blog entry at the time, reveals a fundamental strength in Microsoft's approach to advancing the .NET platform.

Microsoft will make available "resources for a technology transfer team that can help move features that have proven useful to the research community and internal compiler teams into [the CLR]." Technology transfer is a huge (or, at least, significant) problem in Computer Science. Take concurrent programming, which is currently in the same place that memory management was a decade ago: popularly thought to be a fundamental challenge. If you asked the average programmer in 1992 about garbage collection, they would have confidently stated that GC involved the freezing of all memory manipulation, couldn't deal with cycles, etc. But if you asked people in the small commercial LISP business, they'd assert that GC was essentially a solved problem. (In 1992, I was simultaneously editor of Computer Language and AI Expert magazines and GC was the subject of many conversations.)

The release of Java in 1995 ended the debate about garbage collection, not by making any fundamental contribution to the state-of-the-art, but by transferring an academically known solution into a generally-useful language. No one wrote their PhD thesis on Java's GC and no LISP hacker was surprised to find out that productivity increased, but the general programming community was astonished.

So it used to be that "memory management is fundamentally difficult" was the shibboleth; nowadays, it's "multithreaded programming is fundamentally difficult." And, to be sure, the concurrent programming model (note the singular!) exposed by Java and .NET does make it easy to deadlock and race and all that bad stuff. Meanwhile, there are academics who would say that multithreaded programming is, perhaps not "solved," but certainly made much easier by such things as Communicating Sequential Processes (Google search or the original paper here) or the Calculus of Communicating Systems (Google search).

But even very useful programming models do not transfer into the general programming community as long as they are only external and optionally layered on top of an existing, available, and visible inferior model. There were garbage collectors for C and C++, but it took an infrastructure change to transfer an acceptance of GC into the general programming community. Similarly, there are libraries for CSP for Java, but no one's heard of them. And improving the infrastructure of concurrent programming in Java doesn't make money for anyone, so instead of getting a fundamental advance, you get the very top-heavy EJB solution and the JCP process.

Compare that to Microsoft's model, which is to give someone the job of finding and facilitating the transfer of useful technologies into the infrastructure of the .NET platform. CSP is well-thought-out at a formal level, but is it generally useful and accessible to, say, a person coming from a Visual Basic background? (As opposed to, say, Z Notation, which is well-thought-out at a formal level, but would not make most programmers more productive.) The questions of general useability and accessibility are not of interest to academics but are, of course, the most important questions at a practical level. In Thinking in C# (you didn't think I'd write this much without a plug did you? Why don't you pre-order it now?), I say ".NET�s value proposition of 'Any language, one platform,' makes it fertile ground for new approaches to programming. Additionally, the .NET Framework Library contains classes beyond the scope of this book for emitting code, dynamic compilation, and programmatic type extension; .NET is potentially the most significant contribution to the development of new computer languages in 25 years. That would be nice; the rise of object-oriented imperative languages has had important benefits (the patterns movement could not have happened without the widespread adoption of the vocabulary of objects) but there has been a loss of awareness of the diversity and potential of alternate paradigms. Aspect-orientation, declarative, functional, and data-flow programming all have things to offer us today, and these are just some obvious areas. Hopefully, the commercial use of .NET will not blind visionaries to the value of the .NET infrastructure for research and development of programming technology. "

This role and its being filled by Peter, known smart guy, makes it all the more likely that the .NET platform will be increasingly superior to alternatives over time.


9:32:12 AM    comment []


The contents of these pages represent the opinions of one person.
All contents © 2002 Larry O'Brien. All Rights Reserved.

 

October 2002
Sun Mon Tue Wed Thu Fri Sat
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    
Sep   Nov


Click here to visit the Radio UserLand website.

Subscribe to "Thinking In .NET" in Radio UserLand.

Click to see the XML version of this web page.

Click here to send an email to the editor of this weblog.