Posterous theme by Cory Watilo

Filed under: Editorial

Don’t plug your Clear Wireless Modem into your Macintosh

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.

Media_httperuditionra_zzsia

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.

Media_httperuditionra_ifqng

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 wonder if I even know what I’m talking about. The problem with StructureMap, IoC, and dependency injection really seems to be that the jargon for the patterns is so manifestly true that once you learn what the hell you are doing, you are completely unable to stop talking about it in shorthand. And that shorthand makes absolutely no sense to someone who hasn’t absorbed the patterns. Keep plugging, people. Once you do it, you’ll get it. Then you’ll be there and not be able to explain to other people why you’re so right. It’s like being Tom Cruise and needing to explain scientology.

Anyways.

I learned two things today. The first is how to hook all of my concrete generic repository types together with their interfaces. I had been adding a line of configuration for each 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 object registry 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(T
entity)
{
return;
}
}

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

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

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

Learn a Language Each Year

There’s a piece of advice that floats around, apparently from the Pragmatic Programmer, 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 over in 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 years getting excited about Ruby. Not only are they developing their own Ruby runtime, but the dynamic features of C# 4.0 coming in VS2010 are obviously being designed to keep developers from jumping ship. We need to learn to think like Ruby coders to adapt 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 frameworks on Windows, Linux, and the Mac…soon life will be nothing but champagne and swimsuit models!

Are Microsoft Certifications Irrelevant?

As of now they are for me. Apparently Microsoft has been developing heuristics to detect people who use inexpensive practice tests and study materials. They threaten to ban you from any 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--usually marketing-centered--trivia. However, in the past, I've succumbed to one pressure or another to getting a certification. I'm done now. I don't need to give Microsoft money for 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 of giving a new device to every person who needs to login to my site? Well, that just seems expensive. And given the fact that I've thrown out all of my grocery membership cards and refuse to shop at those places because it makes my wallet too heavy...I doubt that people really want to carry that stuff around.

The solution? Use the device we all have with us: our cellular phone. PhoneFactor has a 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 users log in, they get a call on their cell phone and have to press #. If you want to try it out without setting anything up, try getting a free MyOpenId and using PhoneFactor as your authentication mechanism.

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

Recursive Erudition

Programming should be more than just defending the world from aliens, trying to score with hot babes, and killing all the grandmothers in the nursing home. Programming, coding, problem solving, creating, and making the world better are all united concepts. When you scratch a place in the ground for a plant to grow, or change the pH in your fish tank, or tell your children that cows are called 'horses' so that they confuse the other kids in school when they ask for some horse milk with their lunch...when you do those things, you're programming. Recursive erudition is a log of adventures in understanding what problems can be solved, and what riddles can be expressed. It exists to teach and, by so doing, to learn. It exists to learn and, by so doing, to teach.

This weblog will contain explanations of how to perform various tasks with code. I will discuss design principles, best practices, and those evil little programming mind viruses that spawn from head to head across the wire like something from a Sandra Bullock movie. There will be reviews of tools and services that I find useful. I will aggregate the more interesting articles I find around the web and provide links to the ones I'd like to remember or share, or I may just copy a bunch of links from my RSS feed so that it looks like I'm posting (mock me if I do this). Occasionally, there will be something funny, newsworthy, or personal...but I share those things elsewhere, so that should be rare. This weblog will mainly contain boring technical readouts for 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 than it does to learn it. I will clarify my understanding of what I learn by sharing the techniques 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 learn what I know so far. Their efforts have made it easier for me to get started in a demanding field. I'd like to give something back--and I don't just mean fart jokes. I doubt what I write here will be groundbreaking, or even new. However, so many of the fundamentals have 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 worthwhile refresh 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 will wake up every morning, like Drew Barrymore, and read my blog. I will find out that my parents were really hamsters, and that I married a spatula after 100 dates and a good spanking. But most of all, I won't forget how to use a regular expression to detect valid email addresses. 
  4. Relaxation: David Allen has taught the world that things in your head give you stress. I want to let those nasty little Thetans out of my head. Once it's written here, I can forget about it in safety. Writing is also 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 interest piece. Since I'm the only human here, I guess you'll just have to take an interest in me. My name is Josh Rivers. I'm 35, have been married for just over a year, hope to have my first son--or at least a lizard--in the next year, and have worked in the computer field for more than a decade. Half of my career has been as an independent business 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 developing web and Windows Forms applications for my I.T. Services clients. Since then, I've gone through several memetic confusions of explosive learning, and I've got several more building on the horizon. There is so much to learn, and I love every moment of it.

This site was made with dasBlog, Color Scheme Generator 2, and some notes from Steve Trefethen.