Personal Homepage

My resume


Are you doing cool stuff? If so, you need to communicate how cool it is, with demo apps, exciting examples, articles, talks, and seminars. I love to bring the best new technologies into the public eye. I'm especially a fan of innovative programming tools and mobility software (Tablet PC, SmartPhone, and .NET Compact Framework). Contact me: Click here to send an email to larry.



Free .NET Tools

Knowing .NET

Code, industry analysis, and miscellaneous cross-links from Larry O'Brien, the former editor of Computer Language and Software Development magazines.

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

Email:

Monday, March 22, 2004


I don't get screen. I've never used it. Can someone explain why it's cool?
9:02:24 PM    comment []   trackback []

Since "Thinking in C#" is now officially dead, I'm phasing out thinkingin.net, please resubscribe to my blog at http://www.knowing.net/rss.xml

 


5:10:37 PM    comment []   trackback []

Michael Flanakin reacted to  of my SDTimes article on the (relative) failure of dynamic languages within .NET with an interesting proposal: Perhaps every namespace could have a default "utility" class that hides OO complexity. There's even a tiny bit of a precedent in that .NET attributes named SomeAttribute are exposed as Some (with the ...Attribute part of the name hidden away). Similarly, static methods within MyNamespaceUtil would be accessible within MyNamespace without requiring a type-reference.

Hmmm.... As a guy who likes not only object-orientation but strong-typing it's hard for me to assess the attractiveness of this suggestion to the power-users / sysadmins / hackers (in the good sense!) who find the BCL too much of a burden. My thoroughly subjective reaction is that I don't like naming conventions with semantic meanings (and, yes, that means I've never really liked "getX" and "setX"). Thoughts?


5:00:05 PM    comment []   trackback []

In a comment on a previous post, Alex Peake warns that in searching for what Jaron Lanier calls "biomimetic" programming metaphors, "we must be careful not to fall into the trap of early flight pioneers - that of trying to emulate birds (too closely) in order to build a flying machine. Flapping wings was NOT the algorithm. "

Point taken. The solution hardly lies in creating a two-stranded, base-4 genotype that's transcribed into an intermediate form, which in turn create self-assembling components from a small number of basic building blocks, etc....

What I'm much more interested in is finding powerful abstractions, and whether they disguise the fact that one is programming or not is, to me, irrelevant. Look at the spreadsheet as the great example: whether you label a spreadsheet as a programming language or not, it is one, an immensely powerful one that is better for many, many purposes than the text-based ones that are mostly associated with the word "programming language."

A programming tool / language for evolutionary computation would have built-in constructs for parallelizing runs of populations, monitoring the increase in fitness over time, monitoring the entropy of the genome, choosing among selection strategies, and would have tools for facilitating the encoding strategy (the key and decidedly non-trivial task).

Alex advocates sticking to a particular domain, and that may be wise. But on the other hand, surely most digital "tools for building tools" would do well to keep the door open to complete programmatic control?


3:24:45 PM    comment []   trackback []

Quick links for a dictionary of algorithms and data structures and a book on exact string matching algorithms. (via HotLinks) More bedtime reading ;-)... via [Curiosity is bliss]

Definitely a data-structure theme going on here lately...


1:42:29 PM    comment []   trackback []

In my continuing quest to install XP-64 on my Athlon laptop, I just tried Virtual PC 2004. I get the message "Attempting to load an X86-64 operating system, however this CPU is not compatible with X86-64 mode." which is misleading at best. There aren't any obvious settings I can change. Anyone know if there's some obscure command-line switch I'm supposed to use?

Meanwhile, I know that my old VMWare Workstation version doesn't support 64-bit OSs, so that's out, too.


12:49:24 PM    comment []   trackback []

As much as I love writing code, I realized long ago that it's really the act of bending my computer to my will that I really love. Programming's just the only way to really do that. After a few decades, you'd have thought we'd have come up with something better. Our industry's pioneers agree that programming is holding us back, but don't really know what we'll use to replace it. Ideas? via [Marquee de Sells: Chris's insight outlet]

For all that Jaron Lanier was the huckster for the egregious over-hyping of "virtual reality" in the early 90s, he's on to something by saying that the extreme specificity needed for software components to interact is a bottleneck. In nature, there are some species (rats, humans, weeds) that are very adaptable -- we prefer conditions like X, but we can adapt to things that aren't too radically different from X. There are other species (corals, rainforest flowers) that are very highly tuned to specific conditions, but can't adapt.
 
Right now, our only choice is software that's like the latter. I can conceive of software that's more like the former: if you have an automated  suite of tests, it's conceivable to create software that explores a solution space broader than what a programmer could. For instance, we now have ample spam/ham concordances. A genetic algorithm generating regular expressions might very well be a fruitful avenue for exploration. The programmer writing the genetic program wouldn't be responsible for writing and evolving the spam-detecting program, the programmer would be writing the program that writes the programs, one of which solves the problem. (Does that make sense?)
 
There is no "programming language" to help the human programmer write the genetic program ("Beginners All-purpose Genetic Engineering Language"?). Whether there are enough problems that are amenable to computer search and optimization and whether there are appropriate evolutionary abstractions that can be composed in the average programmer's mind, I dunno'.

12:11:12 PM    comment []   trackback []

Are you part of an ISV that's been thinking about creating a new product for the Tablet PC or enabling ink in your Tablet PC application? Then check this out. As WhatIsNew reports, Microsoft is launching today a new Tablet PC developer contest that goes beyond any of the other contests. We're talking real money here--$100,000 for the grand prize. via [Incremental Blogger]

Holy Inkstain! Okay, I entered my Outlook plug-in that gives you ink email without using Word in the previous $15K powertoy contest, but $100K for an ink-enabled application? That's worth serious time. Dang -- the contest is too short to win with a "Hey, kids, let's put on a show," application (too bad, I've got two viable apps that just need slicker implementation than I can afford to develop on my own). Anyone need an experienced ink programmer to put them over the top in winning the prize?


11:45:45 AM    comment []   trackback []

Speaking of MSDN, here's an article on Profile-Guided Optimization, which they claim often delivers a 20% performance boost for the price of a couple instrumented runs.
11:18:40 AM    comment []   trackback []

Scott Mitchell's MSDN series on data structures is quite good. His latest, on graphs, is a must-read for those who lament the end of "design the data-structures first."
11:13:36 AM    comment []   trackback []

MapPoint Web Service Special Offer
MSDN® Universal, Enterprise, and Professional subscribers in North America, Europe, the Middle East, or Africa are eligible for a free subscription to MapPoint Web Service. This exclusive MSDN Developer account extends the standard 45-day free trial period and also includes limited use of the MapPoint Web Service production environment in addition to the MapPoint Web Service staging environment. This is a one-time offer available to eligible MSDN subscribers at no charge. Sign up today.

This is pretty sweet.  One of the problems with the MapPoint Web Service has been no instant gratification (sign up and wait 2 days to get approved).  This does a lot to solve that. via [Early Adopter Weblog]

I believe that mobile software (cell phones, TabletPC, PDAs) is this decade's great opportunity for entrepreneurs. Location awareness is an enormously important enabling technology. MapPoint Web Services, and MapPoint Location Server (announced today), are Microsoft's infrastructure push in this area. Sprint is the only carrier that's announced a partnership with MLS so far (in the U.S.: in Canada, Bell Mobility supports it), but if Microsoft can partner with several carriers and MLS becomes something that can "just be assumed" then it opens the floodgate.


10:25:02 AM    comment []   trackback []

I have a brand-new emachines M6805 laptop, perfectly stock, onto which I am trying to install Windows XP-64. I have spoken with colleagues who have the exact same model, exact same bios revision, for whom the install of the exact same build goes perfectly. For me, it freezes solid within a minute of GUI-mode setup (after the character-mode setup has copied the files to the hard-drive). Interestingly, I get identical behavior if I try to install any 64-bit Windows (Server 2K3, Longhorn 64): I suspect that the setup programs share common code at that point.

My guess is that this is a real bug, in the sense of the original moth-in-the-circuit erroneous hardware response. My guess is that some the code does some IRQ-level thing to get an offset, doesn't do a sanity check on the return, and BAM! A hard freeze that requires me to disconnect power. But it's been more than a decade since I've seen such a hardware bug (I had memory parity errors that nuked my system... maybe the first 386 I bought? Maybe even a 286!). I don't even know if I can get an RMA on the machine because all I can say is "The only reason I have this machine is to work with operating systems you don't support. Please give me another piece of hardware to try to do that."

Anyone know anything about what goes on in the early stages of Windows installation?


10:01:14 AM    comment []   trackback []

March 2004
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      
Feb   Apr


Recent code:

Genetic algorithm in C#


Recent writing:

The REST is Salient

A Perfect Demo

Is InfoPath the New Excel?

The Joy of XML

No Reservations About .NET

Review of Borland's C# Builder 1.0

Java Eye for the .NET Guy

Waiting for Whidbey

Academic Issues

Netscape, We Hardly Knew Ye

Recommended .NET Programming Books

Programming Sabre with Java, C#, and XML

Bayesian Spam-Filtering

Best Practices for .NET Architecture

Windows Server 2003 as an Application Server


Toolroll:

Motion Computing M1200 Tablet PC

Compaq Evo N400c

XP Pro

Outlook 2003

Word 2003

Visio Enterprise Architect 10

Radio Userland 8

Visual Studio 2003 Enterprise Architect

Visual SlickEdit 6

Adobe Photoshop 6

Windows Journal 1

Microsoft Snippet 1

NewsGator 1.2

SpamBayes 1.0a2

Adobe Acrobat Professional 5

Groove 2.5

SQL Server 2000

WinCVS 1.3

IntelliJ IDEA 3

NUnit 2

Rational Rose Enterprise Edition 7

TimeTTracker 7

XMLSpy 5 Enterprise Edition

T Mobile Pocket PC Phone Edition


Subscribe to "Knowing .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.
[foaf]