Tablet UML News


News and commentary (and whatever else catches my eye)
from Martin L. Shoemaker, author of Tablet UML
and UML and Tablet PC instructor for The Richard Hale Shaw Group

Thursday, November 30, 2006

The evil that is YouTube
Curse you, Dean Esmay! If not for you, I might've remained blissfully ignorant of that evil time waster, YouTube.




I give this kid great credit for how naturally he moves through this whole clip.






Who says sabre fencers never thrust?






Oh, sure... We have five dogs, and six horses. I can't keep track of the cats. But I can't have one penguin?






OK, if I can't have a penguin...






Reminds me of when MTV was MTV.






Until now, I never knew he died due to complications from AIDS.






Kevin Sawicki has too much time on his hands. And too much clay.



I'm envious.




Must... avoid... video... store... Too... close... to... Christmas...






Oh, sure... You train them to operate light switches. Next thing you know, they'll figure out computers. That'll be the end of everything!



And in case you doubt that they have reason to take revenge...






With bytes and kilohertz, they did this:



What could we do with terabytes and gigahertz?




It really does look like YouTube is the modern successor to classic MTV.






I've never understood why anyone finds this photocopy stunt amusing. But this guy, he made it funny!






Words fail me...

Wednesday, November 29, 2006

To Serve All My Days
The latest Star Trek New Voyages episode, "To Serve All My Days", is now available for download.

If you're not familiar with Star Trek New Voyages, it's a fan-driven effort to make new episodes of the original Star Trek series: Kirk, Spock, McCoy, and crew. Their goal is to convince Paramount to go back to the roots of the story and continue with "Seasons 4 and 5", with new actors. After all, as they point out, Superman and Batman and James Bond and Sherlock Holmes have all been portrayed by numerous actors. Why should the Star Trek franchise be different?

So these fans have built sets, made costumes, and created digital special effects. And the results are far better technically than anything possible in the 60s. And as for quality... Well, their work has drawn the attention of some Star Trek notables, who are actually contributing to the project.

Now Paramount hasn't overlooked this blatant trademark violation. There's a quasi-official policy: as long as no one makes any money from Star Trek New Voyages, Paramount will turn a blind eye; but if there's any profit, it's over. And of course, Paramount has the right to change their mind and shut the operation down at any moment. So the New Voyages crew are actually funding the effort out of their own pockets and from donations, all the while knowing the whims of some studio exec could take it all away.

So about those Star Trek notables: in this episode, we get a script from the original series script supervisor and also screenwriter of several episodes, D.C. Fontana; and in the role of Pavel Chekov, we have none other than Walter Koenig himself! And the next episode (in production now) will have guest star George Takei as Sulu.

I thought this episode was a great story, a very human drama about Chekov's ambitions and dreams vs. a frustrating reality. Just one thing: if you're a continuity cop, just don't watch the ending. Just. Don't. Do not watch the ending. It's a great ending, absolutely the only possible ending for Chekov's story; but you'll sit there thinking, "But how...? But what...? But...? But how can he...?"

Tuesday, November 14, 2006

Yes, Mr. Albom, I can
I've reluctantly come to the conclusion that Mitch Albom is a shallow, mediocre hack. Oh, he's a likable hack; but after listening to WJR for a couple of months for the excellent traffic reports, I have to conclude that he doesn't have many original topics on his show. Rather, he has the same topics as on too many other shows; but then he puts his unique "spin" on it, claiming to be above it all by asking, "Why is everybody talking about this?"

Last week, he was pulling that same bit with regards to the latest celebrity "news"; and he spent at least a whole show segment on it, in between complaining about how everyone was talking about this drivel. And he actually had a brief flash of honesty, saying, "Yes, I admit, we're talking about it." But then he tried to excuse himself by adding, "But only because everybody else is talking about it. No matter where you turn, you can't escape it."

Yes, Mr. Albom, I can. As soon as you said that, I hit the FM button, and jumped to All Things Considered. Somehow, over the course of a two hour news show, they never got around to that story you said you were only talking about because you couldn't escape it.

It's one thing to be an average, likable radio host. It's another thing to pretend to be all superior while talking about the exact same thing as all the other hosts.

I've found an affordable hotel four miles from my client site, so I no longer need WJR's excellent traffic reports; and I haven't missed the Mitch Albom show at all. I've had time to listen to great world music or great comedy CDs from Bob Newhart. Now there's some fresh material: forty years old, but still fresh.

Sunday, November 12, 2006

Not that there's anything wrong with twins!
In no way should anything in this post be construed as a criticism of twins in general; and by no means do I wish to imply that twins are evil, as a rule. In fact, twins are some of the most delightful people around, especially if the twin in question happens to be the most lovely and patient and understanding and beautiful wife on the planet.


Related Posts (on one page):

  1. Not that there's anything wrong with twins!
  2. Public Service Announcement: Beware of WiFi Evil Twins!
I'm eagerly awaiting this one!
TNT has announced that The Librarian: Return to King Solomon's Mines premiers on Dec. 3 at 8:00 p.m. I loved the first Librarian film, so I've added this one to my appointment calendar.

As a bonus, they've also announced the graphic novel adaptation. Frankly, though, I doubt that any graphic novel can do justice to Noah Wyle's and Bob Newhart's comic genius.

UPDATE: "Don't miss the further adventures of Flynn Carsen, whose latest quest uncovers ancient secrets and those of his own family’s past." Well, that preview makes my prediction a little less prescient (if I'm right); but I'm going to make the prediction anyway, just so I'm on record if I'm right. In the first film, Flynn's mother was a bit on the flighty side, and his father was never seen nor scarcely mentioned. He had been out of the picture for a long time. So my prediction: in the new film, we'll find that she actually knows an awful lot about the Library, because Flynn's absent father was himself a Librarian -- Judson. Bonus prediction: she was in fact Judson's bodyguard; and we'll get to see Olympia Dukakis (or her stunt double) kicking the stuffing out of some baddies.

If I'm wrong, oh, well. But if I'm right, you read it here first!
Public Service Announcement: Beware of WiFi Evil Twins!
OK, this may be old news to some of you; and it's obvious, once you think about it. But it's news to me, so I want to pass it along.

The topic is WiFi Evil Twins. What's a WiFi Evil Twin, you ask? That's when some thief goes to a public WiFi hotspot area and sets up a new public WiFi network with the same or similar name, in hopes of getting people to sign in through his WiFi instead of the public one. Then he can attempt to upload viruses, record traffic, capture credit card information, etc. Usually he uses a stronger antenna, so that you're more likely to find his network than the legitimate network.

There are variations on this. One might be called the Evil One: he doesn't duplicate the existing network, he just creates a new network. As this interview with Anne P. Mitchell, Esq. (Professor of Internet Law at Lincoln Law School of San Jose, and the President and CEO of the Institute for Spam and Internet Public Policy) explains:


Anne: Yes. Just last week I was sitting in my local Starbucks, where they offer wifi hotspots from T-Mobile. In order to log into a T-Mobile hotspot, you must have an account with T-Mobile, for which you must pay.

Even though I don't use the T-Mobile hotspots, I always check (with my laptop) to see what wifi hotspots are available at any given location because, well, that's part of my beat.

Sure enough, users at that Starbucks who opened their laptops and searched for a local wifi Internet connection were presented with the option of "T-Mobile Hotspot," as they should be, but were also presented with a second option, called "Free Wifi from Team WiFi," which I am 99% certain was an evil twin (and indeed Starbucks confirmed that there was no special offer going on which would have otherwise explained that second hotspot).

Now, notice a few things about this second, uninvited hotspot. First, it uses the term "free wifi." Who wouldn't want to use that, especially compared to the T-Mobile hotspot, where you have to pay?

Second, though, note the friendly and familiar sounding "Team WiFi." By using familiar terms for their evil twin, along with telling people it is free, they are making it very easy for an unsuspecting user to go ahead and click and connect to that evil twin. In fact, users may just think that it's a special offer from the T-Mobile Hotspot people.

Sure enough, Audri, this evil twin caught some people. As the gentleman who was sitting next to me got up to leave, after being on his computer for quite some time, I asked him whether he had logged in to the Internet while he was there.

When he said that he had, I asked him whether he was a T-Mobile user. "Oh no," he replied, "they have a free wifi hotspot set up here."

I advised him that it was almost certainly an evil twin, and that if he had done anything online while logged in through that "free" hotspot which might have compromised any sensitive information, he should take immediate measures to remedy the situation, such as changing any passwords he had sent while logged in.


And for me, this is more than just theory: I'm pretty sure I've met an Evil Twin in the wild. A hotel I've been staying at offers free WiFi (more and more of them do these days — it's a lot cheaper than stringing wires to the rooms). They have three WiFi hubs: "hotel name", "hotel name2", and "hotel name3" (names changed because I'm not sure I'm right yet). That's what the owner believes, anyway; but when I check for available networks, there's a fourth network, named "Hotel Name". And it has a stronger signal than any of the other hubs. What's more, when I connect to the other three hubs, they all give me the same IP address; but when I (carefully and briefly) connect to the fourth hub, it gives me a radically different IP address on an entirely different subnet.

So what should I do about it? That's troublesome. From the interview with Ms. Mitchell:


At this point your readers may be wondering why I didn't alert the authorities. And this is why user education is so very important.

There really was nobody for me to effectively alert. I could have called the police, but they would not have had the resources to even figure out where this evil twin was located, let alone to figure out who and how it was being done. The best thing I could do at that point was to let people know not to use that hotspot.


While I'm all for user education — that's why I'm telling you this — I'm not so complacent as Ms. Mitchell about informing the police. Michigan's Attorney General has made fighting Internet crime a priority, so I've informed their High Tech Crime Unit. It may be a waste of time; but if I don't try, I'll always worry that someone might be getting ripped off, and I didn't do anything to stop it.

Now back to the subject of user education: here are some things you can do to protect yourself.


  1. When in doubt, don't do it. These scammers are good. This is how they make their living. If you don't feel comfortable trying to detect and outwit the scammers, then don't do anything at a WiFi hotspot. Certainly don't enter any passwords, credit card numbers, etc. Save that work for when you have a direct connection. I'm not saying you should never use WiFI; I'm saying that if you don't want to take the time to learn how to protect yourself, then you should never use WiFi.

  2. Always download the latest security updates from Windows Update. Set up your machine to download the updates automatically. Don't tell me you're too busy. If you're too busy, then stay off WiFi. In fact, stay off the Internet, period. The scammers are working hard to find new victims, and you're volunteering to be one. And don't tell me that the updates "break" your machine. While I'll grant that's possible, it's most likely something you're doing wrong, and you need to fix. I've had automatic updates activated on all of my machines for years, and I've never had a problem.

  3. Turn on your Windows firewall.

  4. Download and install Windows Defender.

  5. Install a good antivirus/Internet security package, such as McAfee or Symantec, and keep it up to date.

  6. Install a spyware blocker like Ad-Aware or Spybot. In fact, install both of them. They're free, and they seem to complement each other well. And yes, Windows Defender and McAfee and Symantec all have adware/spyware blockers as well; but since each product has its own strengths and weaknesses, it can't hurt to have multiple layers of protection.

  7. Despite my advocating Ad-Aware and Spybot, be careful with "free" software. Software takes time to develop. Time is money. Although we programmers will often write code for fun or passion, the most common motivation is money. If someone's offering it to you for free, it's very likely because he hopes to make money somewhere else. In many cases, that's by selling ads through adware/spyware; but sometimes, it's by installing viruses and keyboard recorders to steal your banking information. If you're installing "free" software, make sure you trust the company or person that's providing it.

  8. Change your WiFi settings to Paranoid (i.e., safe). This will involve several steps:

    1. Open up your network connections by selecting Show All Connections from your Start menu:

      Show all connections

    2. When you see the Network Connections dialog, right-click your wireless connection and select Properties:

      Selecting Wireless Network Properties

    3. You should see the Wireless Network Connection Properties dialog:

      Wireless Network Connection Properties dialog

      Switch to the Wireless Networks tab:

      Wireless Networks tab

    4. Click the Advanced button to open the Advanced wireless settings dialog:

      Advanced wireless settings dialog

      This lets you choose from three different ways to access WiFi networks:


      • Any available network (access point preferred). This means that you will connect either to wirless hubs or to other wireless computers, but you'll prefer wireless hubs.

      • Access point (infrastructure) networks only. This means that you will connect only to wirless hubs.

      • Computer-to-computer (ad-hoc) networks only. This means that you will connect only to other wireless computers.


      Unless you know you're intending to work with friends or coworkers and plan to meet somewhere without a WiFi network, it's always a bad idea to connect to other wireless computers. That's the easiest way to get viruses; and it's a very easy way to get hoodwinked by an Evil Twin: the scammer doesn't even have to set up a hub, just rename his computer to look like a network. The Paranoid setting here is Access point (infrastructure) networks only. Choose that one unless you're sure you have a reason not to.

      This dialog also has a check box: Automatically connect to non-preferred networks. For added Paranoia, make sure that box isn't checked.

      When you're done in this dialog, click Close. But don't close the Wireless Network Connection Properties dialog. You'll do more work there in the next step.


  9. Next you want to disable automatic connection to all of your WiFi networks, or at least to most of them. Your home network is probably safe, as are those of your friends, and your office; but even in those places, if there are neighbors nearby, there's the chance of an Evil Twin. So the Paranoid (i.e., safe) approach is to only make manual connections. Now if you're like me, you probably already have a number of known Wireless connections; and if Evil Twins are as new to you as they are to me, then those are probably set up for automatic connection. So you'll need to switch those to manual, following these steps for each network:


    1. In the Wireless Network Connection Properties dialog, select the network you would like to change:

      Selecting a WiFi network to convert to manual connection

      After you select the network, click Properties. You should see the Properties dialog for the selected network:

      Properties for the selected wireless network

    2. Select the Connection tab:

      The Connection tab for the selected wireless network

      Uncheck the box that says Connect when this network is in range, and then click OK.

      Repeat this for every wireless network. Then click OK in the Wireless Network Connection Properties dialog as well.



    Once you've disabled automatic connection, you'll need to connect manually to any network. To do this, right-click the wireless network connection icon and select View Available Wireless Networks:

    View Available Wireless Networks

    You'll see the Wireless Network Connection dialog:

    Wireless Network Connection dialog

    Select the network you want to connect to, and click Connect.

  10. While you're in the Wireless Network Connection dialog, search for Evil Twins. If you see two networks with the same name, one is probably an Evil Twin. If you see a network with a seductive name like "Free Wifi from Team WiFi," that's probably an Evil One. Here's a hint: Internet service isn't free. If a cafe or restaurant or hotel puts in WiFi service, it's because they're hoping it will bring them customers. And the only way it can bring them customers is if customers know about it. That means they'll advertise it with signs on the wall or the front door. If you don't see an advertisement for it, it's probably an Evil One. And if there's both a fee-based service like T-Mobile and a "free" service, the "free" service is almost conclusively an Evil One. When in doubt, ask the management. If they don't know about it — or they're clueless and say, "I don't know anything about the wireless" — assume it's an Evil One.

  11. If you think you've found an Evil Twin or an Evil One, I disagree with Ms. Mitchell: inform your Attorney General. They get our tax follars to pursue cybercrime, but they can't be everywhere. If they don't know about the crime, they can't pursue it. Maybe nothing will come of it, and the criminals may keep commiting their crimes; but if no one does anything, then they will keep commiting their crimes. I understand why Ms. Mitchell would inform other patrons that they were at risk. Of course, it takes some chutzpah to start telling random strangers in a cafe that they're at risk; and worse, it may also upset the scammer, and he may take steps to shut you up. And even if you inform the management, it's possible that someone in management is the scammer. I think it's best to leave law enforcement to the law enforcement authorities. Tell your AG.



Robert A. Heinlein once wrote: "Anything free is worth what you pay for it." My cynical addition is "If you're lucky." That "free" WiFi could end up costing you everything you've got in your bank account, and a whole lot more.

UPDATE: My lone commenter and fellow Duelist Epee Bill links to this more serious WiFi vulnerability. It's a WiFi driver flaw affecting laptops from Dell, HP, and Gateway, as well as other devices. Because it's driver-level code, it works at a privileged level in your system and can give a hacker complete control.

The catch is no one's distributing the fix through typical "push" channels. You have to know about it and go pull it down.

Related Posts (on one page):

  1. Not that there's anything wrong with twins!
  2. Public Service Announcement: Beware of WiFi Evil Twins!

Saturday, November 11, 2006

Fun with VS 2005
OK, this is a rather oddball Visual Studio 2005 quirk. Or pair of quirks, really, but they seem to be related. And I won't call them bugs, because I'm not sure they're wrong, necessarily; but they're certainly confusing.

I've been working on a new VS 2005 solution for a while, one that consists of a main app, a control library, and a number of class libraries for logic and data; and often when I rebuild after debugging, I get this message (names changed to protect the confidentiality of the project):


Unable to copy file ‘obj\Debug\ControlLib.dll' to 'bin\Debug\ControlLib.dll'. The process cannot access the file 'bin\Debug\ControlLib.dll' because it is being used by another process.


I looked for some process that might be using ControlLib.dll, but could find nothing. The only thing that "fixed" the problem was to close Visual Studio 2005 and reopen it. That's time-consuming and annoying. For a while, I put up with it; but I wasn't thrilled.

Today, I got a different error. I had added an Ink object to one of my data classes; and that data class was the type of a property of one of my custom controls. Well, when custom controls persist their properties as resources, they rely on .NET serialization for that work. And the Ink class is not serializable. (Thanks, Microsoft.) Since the Ink wasn't serializable, the data class wasn't serializable; and when I tried to rebuild the control library, I got this message:


The "GenerateResource" task failed unexpectedly.
System.Runtime.Serialization.SerializationException: Type 'Microsoft.Ink.Ink' in Assembly 'Microsoft.Ink, Version=1.7.2600.2180, Culture=neutral, PublicKeyToken=31bf3856ad364e35' is not marked as serializable.
at Microsoft.Build.Shared.ExceptionHandling.RethrowUnlessFileIO(Exception e)
at Microsoft.Build.Tasks.ProcessResourceFiles.ProcessFile(String inFile, String outFile)
at Microsoft.Build.Tasks.ProcessResourceFiles.Run(TaskLoggingHelper log, ITaskItem[] assemblyFilesList, ArrayList inputs, ArrayList outputs, Boolean sourcePath, String language, String namespacename, String filename, String classname, Boolean publicClass)
at Microsoft.Build.Tasks.GenerateResource.Execute()
at Microsoft.Build.BuildEngine.TaskEngine.ExecuteTask(ExecutionMode howToExecuteTask, Hashtable projectItemsAvailableToTask, BuildPropertyGroup projectPropertiesAvailableToTask, Boolean& taskClassWasFound)


It didn't take me long to remember that I had added the Ink field; but this is a rather perplexing bug at first, because it pops up in an odd place. You would hope that the error would pop up when compiling the data class library; but no, having an Ink field isn't an error in itself, and there's no attempt to serialize the class within the library itself. So you might expect to see the error when compiling the control library; but no, the library only defines the available properties of the control, without assigning them any values, and so never does any serialization. No, the problem occurs when I compile the application that uses the control in one of its forms. That's two steps removed from the actual error. So it took me a while to puzzle through it. What happens is that VS 2005 compiles your forms into resource files, allowing you to substitute other versions for other languages and cultures simply by providing new resource DLLs for each new language and culture. And when the resource compiler tried to serialize the main form which contained the control which contained the data class which contained the non-serializable Ink field, it threw an exception.

But once I fixed that error (I replaced the Ink object with a byte array), I was in the mood to chase down odd quirks, especiall since the "Unable to copy file..." problem kept popping up as I worked on the resource serialization problem. So I copied the error text into Live search, and found a number of references, including this one. It sounds like a very similar problem, if not the identical problem. And here's one suggested answer:


Can you edit the project file for your custom control, and add this line to the top of the project, and see if that causes the file locking issue to disappear? This will be fixed in a later release - but we are interested in finding out if this workaround will fix the problem for you.


<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

<PropertyGroup>


<GenerateResourceNeverLockTypeAssemblies>true


</PropertyGroup>


Let us know what you find.


Note the bolded XML element: GenerateResourceNeverLockTypeAssemblies. Notice that it seems to relate to resource files, just like my earlier problem; and indeed, immediately after that suggestion came this response in the discussion thread:


I tried what you said, but still getting the same error.
We just moved our project from 2003 to 2005. From then i can't build my project from second time.
Getting:
Error 57
Unable to copy file "obj\Debug\XXXX.Controls.dll" to "bin\Debug\XXXX.Controls.dll".
The process cannot access the file 'bin\Debug\XXXX.Controls.dll' because it is being used by another process.


Boy, that sounds familiar...

I note that some of the folks posting about this problem only saw it after upgrading from VS 2003; and I also note that prior to VS 2005, using resources was not the default. You had to make a choice to use them. VS 2005 has added a new tool, ResXFileCodeGenerator, which makes it easier to use resources: it reads them and creates a class in your project which includes easy properties for reading the resources. My suspicion is that this tool is sometimes leaving a file locked, and thus preventing copying over that file.

Note that some people in the discussion thread said the suggestion didn't fix the problem for them; but so far, at least, it seems to be working for me. I'll post an update if I see more problems.
Where I've been hanging out
Corridor

The sign says it's the longest continuous corridor in the State of Michigan. I don't know how they would know that; and it's a rather unusual thing to boast about, as tourist attractions go. But this has been my home-during-the-week. (No, not the corridor; one of the rooms off the corridor.)
This is why I have to watch where I'm walking in the parking lot at work
Geese

Goose goo all over the place...
Random Star Trek observation
So once the salt vampire was on the Enterprise, why did it have to keep killing people? Couldn't it get all the salt it needed from the replicators? Or the food dispensers? Or the blooming kitchen?