Software Geek

March 18, 2008

On the Perils of Wikipedia

Filed under: Software


Also see: LINQ - The Uber FindControl

It’s hard to decide how afraid to be of something that is
really bad and really rare.

This problem is currently one of the most controversial
issues in the United States.  Ever since September 11,
2001 , we have been wrestling with the question: How afraid of terrorism
should we be?

  • We all agree that terrorism is really bad.  What happened
    on 9/11 was awful.
  • But it’s also really rare.  I personally have never met a
    Muslim who wanted to hurt me.

How afraid should we be? 

  • Some people are very afraid.  They focus more on the
    "really bad" side of the issue.  Many of these folks are willing
    to give up their own civil liberties just to feel safer. 
  • Others are not afraid at all.  They focus more on the
    "really rare" side of the issue.  They prefer to spend their
    resources and attention in other areas.

This blog entry is not the place for me to take a stance on
any of these issues.  For now I will simply say that I understand both
perspectives.  This whole situation is simply the most obvious example of my
point, which was:

It’s hard to decide how afraid to be of something that is
really bad and really rare.

Issues like these are like an icy ski slope.  Some people
stand at the top.  Some people stand at the bottom.  Very few people stand
anywhere else.  It’s too slippery.

(more…)

Chicago geek dinner 11/22

Filed under: Software


Also see: REST2SQL in a Jiffy, with Tagspace for Spice

Also see: Memory Model

Also see: Binding to .NET Frameworks Assemblies

When: Wednesday, November 22nd, 2006
Where: Rock Bottom @ State & Grand
When: 6PM

Last day to get out before the entire Midwest descends on our fair city for the holiday shopping season.

Bear down!
http://weblogs.asp.net/jkey/archive/2006/11/20/chicago-geek-dinner-11-22.aspx

Sometimes you just have to make something fun and silly. The chance tree converted to javascript…

Filed under: Software


Also see: Silverlight and WPF Control Developer Huddle at Mix08

Also see: Bragging on HDNet

Also see: Simplifying Web Service development with JSR-181

Actually, I didn’t make it to be fun or silly, but rather to create a neat little client-side application for a good friend of mine. Could have just as easily written a basic PRNG index swizzle and gotten identical results, but it seemed like this chance tree is going to just make my life entirely easier if I have it always available as a tool. Not going to worry about implementing the swap filters and other features, but if you need to do some random selection in a web browser, maybe you’ll find it useful.

Code-Only: Client-Side OO Javascript Vector Chance Tree for probability selection.


http://weblogs.asp.net/justin_rogers/archive/2004/10/26/248370.aspx

Debugging an InvalidCastException

Filed under: Software


Also see: C# 3.0 Lambdas and Type Inference

First, obviously, find the two types for which the cast failed and verify that they are the same type or otherwise castable.

Next, if the type was just deserialized, also verify that its assembly successfully loaded in the target appdomain.

If everything seems fine, check to see if the assemblies for those two types are loaded from different locations and in the same appdomain. (The actual cast is done in just one appdomain, even if the exception happens when passing a type between two appdomains.) Even if the bits of those assemblies are totally identical, if they are loaded from different paths, they will be considered different, so their types will be considered different. (See Comparing Already-Loaded Assemblies.)

A quick way to check for that is to examine the loaded module window of a debugger to see if that assembly was loaded multiple times. If it was, break on module loads to get the callstack for the unexpected load. If that’s inconvenient, try getting the Fusion log.

Usually, the problem is that:

  1. The assembly is available in the GAC (or the ApplicationBase) and loaded there by static reference (something was compiled against that assembly).
  2. It has also been loaded dynamically by path, from another path (LoadFrom(), LoadFile(), etc.).
  3. Then, the code tries to cast the type from (2) to the corresponding type from (1).

To fix this, once you find the offending caller, you will need to either cause the two types to be (more…)

Applied Metamodelling: A Foundation for Language Driven Development

Filed under: Software


Also see: A web site is not an RSS feed…nor the reverse.

Applied Metamodelling: A Foundation for Language Driven Development (2004)
by Tony Clark, Paul Sammut, James Willans

An excerpt:

Language-driven development is fundamentally based on the ability to rapidly design new languages and tools in a unified and interoperable manner. We argue that existing technologies do not provide this capability, but a language engineering approach based on metamodelling can. The detailed study of metamodelling and how it can realise the Language-Driven Development vision will form the focus for the remainder of this book.

In software engineering circles the term “language driven development” is synonymous with “language oriented programming”, a term which LtU members are more familiar with (thanks to Martin Ward’s article Language Oriented Programming which first appeared in 1994, and then Martin Fowler’s essays on the topic). The book hasn’t appeared on the radar here on LtU, despite 41 citations. I suspect this is due in part to only one citation at Citeseer , and the lack of cross-talk between computer scientists and software engineers.

There are a lot of similarities between the XMF language (discussion at LtU ) and that of the Katahdin language (discussion at LtU ). Other related discussions here at LtU, include Language Workbenches: The Killer App for DSLs - about the essay by Martin Fowler, Ralph Johnson: Language workbenches - a response to Fowler’s essay, XActium - Lightweight Language Engineering? - which discusses an essay about a previous version of XMF, Generating Interpreters? , Language Oriented Programming - discusses an essay by Jetbrain’s Sergey Dmitriev, “Language Oriented Programming” Meta Programming System - discussion of the Jetbrain MPS system, The DSL, MDA, UML thing again… - an older discussion on the relationship between DSLs and MDA.

(more…)

Never keep your emotions bottled up

Filed under: Software


Also see: Natural Sorting in C#

Last week I was considering the purchase of a piece of
software.  I went to the vendor’s website for pricing.  It wasn’t there. 
Annoyed, I filled out the form so that I could be contacted by one of their sales people.  The
following day I got a response:

Thanks for considering (product
name deleted).  Please write back to me with your phone # or call me at the #
below — we can discuss pricing as I learn about your application and how you
plan to use (product name deleted) for development.

So I sent an email with the following response:

Hi (name deleted),

OK.  Please bear with me for just a
moment while I vent.

#ifdef FRUSTRATED_RANT

First, I hate the fact that you
guys don’t put pricing on your website.  I looked up the old version of your
site using archive.org, so I’ve got a ballpark idea of what the pricing was
around six months ago.  Mostly I just want to know if anything has changed.

Second, it’s absurd that when a
customer asks for pricing, you won’t give it to them.  Instead, you answer the
question with a question.  I’m not even the slightest bit interested in telling
you about our application and how we plan to use (product name deleted) for
development.  I just want to know your pricing and your license terms.

(more…)

LearnExpression.com is live.

Filed under: Software


Also see: A web site is not an RSS feed…nor the reverse.

We recently launched our video tutorial site for Expression Web Designer. Dustin, our resident graphic artist is pumping out the video tutorials as well as designing the site using the tool. It’s good to have some how to vids from a designers point of view. Watch this site throughout 2007 as he continues to expand the content.


http://weblogs.asp.net/dfindley/archive/2007/02/02/learnexpression-com-is-live.aspx

Microformats are like RFID tags for the Web

Filed under: Software


Also see: Number of Types in the .NET Framework

Today, I took a much needed break to attend a Microsoft Research talk by Paul Dietz , who is a scientist at the Mitsubishi Electric Research Lab (MERL ).

In describing one of his inventions, a system that automagically pings your waitress when your glass is half empty, Paul described RFID tags as a “passive, non-interactive component”. He then proceeded to describe how he and his associates at MERL have figured out how to enable two devices to communicate using low cost LED lights , at hundreds of bits per second. But I’ll get back to that, in a second.

Suddently, it hit me: a quick and simple way to describe microformats to my friends and colleagues!

A microformat serves the same function on the Web as an RFID tag in a Walmart warehouse ! Microformats are descriptive but passive. They just sit out there and wait to be discovered by an interested agent. They are small and easy to miss, unless you’re looking for them. Microformats, like RFID tags, talk to everyone.

What is a microformat? A microformat is an RFID tag for Web pages. Do you see any problems with this analogy?

Now, back to LEDs and Paul Dietz… I invite you to chew on this for a second:

LED a + LED b = communication medium

Think about the hundreds of LED lights that you encounter on a daily basis: on your keychain, desktop, dashboard, keyboard , remote control, auto, kitchen appliances, telephone, TV, computer, and even your kids. Paul Dietz is not just another Talking Head.

(more…)

Claimspace, a Long Tail Recognition System

Filed under: Software


Also see: Dare Obasanjo on C# Anonymous Types

Robert Rebholz is not only my boss*, he is also my muse, ideological sparring partner, alter ego, and mentor. Bob is possesed by a special kind of genius, with a sort of Jeffersonian breadth and intensity that makes it a pleasure and honor to collaborate with him, on a day-to-day basis. In my opinion, Bob is one of two people on Earth who can talk about the BIG idea that is Claimspace , with absolute confidence, competence, and credibility. If you have even a passing interest in online communities of practice, folksonomies , reputation systems, credibility, identity, recommendation systems, rewards, “flow”, collaborative filtering, “social search”, & related areas, I encourage you to subscribe to my RSS feed and Bob’s RSS feed.

Yesterday, Bob posted an excellent post about Claimspace  that wades into the broad river of uses that it might one day support, for both users and “community owners”, across the Web. He cites the following potential uses:

  • “Long tail recognition system”
  • Solution to the “Who can I trust? issue”
  • “Generalized polling mechanism” (and portable)
  • “A simple REST API gives everyone (and I mean everyone — the mashup possibilities are just staggering — caveat, keep the crawl, walk, run idea in mind) the ability use the data in a manner best suited to their needs: community (MVP or other influencer) reward programs, product design input, product feature voting, bug prioritization, and on and on and on, all without a ton of custom code. Any Digg-like application would love this kind of data. Can you imagine – hottest claims, hottest people making claims, most used claims, newest claims, by product, by solution area, by geographical region, and the list goes on.”

  • (more…)

Startup, Shutdown and related matters

Filed under: Software


Also see: When Will Foreign Ownership of US Sports Teams Start ?

Usually
I write blog articles on topics that people request via email or comments on
other blogs.  Well, nobody has ever
asked me to write anything about shutdown.

size=2>

But then
I look at all the problems that occur during process shutdown in the unmanaged
world.  These problems occur because
many people don’t understand the rules, or they don’t follow the rules, or the
rules couldn’t possibly work anyway.

size=2>

We’ve
taken a somewhat different approach for managed applications.  But I don’t think we’ve ever explained
in detail what that approach is, or how we expect well-written applications to
survive an orderly shutdown. 
Furthermore, managed applications still execute within an unmanaged OS
process, so they are still subject to the OS rules.  And in V1 and V1.1 of the CLR we’ve
horribly violated some of those OS rules related to startup and shutdown.  We’re trying to improve our behavior
here, and I’ll discuss that too.

(more…)

Get free blog up and running in minutes with Blogsome
Theme designed by Jay of onefinejay.com