May 31, 2005 spout

Every PC Should Have A Camera, Mic + Stylus

I’ve been doing a lot of remote collaborative communications over the last decade. Email, IM and phone calls literally enable me to be an effective remote employee (along with my wit and charm : ). However, to take it to the next level as MS Communicator, MSN Messenger and Skype get real a/v conferencing and app-sharing features (that actually works through VPN and firewalls), every computer needs some extra equipment.

Most modern laptops come with built-in mics, but very few come with built-in cameras. Why should I have to use a strap-on webcam when the camera lens could be built right into the LCD screen? Plus, the mics and software really needs decent noise cancellation (MSN7 and Skype do this well, but not all apps do).

Still, I’ve got my phone, so I can live w/o audio and once I’ve already met someone, video is just a novelty, especially when compared with the power of app-sharing (it’s like you’re sitting right next to someone!).

The thing that I really need that I’m missing is for my computer, and everyone’s computer that I’m conferencing with, to have a stylus attached to their screen. The let’s just sketch something on the white board” is really the last remote collaboration frontier til we get some kind of fancy virtual presence” stuff going.

I don’t mean that every computer needs to be a Tablet PC. Frankly, I’m not very productive on a computer that doesn’t have a keyboard. But, I want to be able to sketch something right on my computer screen like a tablet can and instantly share it as I do so. Plus, and here’s the rub, I want everyone else to have a stylus, too. If they don’t, they’ll turn to the white board and I’m out of luck across the great divide.

May 31, 2005 spout

Blogging is not marketing copy!

As soon as corps hire bloggers as part of their marketing budget, they’ve missed the point completely. Marketing and PR folks are chiefly concerned with only saying the good things about their own products and (the good ones anyway) nothing at all about the competitor’s products.

Blogs are about the whole truth, which is why are the best corp bloggers are constantly in fear of losing their jobs.

Does anyone see a disconnect here?!?

May 30, 2005 spout writing

URLs in the Footnotes?

Here’s a question for folks. Right now, the 1st edition of the WinForms book has several footnotes like the following that include URLs:

The ntcopyres.exe tool can be obtained from http://www.codeguru.com/cpp_mfc/rsrc-simple.html.”

Unfortunately, unlike the browser you’re using now, while we can underline an URL in a book, we can’t do anything useful with you click” it, which forces you to type it. Since the URL above is by no means the longest in the book (MS likes to put GUIDs in theirs), I’d prefer not to put that burden on the reader if I don’t have to. With the invention of shrinkster, I don’t have to:

The ntcopyres.exe tool can be obtained from http://shrinkster.com/452.”

The problem with this, of course, is that I don’t really know if shrinkster is going to be around forever or if I want to tie my book to a single external resource that I can’t control. The idea I had this morning was to use both, which increases the size of the URL in print but gives the reader a shortcut and doesn’t hold me hostage to shrinkster*:

The ntcopyres.exe tool can be obtained from http://www.codeguru.com/cpp_mfc/rsrc-simple.html (shrinker.com/452).”

What do people think?

*Don’t get me wrong. I’m a big shrinkster fan, else I wouldn’t be dropping their links into my books at all.

May 29, 2005 .net

IanG Builds a Real Magnifying Glass in Avalon

You've seen it in the concept videos, now see it for real: Ian has implemented a working magnifying glass in Avalon.
May 28, 2005 fun

Darth Vader vs. Yoda?

I just realized: Lucas took us through the entire 6 film series and we never got to see Yoda fight with Darth Vader! What’s with that?!?

P.S. I like that Vader” is in my spelling dictionary. Lucas changed the world.

May 27, 2005 spout

The Logic of Logic

May 27, 2005 fun

Studs from Microsoft

I have no idea where the Studs from Microsoft” video came from or how old it is and I had to download it first before playing it, but it was totally worth it to see Bill Nye as a softie and to watch those women run for their lives instead of facing the possibility of dating any of us. : )

[via jj5 (would doesn’t like people to know he exists, let alone link to him…)]

May 27, 2005 spout

The Logic of Logic

My son came to me the other day and said, Dad, I need help with a math problem.” The problem went like this:

  • We’re going out to dinner taking 1-6 grandparents, 1-10 parents and/or 1-40 children

  • Grandparents cost $3 for dinner, parents $2 and children $0.50

  • There must be 20 total people at dinner and it must cost $20

  • How many grandparents, parents and children are going to dinner?

The reason this problem is interesting is because there are 3 variables, but only 2 equations:

  1. grandparents * 3 + parents * 2 + children * .5 = 20

  2. grandparents + parents + children = 20

Being a coder, I sat down to write the program to enumerate all possible solutions:

class Program {
  static void Main(string[] args) {
    for( int grandparents = 1; grandparents < 7; ++grandparents ) {
      for( int parents = 1; parents < 11; ++parents ) {
        for( int children = 2; children < 41; children += 2 ) {
          double dollars = grandparents * 3 + parents * 2 + children * .50;
          int people = grandparents + parents + children;
          if( dollars == 20 && people == 20 ) {
            Console.WriteLine(grand parents= {0}, parents= {1}, kids= {2}”,
                              grandparents, parents, children);
          }
        }
      }
    }
  }
}

Running this program saves my son the time to figure out the solution through tedious trial-and-error (plus, he didn’t even have to write the program, since I did that part — tricky little bastard, isn’t he?!?) by producing the following output:

grand parents= 1, parents= 5, kids= 14

That was all well and good til Alex, a friend of mine, boiled the problem down to a single-statement Prolog program for me (although this program doesn’t capture the range of values the variables can take on):

people_at_the_meal(Grandparents, Parents, Children) :-
  Grandparents * 3 + Parents * 2 + Children * 0.5 = 20,
  Grandparents + Parents + Children = 20. 

Then I went on to regale Alex about the time my grandmother asked me to schedule her tennis tournament for her on my computer. She had requirements like, everyone has to place everyone else at least once” and you have to lose twice to be out of the tournament” and nobody can play twice in a row” (it’s not good politics for a computer program to kill old ladies…). My grandmother’s problem statement doesn’t fit the traditional algorithmic statements that I’m used to using computers for, nor was I ever able to re-form the problem in those terms (it’s not like my grandma was ever going to leave me a bunch of money anyway…). Alex completely understood and informed me that the NBA has the same problem (with slightly sprier players) and they use logic programs to solve it. In fact, in his experience, these problems happen all the time in the business world.

Constraint Logic Programs (CLPs) break down into constants, variables over ranges and relations of truth, which together make up the constraints in a logic system. In my son’s case, the constants are the numbers, e.g. 3, 20, etc, the variables are the number of people of each type and the relations form the constraints, e.g. the sum of all people must be 20. The CLP solver” (in Alex’s parlance) provides the logic over a particular domain” (real numbers in our case) and knows how to do all the iteration and forward and backward chaining to solve the people_at_the_meal problem. A different solver would be able to solve my grandmother’s and the NBAs scheduling problem.

It was only after most of this discussion that I realized that I recognized the syntax that Alex had produced: it was Prolog, a CLP language I had blocked. I had taken a Prolog course in it in college and absolutely hated it, but not because of the things that allowed me to solve these kinds of problems: that was great. The things I hated were all of the algorithmic things that I needed to be able to do that Prolog was terrible at, e.g. take input, product output, suck in facts from data external to the system (like the NBA player roster), etc. CLPs themselves are damn cool.


← Newer Entries Older Entries →