Don’t plug your Clear Wireless Modem into yourMacintosh

Update: The most recent versions of the drivers may have solved these problems. Works for me now.

WARNING! If you plug your Clear Wireless modem into a Macintosh computer with Clear’s driver installed, the modem will be flashed with a firmware that makes it incompatible with Windows. This firmware flash is not reversible. You will need to return your modem to Clear to get a new Windows-compatible one. More details below.

I got connected with Clear Wireless in Portland 4 days ago. So far I’m very happy with the bandwidth. Connected to my laptop, I’m getting 3mbs down and 200kbps up speeds. For mobile, unlimited internet, this is fantastic. Even better, I’m getting 100-160ms packet latencies, which is about one-third of what I was getting on my cellular wireless modem.

I also purchased the Clear Spot WiFi/WWAN router. This little device is really cool, letting me share my WIMAX connection with other computers, my iPhone, or whatever. Even better, it lets me use the WIMAX modem without installing drivers. This is great because the drivers for WWAN modems are terrible….and Clear doesn’t have average quality drivers.

Windows 7 Drivers

Ok. So there aren’t Windows 7 drivers. Yet. The folks at Clear have told me I can expect to see them on Thursday, when the official launch date happens. In the meantime, install the connection manager from your CD or Driver Thumb Drive(in the box), and do a little googling for instructions on installing the older version of the drivers. Scott Hanselman wrote up something on this. You can also download the 64-bit driver from here for a couple months.

Also, be sure not to unplug the Modem before using the ‘Safely Eject’ feature of Windows….I get a BSOD every time.

The Win7 drivers work. They aren’t shiny or easy to install, but they work. That’s much better than the…

Mac OS X Drivers

When Clear says they support Mac OS X, they are…well…reaching. Their driver is marked ‘Beta’ and it shows. After the install, the Connection Manager will spend 5 minutes or so just sitting there. No status message, and a red light on the modem. Is it working? Is it doing something? Who knows. After that, it will connect, and you’re set to go. Same good service.

Unless.

If you are running Snow Leopard (Mac OS X 10.6) you get nothing. No error message. No indication of failure. No connection. It just doesn’t work. Saying Windows 7 isn’t released yet is technically true, and I understand why those drivers aren’t out. OS X 10.6 has been out since August 28th. It seems foolish that an early-adopter service like Clear doesn’t support an early-adopter OS. That’s how it is, though. Clear people have told me unofficially that we should see a 10.6 driver ‘by the end of the month’. We’ll see.

You can’t go back again

The reason for the 5 minute wait when you install your Mac drivers is apparently that the drivers are installing a fresh firmware on your modem. As I stated at the top, this firmware isn’t compatible with the Windows drivers. Nor does Clear have a flash utility available that can downgrade it. You have to return your modem for a replacement. Clear has told me that this should be free, since it’s “Their Fault”. Be nice when you call, and they should hook you up.

WiFi to the rescue

Luckily, the Clear Spot can still connect to the modem with it’s new, corrupted, Mac OS (10.5 or earlier)-only firmware. I really like the driver-less mobile internet experience. No need for the hassle of incomplete, incompatible drivers or connection managers. Just Windows 7’s shiny new WiFi connection tool and fast internets.

The Clear Spot (Cradlepoint PHS-300) is a great router, works with non-Clear broadband modems, and is $50 cheaper when you get it from Clear. The battery seems to last a bit more than 3 hours with the network in use. You can get extra batteries and a car charger from Clear, but I think an external Tekkeon battery is probably a better idea. When you get it from 3Gstore, it comes with a USB cable that I’m hoping will let me charge my Clear Spot from my laptop. One less wall wart in my kit bag.

There is a slight glitch. Most of the pictures you’ll see of the Clear Spot will show it with the modem plugged right into it. It turns out this is a bad idea. WiFi and WiMax radios seem to interfere. Make sure you leave the router on Channel 1. I also didn’t get anything approaching full speeds until I used a USB extension cable to put some space between the two devices. Once I did that, speeds were right up there.

Good support experience

Clear’s service is definitely in early-adopter mode, but I had a really excellent experience both with the store staff, and with the folks at technical support. It took me 20 minutes on the phone to figure out my Mac/PC Firmware problem, but the rep was patient and eager to help, and that is an excellent experience these days.

I like my Clear service and I recommend it if you want some better mobile bandwidth.

StructureMap: IRepository and Test Data Injection

I Love StructureMap! It’s wonderful. What a way to compose your code together easily,precisely, and consolidatedly (!!). When I put a sentence like that together, I wonderif I even know what I’m talking about. The problem with StructureMap, IoC, and dependencyinjection really seems to be that the jargon for the patterns is so manifestlytrue that once you learn what the hell you are doing, you are completelyunable to stop talking about it in shorthand. And that shorthand makes absolutelyno sense to someone who hasn’t absorbed the patterns. Keep plugging, people. Onceyou do it, you’ll get it. Then you’ll be there and not be able toexplain to other people why you’re so right. It’s like being Tom Cruise and needingto explain scientology.

Anyways.

I learned two things today. The first is how to hook all of my concrete generic repositorytypes together with their interfaces. I had been adding a line of configuration foreach repository. Now my test code looks like this:

ForRequestedType(typeof(IRepository<>)).TheDefaultIsConcreteType(typeof(ListRepository<>));

And my production code:

ForRequestedType(typeof(IRepository<>)).TheDefaultIsConcreteType(typeof(LlblRepository<>));

That’s easy!

The other thing I learned is that I can happily and easily inject data into my objectregistry for testing purposes. I have an in-memory repository implementation built.All it needs is data.

public class MemoryDataSource{private Dictionary<Type, IQueryable> data;public MemoryDataSource(Dictionary<Type, IQueryable>data){this.data = data;}public IQueryable GetQueryable(Type type){return this.data[type];}}public class ListRepository<T>: IRepository<T>{private MemoryDataSource source;public ListRepository(MemoryDataSource source){this.source = source;}public IQueryable<T> GetSource(){return ((IQueryable<T>)source.GetQueryable(typeof(T)));}public void SaveEntity(Tentity){return;}}

Now all I need to do is build a Dictionary<> keyed on the entity object typeand fill it up with data. Once I’ve done that, I just pass it into the StructureMapregistry like this:

ObjectFactory.Inject<Dictionary<Type, IQueryable>>(dataSource);

Now I can have ObjectFactory construct my object under test and it’s got just thedata I need it to have.

Learn a Language Each Year

There’s a piece of advice that floats around,apparently from the PragmaticProgrammer, which goes like this:

Learn One New Language Each Year

I made a good start at Ruby last year, but got derailed by new exciting things overin the .NET world. This year is definitely the one.

I’ve got two reasons:

First, I’m really excited about programming phone systems with Adhearsion.

Second, I’ve realized that all the cool kids over at Microsoft spent the last 3 yearsgetting excited about Ruby. Not only are they developing their own Ruby runtime, butthe dynamicfeatures of C# 4.0 coming in VS2010 are obviously being designed to keep developersfrom jumping ship. We need to learn to think like Ruby coders toadapt to the new problems coming down the line.

One more thing…

Ruby is becoming a first-class citizen for Macintosh GUI application development.If you can write cross-platform libraries that work on the first-class frameworkson Windows, Linux, and the Mac…soon life will be nothing but champagne and swimsuitmodels!

Are Microsoft Certifications Irrelevant?

As of now theyare for me. Apparently Microsoft has been developing heuristics to detect people whouse inexpensive practice tests and study materials. They threaten to ban you fromany further Certification or membership in their training program if you are ‘caught’studying for their tests.

I’ve always thought the certification exams were meaningless collections of arcane–usuallymarketing-centered–trivia. However, in the past, I’ve succumbed to one pressure oranother to getting a certification. I’m done now. I don’t need to give Microsoft moneyfor useless training, or for certificates that have never helped my income one bit.Especially if they plan on threatening me.

Two Factor Authentication with your Cellular Phone

The whole two-factor authentication system is a fantastic idea. However the idea ofgiving a new device to every person who needs to login to my site? Well, that justseems expensive. And given the fact that I’ve thrown out all of my grocery membershipcards and refuse to shop at those places because it makes my wallet too heavy…Idoubt that people really want to carry that stuff around.

The solution? Use the device we all have with us: our cellular phone. PhoneFactor hasa platform that does just that. It’s also free to use for an application of your choice.You can set it up for RDP, VPN, or program your web app against it. When your userslog in, they get a call on their cell phone and have to press #. If you want to tryit out without setting anything up, try getting a free MyOpenId andusing PhoneFactor as your authentication mechanism.

Personally, I still think the barrier to entry is too high, what with configurationand licensing and user training and edge cases where it doesn’t work…but hopefullygood technology options like this will push out the absurd technology options likeRSA keys and press the pricing down to the point where it really is everywhere andeveryone accessable. Then if we could just get Microsoft and Apple to build it intothe OS so that we really can authorize everywhere using easy tools from any provider.

Recursive Erudition

Programmingshould be more than just defending the world from aliens, trying to score with hotbabes, and killing all thegrandmothers in the nursing home. Programming, coding, problem solving, creating,and making the world better are all united concepts. When you scratch a place in theground for a plant to grow, or change the pH in your fish tank, or tell your childrenthat cows are called ‘horses’ so that they confuse the other kids in school when theyask for some horse milk with their lunch…when you do those things, you’re programming. Recursive erudition isa log of adventures in understanding what problems can be solved, and what riddlescan be expressed. It exists to teach and, by so doing, to learn. It exists to learnand, by so doing, to teach.

This weblog will contain explanations of how to perform various tasks with code. Iwill discuss design principles, best practices, and those evil little programmingmind viruses that spawn from head to head across the wire like something from a SandraBullock movie. There will be reviews of tools and services that I find useful. I willaggregate the more interesting articles I find around the web and provide links tothe ones I’d like to remember or share, or I may just copy a bunch of links from myRSS feed so that it looks like I’m posting (mock me if I do this). Occasionally, therewill be something funny, newsworthy, or personal…but I share those things elsewhere,so that should be rare. This weblog will mainly contain boring technical readoutsfor my world-demolishing super-weapons.

I expect to receive four benefits from writing and sharing here:

  1. A greater depth of learning: it takes a greater understanding to teach something thanit does to learn it. I will clarify my understanding of what I learn by sharing thetechniques and philosophies from the giant fire hose in my pants called The Internet.(Did you know they make those hoses out of tape? Freaky.)
  2. An opportunity to give back: there are so many folk out there who have helped me learnwhat I know so far. Their efforts have made it easier for me to get started in a demandingfield. I’d like to give something back–and I don’t just mean fart jokes. I doubtwhat I write here will be groundbreaking, or even new. However, so many of the fundamentalshave been covered completely by those who have gone before…and they’ve moved on.A rehash of years-old technology with a viewpoint from the present day may be a worthwhilerefresh of the tutorials that taught me what I know.
  3. A repository of documentation: I’m learning things faster than I can remember them.I need a place to look up the things I’ve learned and accomplished already. I willwake up every morning, like Drew Barrymore, and read my blog. I will find out thatmy parents were really hamsters, and that I married a spatula after 100 dates anda good spanking. But most of all, I won’t forget how to use a regular expression todetect valid email addresses. 
  4. Relaxation: David Allen has taught the worldthat things in your head give you stress. I want to let those nasty little Thetansout of my head. Once it’s written here, I can forget about it in safety. Writing isalso a great creative outlet, and that’s a piece of peace as well.

We’ve almost reached the top of the hour, here, so it’s time for our human interestpiece. Since I’m the only human here, I guess you’ll just have to take an interestin me. My name is Josh Rivers. I’m 35, have been married for just over a year, hopeto have my first son–or at least a lizard–in the next year, and have worked in thecomputer field for more than a decade. Half of my career has been as an independentbusiness owner and contractor. I’ve been coding since I was 10 (if-you-call-writing-password-programs-for-my-computers-using-my-first-name-as-a-password-because-it-was-cool-in-War-Games-to-keep-the-girls-from-getting-into-my-computer-programming),but my real professional focus started about 2 years ago when I started developingweb and Windows Forms applications for my I.T. Services clients. Since then, I’vegone through several memetic confusions of explosive learning, and I’ve got severalmore building on the horizon. There is so much to learn, and I love every moment ofit.

This site was made with dasBlog, ColorScheme Generator 2, and some notes from SteveTrefethen.