Sprint SmartView works in 64-bit mode on Mac OS X Lion

Not the most exciting of topics to resurrect this blog, but I hope this is helpful.

Background

I’ve been a Sprint mobile broadband customer for many years. Mobile broadband on my laptop is a godsend – flaky cafe wifi, Caltrain, airports, buses, roadside or camping emergency bug fixes, remote areas, hotels, new apartments – there are many situations where either wifi is unavailable, inconvenient, or expensive.

Some time last year, Sprint partnered with Clear and began offering WiMAX higher speed mobile broadband under the overloaded “4G” moniker. I’ll spare you the story here, but I ended up with a heavily discounted 3G/4G package, so I now have a U301 device and use both networks. Unfortunately, the 4G network has serious shortcomings – it takes several minutes to get a signal and connect, and isn’t as fast as it should be. That said, my plan has unlimited 4G and it is faster when it works, though too often it doesn’t and coverage is spotty.

The Problem

TLDR: Mac OS X Lion boots in 64 bit mode by default, rendering the Sprint SmartView crapware necessary to use the Sprint network inoperable. By various reports, Sprint estimates it will be SIX MONTHS before they release a compatible version.

As many Sprint customers who purchased new Macs or upgraded to Mac OS X Lion have noticed, the classic Sprint crapware called SmartView that powers their devices only runs in 32-bit mode. Starting it in 64-bit mode gives the error message “This application has not yet been tested on 64-bit systems. Reboot in 32-bit mode for best results” and you can’t connect.

Since February, all new Macs have booted in 64-bit mode by default, so this has been a problem for some people since then. Beta Lion releases have been available since February. Despite almost every other application vendor timely accommodating the OS upgrade, a Sprint CSR recently complained that they only received 1 day’s heads up about Lion’s release, referring to the official final release announcement. Apparently, Sprint relies on press releases and customer outrage instead of Apple’s excellent developer programs to learn of upgrade incompatibilities, otherwise they would have fixed this 4 months ago.

The Solution

For reasons unclear to me the “Run in 32 bit mode” checkbox is not available in the Get Info for SmartView. It’s possible to get a 3G connection by dumping SmartView (ahhh) and using #777 as a phone number in your connection settings, but I’m going for a full on 4G connection.

Despite Sprint’s insistance that they need 6 months to release a solution, all you need to do is upgrade a single library. Thanks to n6mod in EVDOForums for uncovering this solution.

1) Download the Clear Beta Driver for Lion. not the “Mac Driver” – download the “Beta” for Lion. And don’t install.:

2) Install Pacifist, which will make accessing and installing the necessary files easy.

3) Right/control click the Clear driver file and choose Open With > Pacifist.

4) When the Clear driver opens, drill down to Contents of CLEAR Connection Manager.pkg > System > Library > Extensions

5) Right click on BeceemAppleWiMAXAdapter.kext and choose Install to Default Location. Approve any overwrites of installed files.

6) Restart and you should be good to go. Although you will still get the warning, SmartView should work with 4G. Be patient, crapware needs time to think.

It’s going to take six months for Sprint to update this library in their software, so get used to it.

Google joins in sleazy (yet legal) tax evasion

Google is cheating you out of $60 billion dollars

Lots of business practices are considered legal but sleazy, and above-board companies won’t engage in the them even if they increase profits – from high pressure sales tactics to child labor where its legal. Why is it that companies like Google and Microsoft are given a pass on using their many-million dollar legal budgets to push the US tax burden onto the rest of us?  How do you feel about Google when you are writing a $10,000 check to the IRS with the knowledge that Google isn’t writing a $60 billion check because they have better lawyers?

By essentially not paying taxes, Google is forcing the rest of us to pay more, and they are reducing their incentive to work within the American political system to promote sensible tax reform if they object to our existing tax system.  It has to come from somewhere, folks.

Can we all please recognize that this sort of legal tax evasion is sleazy and unworthy of a company that takes “Don’t be evil” as their motto?

Fleximage rails plugin for images

I looked at a few image plugins for rails.  My requirements:

  • Arbitrary rmagick transformations
  • Automatic fetching of remote images from a url
  • Easy import from local file system
  • Handling of file uploads
  • On-demand of generation of transformed images

Dragonfly looked promising, but I first went with fleximage, because of its simpler support for local and remote file imports.  I didn’t like that it wanted images to have their own models, but since I only needed one image per model, I decided it would work with my existing models.

In the end, fleximage had some fatal flaws:

  • Fleximage generates images on the fly, with no file system caching.  This means that any time you are running without a page cache, you are doing all your transformations on every request.  That is a pain in development, and relying on a transient page cache to preserve the results of a very expensive computation is not acceptable.
  • Fleximage uses it’s own templates with a .flexi extension.  These are mapped to controller actions the same way .haml or .erb files.  Unfortunately, this is a largely useless and cumbersome step.  There is no reason to define a template and a route for a simple transform that can be declared in view, something dragonfly handles much more sensibly.  It also unnecessarily separates file types, so you need to call image_product_path(‘foo’, :png) in order to reach your image.png.flexi “template”.  The creation of a new type of template is just an unnecessary complication.
  • Fleximage only supports one image for each model, and the name of the attribute is hard coded.  This greatly limits the gem’s flexibility and in many cases necessitates unnecessary models.  The principal is that each image is its own resource and deserves its own model.  That may be true in some cases, but not in general and a gem should not enforce this convention.

Fleximage is an interesting attempt to bring RESTful conventions to image processing, but fails to be  practical solution in many cases.

I’ve switched to Paperclip, which I had not realized appears capable of meeting most of my requirements.

Quick iterations with Scala, JRebel, and Maven

As a developer who’s followed a path from Java through Ruby to Scala, I miss the quick turnaround time an interpreted language like Ruby enables: change your code, hit the up arrow on your command-line and hit enter. Despite all the debugging time and headaches type safety saves, adding a compiling step still slows iterations.  (This slows me personally down even more because I always try to jam some other activity, like writing this blog entry, into my compile times.)

One thing I don’t miss about Ruby is the console, but only because Scala has one. For you Java/PHP developers, a console is nice to have because it lets you quickly test out little snippets of code, both to verify some syntax you forgot and to test your objects.

Using the maven-scala-plugin, the free JRebel plug-in, and the scala console, I’ve been able to get pretty close to script like iteration speed.

  1. mvn scala:cc – The scala continuous compilation command is part of the maven-scala-plugin.  It saves the maven startup, compiler startup, and human command-line time.  When you save a source file, the process detects the change, and nearly instantly starts compiling.

    Unfortunately, scala:cc exits when there is a compilation error, which is annoying in practice.  I’d prefer it either waited until a file changes to start compile again, or at waited for a keypress.   To work around this, I use the following command:

    • (while true; do mvn scala:cc; sleep 10; done)

    That will keep your CPU a bit overly busy, but will save you some thought.

  2. Use JRebel.  The JRebel plugin-in, a costly but probably well-worth-it library for Java developers, is available for free for Scala developers in what I assume is a random act of kindness.  JRebel detects changes to class files and reloads them without restarting the runtime, and it generally just works.
  3. Use the Scala console to run your code. The console is easily launched using maven-scala-plugin with the command: mvn scala:console

Now every time you save a .scala file, it will be compiled.  Wait the few seconds for compilation, then run your test command in the Scala console, for instance a command-line simulation: liivid.MyClass.main(Array(“–test”)). JRebel will reload any changed .class files. The console has a convenient command line history (try the up arrow), which it preserves even after restarts.

I still can’t iterate as fast as I can with Ruby or PHP, but this is huge improvement.

As a side-note, I am playing around with the Play framework, a Java and soon-to-be Scala framework which uses some clever magic to allow interpreted language behavior in a Java/Scala web framework. I’ve been playing with it in Java, and really like it. Just change your source file and reload the browser – no need to wait for compilation. Very convenient. The Play framework is also stateless, and contains a fully integrated stack with hibernate and a built-in, production ready (supposedly) webserver – no piecing together Spring, Maven, and whatever else configs. Check it out..

Small Violin Plays: TechCrunch Criticised by Microsoft-employed Blogger

Arrington calls Obasanjo a moron

Somebody pull Arrington away from the keyboard.  Welcome to the age of the Twitter-cation, when minor celebrities can show their human side by publicly grandstanding about who is a bigger moron.

Expect general silence about this entertaining meltdown from the silicon valley digerati, many of whom pant at Michael Arrington’s every word. Most will be loathe to risk Arrington’s annoyance, since a shout-out on the TechCrunch blog is seen as a key PR turning point for a struggling startup. (The truth is TechCrunch can generate a lot of clicks and a half day of high visibility to entrepreneurial geekdom, but most of the new “users” will be valley news junkies afraid of not knowing about the next big thing and any link-love will be temporal as you’ll be on the second page in less than a day.  It’s good PR, but will not change a company’s prospects.)

TechCrunch, for the 99.9% of the world who have never heard of it, is a tech startup blog. The content is high volume, often interesting, usually opinionated, frequently critical, and heavily focused on social media. Stinging criticism of startups is often presented with god-like certainty. The criticisms are sometimes valid, and sometimes seem personal. Such is the right of a blogger.

Michael Arrington, the TechCrunch blogger, caused general LOLing today by continuing his earlier lashing out about Dare Obasanjo, a far less visible blogger, for poking at TechCrunch for being too negative on the influences of economic capitulation on startup-dom.  Arrington accuses him of representing Microsoft’s attempts to discredit TechCrunch, despite the fact that, although Obasanjo is a Microsoft-ee, his blog does not seem to be Microsoft focused.

See for yourself.   My favorite:

@MossyBlog settled down, gave it some thought, and I still think you’re a moron. and oh yeah, I just uninstalled silverlight. jerk.

The story goes like this:

  1. Hotshot blogger criticizes lots of companies, says their technology is inadequate or predicts failure.
  2. Blogger employed by Microsoft uses his personal blog to criticize said hotshot blogger for being negative.
  3. Hotshot blogger upset that he was criticized and makes a scene about evil Microsoft conspiracy to crush him.
  4. Companies that hotshot blogger criticized scratch chin.
  5. Hotshot blogger uninstalls Silverlight.

UPDATE:  Arrington cancels Microsoft coverage:

TechCrunch Microsoft asked us to live stream a Ballmer talk after the PDC. Accepted last week, just canceled. We have better things to cover.

Michael Arrington about 5m ago via web

Take that Ballmer!

Google IO Notes

(This post is a work in progress and probably contains mistyping and perhaps factual errors.)

My brief take:

  • GWT is awesome.  With the new version, the Javascript generated from your Java code will almost universally be better or at least as good as the Javascript you would write.  You also get incredible leverage you get toward targetting different platforms (including iPhone and Android,) and the productivity and satisfaction boost of using advanced development tools that give you refactoring, autocomplete, and no spelling mistakes – features only possible with strongly typed languages like Java.  Lombardi demonstrated a sophisticated process diagram application that they developed 3 times on different platforms (Flash, Dojo, and finally GWT.)  Their experienced conclusion was that you lose nothing by using GWT.  GWT doesn’t really hide anything from you – it just gives you Java and gives you the leverage of virtualizing your Javascript.
  • AppEngine is a great platform, especially for startups since it’s free up to 5 million page views per month.  Here are a few bullets.
    • Learning the AppEngine datastore concepts (e.g. “entity groups”) might be tough for many people, and you need to follow some distributed programing techniques, unfamiliar to most web developers, to build scalable applications.
    • Python is back!  AppEngine is Python only for the forseeable future, so Django – an excellent web framework – is the likely platform for traditional web applications.
    • Serious limitations in the current version:
      • No full text search.  There are some hacks to get close right now, but it’s no Google.  This features is likely to be added.
      • No long running processes.  Your requests are limited to 5 seconds and a smidgen of CPU.
      • No data import or export.  You will need to do everything through requests.
      • No outgoing requests.  You can’t open a socket, but there is supposedly a curl library.
      • 500Gb of storage.  This only should be a limitation for a very few people.  If you have media files, store them on S3.  If you’ve got that much user data, maybe you should work on making money instead of porting your app.
      • No way to exceed the 5 million page quota, although estimated pricing for future versions was revealed at around 10-12 cents per CPU hour.
  • Android is pretty darn cool.  I didn’t spend much time at these presentations, but the demos had some features that put the iPhone to shame.  I loved the pull down status bar.  Touch and pull down and the status bar shows expands to detailed interactive versions of your notifications.
  • New APIs for YouTube, a Google Earth browser plugin, and a number of other presentations were compelling, but were not in my area of interest.

Does craigslist have a Case?

Regardless of your opinion of the ethics involved in either party’s conduct, craigslist’s case against Ebay seems to be based entirely on the fact that they feel betrayed.  There is no doubt in my mind that Ebay behaved poorly and manipulatively gained the trust of Craig Newmark and Jim Buckmaster and has been trying to stab them in the back ever since.  However that does not mean that Ebay will lose any rights they may have to acquire more of craigslist.  I’m going to attempt a layman’s analysis.  You guessed it, I’m not a lawyer – I just play one in my blog.

craigslist’s claim is that Ebay backed a cement truck over the feel-good intentions they layed out during “negotiations.”  I put “negotiations” in quotes because it appears as if craigslist had no say in what actually happened, despite the appearance that they were an actor in the talks between the former shareholder and Ebay.  This is apparent because Ebay ultimately purchased an option without the involvement of craigslist, and craigslist executed the option without objection.  At that time, craigslist was not yet comfortable with the acquisition.  Why then would they have gone along with the purchase if they actually had veto rights over the transaction?  It appears that while the former shareholder and craigslist made efforts to have an agreeable sale, that was really just out of the generosity of the former shareholder – a generosity which ultimately ran out when a multi-million dollar check was handed to him.

If I’m wrong and craigslist grudgingly went along with the sale, even with the power to stop it, then Craig and Jim were seriously hoodwinked by far more savvy professional business people.  Perhaps at the time Craig and Jim did not understand how companies, and public companies in particular, work.  Board members and executives turn over rapidly and are pushed around and out by demanding shareholders.  If the people running the show are turning down money because they made some vague oral promises to some company they invested in, shareholders will apply pressure and those executives will change course or be disposed of.  Any feel-good vibe does not mean a thing when transacting with a large company, and you believe any such vague promise at your peril.

Warren Buffet likes the saying “only invest in companies that an idiot could run, because eventually one will.”  A corollary might be, only enter into business transactions where it is still to your advantage if your partner becomes your adversary.

The craigslist motion is an interesting read, but it feels more like an appeal to good taste than a legal proceeding.  Based on that feeling, and a lack of substantial concrete violations, my intuition is that they have a weak legal case and are therefore making their case to the public.  They will succeed in temporarily getting Ebay off the board, stopping the deceptive advertising, recovering some damages, and perhaps limiting some shareholder request rights, but any economically valuable shareholder rights are unlikely to be terminated.  My sense is some powerful shareholder options are the real target here, but the private nature of the companies leave that unclear.  I have positive, but mixed feelings about craigslist and the way it is operated, but like Craig and Jim, I think an Ebay acquisition would be detrimental to the public.  Unfortunately, unless there are antitrust issues (which are extremely difficult to prove,) public interest is not the basis for decisions in these sorts of civil proceedings.

Links:

Advantages of EC2

I have been using Amazon EC2 for a number of months now to host CribQ.

In a few words, EC2 allows you to spawn virtual servers whenever you need them and pay for them by the hour.

I thought it would be helpful to post a list of pros and cons based on my experience.  This is in response to a question about shared hosting, so the response is somewhat in that context.

Pros:

  1. No long term commitment.  You’re paying by the hour.  ($0.10 – $0.4o cents)  Your balance sheet will thank you.
  2. Internal expertise.  As opposed to using a shared host, you will have the internal expertise to set up your system from scratch, whether you choose to start with a LAMP image or a base Linux install.  There are many many free public images that will get you started, and may require little modification to run your application.
  3. Play space.  You can create additional instances of your application for load testing (client and/or server), testing new architectures, rewrites, versions, etc.  I especially like the ability to create load testing clients, something that is very hard to do cheaply any other way.  How else can you pay $1.20 for 3 hours with 4 CPUs and free bandwidth to load test your application.  (Make sure to use the internal IP address to get the free bandwidth.)
  4. Scaling.  You can easily scale vertically (upgrade to a larger 2 or 4 CPU instance) or horizontally (add instances).  Rather than trying to predict your needs, if you understand how to scale on EC2, you can scale as your demand picks up, and even scale dynamically from hour to hour.
  5. You get tons of RAM.  A small instance has 1.7Gb.  A large instance has 7.5Gb.  Compare that to what you get with other virtual hosts.
  6. You can more easily and cheaply leverage S3 for backup, storage, and serving of large files, and even SimpleDB for persistent storage.
  7. They have excellent bandwidth.
  8. Less worry about hardware failure.  Failures do occur, although it should occur less often than a dedicated server, and recovery is much easier.
  9. No CPU throttling or other usage limitations.  At a shared host, it is common practice to kill long running scripts that are using significant CPU.
  10. Dedicated IP address.  It’s yours and yours alone, as long as you keep your instance running.

Cons:

  1. No static IP addresses.  You’ll need to look around and decide on how you want to manage this.  Hopefully Amazon will address this problem soon.  Basically if you change to a new instance, you will probably also get a new IP.
  2. No international presence.  S3 storage can be located in Europe, but everything else is in the US – all in Seattle I think.  If you’re running a site targeted at Hong Kong, EC2 is not your best choice.
  3. Virtualization does have a performance impact.  You are not getting something as fast as the specs would indicate.  The difference depends on what your doing and you’ll have to read around about this.
  4. Lack of “persistent” primary storage.  This is a bit of a red herring, but if you shut your instance down you will lose the main storage where you database most likely resides.  You must explicitly back up your data.  I view this as a positive because it forces you to have a good backup/restore process, and S3 is knocking on your door.   Equate the extremely low chance of instance corruption with primary hard drive failure and you would be in the same situation.
  5. Not the cheapest option.  The price starts at $72/month for a single CPU instance.  Shared hosting can be as low as $6/month.
  6. Lack of support and management tools.   You’re not buying into a full service shared hosting solution with frequently updated install scripts and 24 hour support.

The Value of Paid Links

Patrick Altoft asks if people ever report paid links.

I’ve never reported paid links.  The idea had never even occurred to me since I’ve never been encouraged by a search engine or anyone else to do so.   It seems to be one of those things that you only know how to do if you are somewhat obsessed with the issue, like the four people who complain about wardrobe malfunctions when most people just shrug.

Beyond that, paid links are a form of advertising.  I don’t see how they are inherently wrong.  I think it is much more valuable to report splogs – sites with no original content and sometimes no meaningful content – that exist as advertising venues.  These do far more to ruin our collective experience than paid links.  How can I report splogs?

Some very respectable directories (e.g. Yahoo!) charge for the pleasure of being in their directory.  This serves a few purposes:

  1. It destroys the economics of splogging and provides a first-level quality filter.  Sites that exist only to provide referral traffic would hopefully be priced out and newer sites that have real content, and few incoming links, can pay to be seen.
  2. It allows high quality directories like Yahoo! to recover their costs when verifying that a site has legitimate content.  In theory, this should improve the quality of the directory.

In fact, and this is just a theory, it may be that if paid linking were more widespread, it might balance some of the overblown voices of the new media elite (e.g. the 100 top Diggers and Commander Taco,) and push splogs to the bottom of the results.  New voices could pay to be heard.  If no one liked what they said, they would have to keep paying.  If people did like it, the new site would get organic links and may be able to stop paying.  Sounds like a decent result to me.

As someone who is trying to build traffic to a new site, paid links can offer an attractive way to get some early users.

Back in the olden days, the old-timers felt the internet was dying when advertising first appeared on the inter-web.  Today, Google is making billions by putting advertising next to your baby photos and no one seems to mind.  My belief is that paid linking and even paid blogging will gain acceptance once the ethics of disclosure and honesty are better understood.