About Tom Evslin

Video Profile of Tom Evslin

Follow Tom Evslin on Twitter


subscribe:

Add to Technorati Favorites!
Powered by TypePad
Member since 01/2005

technorati


« March 2008 | Main | May 2008 »

JavaScript or PHP – Why It Sometimes Matters

It's all about whose computing power gets used – yours the application provider or yours the end user. If you're the user, you probably don't care since you are waiting for your browser to show you something in either case and you already paid for your computer. If you're the application developer, you may care a lot because you have to pay for server processing cycles one way or the other but you don't have to pay for user machine cycles.

If you are not involved in providing web applications in any way, you may want to bail out of the rest of this post at the end of this paragraph. Before you go an interesting factoid is that PHP stands for "PHP: Hypertext Preprocessor" – the acronym is recursive. Of course, if you're not a nerd you may not think this is interesting so I'll give you one more factoid. You may have noticed that many web addresses end with ".php". These are web pages that are created on the fly on servers using PHP. Pages which are more static OR are made dynamic on the user machine often end with ".htm" or ".html". Now you know.

OK; only us nerds are left now. You all know that a page which is pure HTML is pretty static; appropriate for lots of things but pretty static. But you also know that you can add some JavaScript and have the page become interactive; even better, you can use AJAX (Asynchronous JavaScript and XML) and load all kinds of data into an existing page to create an interesting and dynamic application. This data doesn't even have to be XML.

Pretty much anything you can do with JavaScript on a user's computer you can also do with PHP on your own server. The two languages are similar so the complexity's about the same either way. One huge exception is that you can't do anything with PHP that requires lightening fast interaction like reacting to a mouse-over, a click, or a key-press instantaneously. All PHP interactions gotta go from the user's computer to the host and back and that takes noticeable time.

One thing that you can do in PHP on your server that you can't do in JavaScript is load data or XML from domains other than the one the current page or iFrame was served from. That can be a significant limitation. You also can't keep your code secret if it's JavaScript; it's there in source form on every user's computer. You may want to keep it secret either because it's where your value comes from OR because it would be a security risk to you or the user to expose the code.

Many APIs like the Facebook API or the Amazon S3 API assume that you have a server at your disposal. I did manage to use S3 and maintain necessary security with only a client application and no server but had to jump through hoops to do it (see Amazon S3 – Backstory for Nerds - Part 1 and Amazon S3 – Backstory for Nerds – Part 2). 

In many ways it's easier to test and debug using PHP than JavaScript. The problem with JavaScript is that different browsers treat it differently. You sometimes have to ask in the code what browser you're supporting. You have to do extensive cross-browser testing. I spent (wasted) most of today on a problem caused by the fact that Firefox fills in the "Content-Type" header in an HTTPRequest and IE doesn't. The PHP you run on your server is going to execute the same way no matter what browser the user has – of course, the resultant HTML may not image the same way but that's a problem no matter how you do you development.

You can mix JavaScript and PHP so you can use each to get around the limitations of the other.

That gets us back to whose CPU cycles do you want to burn. If you're planning to have a blockbuster virally-spreading world-changing application (which, of course, you aren't going to charge for) then you don't want to have to buy a huge server farm. You can outsource to Amazon EC2 or perhaps use the Google apps server; but millions of users are still gonna be expensive to support. That'll often be a good reason to use JavaScript and the user's cycles rather than PHP and cycles you pay for. The user isn't hurt by this because she's already waiting for her machine to do something and just wants it done fast – it may, in fact, happen faster with local JavaScript execution than if an interaction with the server is required.

The P2P services, including Skype and BitTorrent and Napster, all rely on user resources – both bandwidth and computing power. My guess is that many web services running in browsers will be successful because scalability is instant and "free" when each user's machine provide the resources to handle most of the incremental load that user represents and when the bandwidth for communication between application and server is used sparingly. That's a big reason for doing as much in JavaScript as you can.

Vista Misery and Mysteries

Wasn't planning to install Vista on my new Toughbook CF-30 because it's been hard to deal with on Mary's new HP; but I did and now have both some misery and an Internet Explorer protected mode mystery which I'd be glad for nerd help with.

I liked the fact that the new Toughbook came with XP installed plus recover DVDs for both Vista Business and XP. That meant, I thought, that I could give Vista a while to stabilize and then install it. Unlike Mary's preinstalled Vista Home, I knew I could even uninstall Vista and reinstall XP since I have the business edition and Panasonic supplied me with both recover DVDs including all the crucial drivers needed to go back and forth.

But then the fine print: you have to wipe your hard drive of all content to install Vista. Do I want to spend weeks getting things the way I want them on a new machine, run a couple of months with XP, then start all over again with Vista and a "clean" machine? No, I decided, since I have nothing of mine on the machine now, this is the time to install Vista. Then I'll get the Vista version of everything.

Right now I'm regretting the decision. And looking for nerd help with a mystery.

Vista is running and isn't noticeably slow on my new machine; it hasn't crashed. That's the good news.

But Vista seems determined to protect me from myself even though I run with administrator privileges.

At first I couldn't get any ActiveX extensions to install. The yellow bar above the browser window which usually warns me that I've clicked on something which wants to install an ActiveX extension now didn't give me the options of installing; it just told me that my security settings didn't permit ActiveX extensions to be installed; this despite the fact that I'd deliberately clicked an option to prompt for permission before installing an extension. Couldn't even get Microsoft's own software verification extension to install to get the latest fixes to Office 2007.

Turning off "Protected Mode" in the browser let extensions install (but without a warning which I don't like either). Then, while trying to figure out why there were no time-wasting games like minesweeper around, I discovered (by Googling, of course) that you can go through Control Panel/Programs/Programs and Features to "Turn Windows feature on and off". This not only lets you turn games on; it also lets you turn on the ActiveX installer service. I've verified that games instantly appeared; haven't stumbled across an uninstalled ActiveX component since so not sure this is working properly.

But here's the mystery:

Web pages that used to work fine including basic Facebook pages now SOMETIMES break because, according to IE, it can't load a DLL (doesn't say which DLL). This never happens when Protected Mode is turned off. It doesn't get cured by a reload but sometimes the same page WILL load without an error much later even when I know the HTML of the page hasn't changed. It never happens in Firefox but Firefox doesn't have a Protected Mode. If it happened in Firefox, it'd be easier to debug because of Firebug. It doesn't seem to happen in Protected Mode on Mary's machine because some of these are pages she goes to often and she hasn't complained (but she's running Vista Home). I can't run a parallel test or compare all the settings on our machines because she and her machine are traveling.

It's not a solution for me to just run Firefox or run in unprotected mode because, as a developer, I need to know why pages sometimes break. If they break for me, they'll break for other people as well.

Haven't been able to Google my way to a solution or find one on Microsoft's site.

Ideas anyone?

Why Old Computers Get Slow

My Toughbook CF-29, bought back in 2004 when I left the corporate world and expected to spend many days in physically tough places, has been getting slow. Mouse clicks and resulting actions are increasingly far apart. Windows open blank and don't fill in for eons. Programs go into non-responding status; sometimes they recover; sometimes they don't. Rebooting temporarily speeds things up but it takes longer and longer to shut down and restart.

Why? You ask. The speed of light hasn't changed. The circuits can't be slower than on the day you bought the thing. Why are old computers slow computers.

A small part of the problem is barnacles. Most of the problem is that programs are written for the average two year old machine and its capabilities. The old computer bogs down under limits of memory and processing power when asked to do tasks designed for its more modern successors.

The barnacles are all the stuff you installed over the years and probably aren't even using anymore. Inactive programs don't do any harm except take up disk space but some of what you installed, printer and communication programs and drivers for example, have a small part which loads itself at startup and absorbs resources all the time the machine is running. With some trouble (and some tuneup utilities I've never tried), you can find these and turn them off. If you don't, they absorb more and more memory and processing power. There is some "printer subsystem" on my old Toughbook which reports its own failure every couple of hours and asks permission to tell Microsoft about the problem. Microsoft doesn't offer any solutions when told and the failure of this subsystem doesn't seem to affect my printing; but it's there somewhere.

When I bought the old Toughbook I installed as much RAM (memory) as it would take: 512 megabytes; seemed huge to a guy who wrote programs for the 128 kilobyte Mac (the first Mac) and 16kb TRS-80 model 1. (a megabyte is a thousand kilobytes). "My" first computer was an IBM 7090 the size of a basketball court with the equivalent of about 156kB. It cost millions of dollars. But I've digressed to my age… back to the old computer.

The CF-29 has a single processor which runs (walks by today's standards) at 1.3GHz. It has a 40 gigabyte hard drive which is almost full.

When I first used the machine I had one window open on the Internet most of the time. Now I have at least six tabs open in Explorer – because I can. I've gotten a bigger screen and, when at my desk, I have windows spread across two screens for easier cross reference and cutting and pasting or perhaps because I have code in one window and I'm watching how it runs in another window. Whatever, I've got more stuff running at one time.

There isn't enough memory on my machine for all this stuff to be running at once so Windows puts some of it in "virtual memory" – really on disk from which it must be reloaded before use. Often it is clear that my computer is "thrashing" – the technical term for swapping pages in and out of memory so often that it can't do any real work. Picture a hundred people trying to work on something in a room with only space for ten; every time someone else is needed for the task at hand; someone has push his way out so someone else can push her way in. But the guy who went out hadn't finished so he reenters and pushes someone else out. Pretty soon it's all elbows and no productivity. That's my computer.

Programs like Google Earth and Sketchup assume that my computer can draw lightening fast. It can't at the resolutions they're feeding it. Turning the scroll wheel for zooming a graphic image results in a jerky ascent or descent like a rocket with misfiring engines.

Web pages now contain incredibly elaborate Javascript – easy to write; cool to use; but a big burden on an old CPU to interpret and execute. Then there's Flash. And videos embedded in everything. You can almost hear that lonely old CPU groan.

So that's why it's time for a new computer. My new Toughbook CF-30 (I still plan to go to all those tough places) has 4 gigabytes (4 billion bytes) of RAM (although Windows can only see 3.3 gig). It has an 80 gig hard drive. It has TWO processors each screaming along at 1.6GHz. It has more auxiliary graphics processors to take the load off the main processor. It has an embedded EV-DO radio and GPS to reduce the clutter in my gadget bag.

And it has Vista… So far not at all to my liking.

Testing Office 2007

Meant to start this series on moving to a new computer (gulp) and upgrading to Office 2007 (gulp, gulp) and Vista Pro (GULP!) in an orderly way with a post on how computers get old and slow. But when I told the new Microsoft Word that comes with Office 2007 that I wanted to create a new document, it asked me if I really meant a document or a blog post. Well, this is meant to be a blog post so…

Word asked me, reasonably, who my blog provider is – it's TypePad – and then for my TypePad ID and password; it warned me that these would be transmitted in the clear. Since I have several test blogs on TypePad as well as Fractals of Change, Word asked which one I wanted. Maybe I should have started with one of the test blogs but what the hell… let's give it a try.

If you read this post, it is possible to go directly from Word to a post without cutting and pasting. I'll let you know what steps intervene after I click the Publish icon.

Reset#1: After I clicked Publish, I noticed two typos and that there is an Insert Category button. Clicked cancel. Word became unresponsive for a while according to Vista but did recover and say that the blog service provider wasn't responding.

Clicked Insert Category; got back my category list from Typepad (nice) but can only choose one category even though TypePad makes it possible to choose several (not nice) but will continue the experiment.

Reset#2: OK. It did publish; in fact, so did my previous attempt. There is an Open Existing option so have done that and now am presumably editing and able to repost. Tried to use this option to delete the earlier post but can't do that (no big deal). Will try reposting by clicking Publish again. Then will go directly into TypePad to add more categories and Technorati Tags (too bad but not critical).

Just saw an option for handling pictures (imbedded, I hope) by uploading them to the blog provider (default) or somewhere else (which the documentation says can be anything with a public URL including Flickr). Will insert a picture below and leave the default to have it hosted at TypePad. Hmm.. scaling only gave a choice of 1% (maybe for a thumbnail?) but could simply specify a new height and the width adjusted to keep the aspect ratio. We'll see what happens.

 

Vermont Files in Support of Using White Space for Mobile Broadband Access

The Vermont Public Service Department and the Vermont Telecommunications Authority have joined in an ex parte filing at the Federal Communications Commission urging that the Commission “move expeditiously to adopt the necessary technical parameters … and help make this promising technology [use of the so-called ‘TV whitespaces’] a reality.” Given that the docket has been open since May of 2004, a little expeditiousness is certainly in order.

“TV white spaces” is the term used by the FCC but it’s a misnomer; no broadcaster has actually paid for any of the spectrum at issue; no one is using it; in short; it’s wasted. Originally, before cable and satellite TV and before the Internet, it was reasonably believed that this spectrum would eventually be occupied by a proliferation of over-the-air stations. That’s not gonna happen. Vermont has as much radio spectrum “reserved” for over-the-air TV stations as New York City – 50 channels worth. That “reserved” spectrum is not of any use to anyone and won’t be until the FCC promulgates some rules for its use.

The filing explains the many reasons why this spectrum is ideally suited to meeting the needs or rural America for much better broadband and cellular coverage:

“First, rural areas like Vermont have relatively fewer TV broadcasters and therefore more unused ‘white spaces.’ Moreover, rural communities also have the largest geographic areas without access to wireless services. Second, the ability of TV frequencies to propagate over great distances and difficult terrain provides an opportunity to reach locations too economically challenging for existing wireless services. Third, the use of TV ‘white space’ for the provision of rural broadband is an alternative means of accomplishing the Commission’s universal service goal of deploying advanced services to all areas of the nation without requiring additional funding mechanisms. In fact, the use of TV ‘white space’ could actually decrease the demand for universal service funding at a time when the level of funding is facing heightened scrutiny.”

The filing makes clear that the petitioners do NOT think that this spectrum should be auctioned off at a high price. The greatest public good will come from making these public resources available “at low or no-cost to those entities willing to utilize them for such purpose [broadband and mobile access].”

It will take the concentrated political power of rural America to free up this spectrum to meet the rural need for better communication. But this isn’t urban vs. rural; urban areas also have something to gain from better spectrum availability and nothing to lose.

Not to over-dramatize but I see this as the public interest vs. entrenched communications interests. The TV industry would like to sit on this spectrum without paying for it “just in case”; they also may be worried about Internet use of the spectrum becoming a competing “channel” for delivering entertainment. Traditional communications carriers benefit from LACK of competition in the US broadband market; they have no reason to want to see competition growing like weeds (or, more accurately, like WiFi) in fields of open spectrum.

Google and other “Internet” companies do have an interest in keeping their paths to the consumer unblocked; competition would be good for that. This post is about a proposal Google has made for putting the unused white space to work.

Disclosure: My wife, Mary Evslin, is Chair of the Vermont Telecommunications Authority.

Auditioning for New Roles

Below I am practicing to supplant pigs and toasters as a screensaver.

Screensaver

In case that doesn't work, I could always be a demo dolly (what's the masculine of that?). I'll buy a BUG like the one I'm demoing below for anyone who can correctly identify the polo shirt I'm wearing in this picture before the end of April.

Bugatkinnernet

If all else fails, it's back to email.

Kinnernetme 

All pictures are from Kinnernet 2008. Great fun as usual.

Cordless or Wireless? Good Question

We don’t do spring here in Vermont so now it’s summer although there’s still plenty of snow gleaming in the mountains. Time for me to work outside (at least until we get our obligatory late season snowstorm).

My cordless phone is scratchy by the time I get out on the deck; it doesn’t like being that far from the base station. The WiFi isn’t great on the deck either.

I could move the base station for the cordless phone and install a repeater for the WiFi signal. Last year I used my antenna and high-power WiFi card to make WiFi work right outside. But that’s all a lot of trouble.

Instead I made my calls using my wireless (aka cellular) phone. And I put the EVDO USB modem in my computer and just used that for connectivity. Since I never use my 500 wireless minutes each month nor the 5 gigabytes per month included in my EVDO account, it doesn’t cost me anything incremental to be in my travel configuration while on the deck; and it’s a lot more convenient than making the house radios have good coverage outside.

So here’s the question: will there come a time when we don’t install our own little radios for voice and data at the end of the wires, cables, or fiber that comes into our houses? Will we just pick up the same signal from our carriers that we use when we’re traveling inside the house as well as on the deck and in the car?

Clearly WON’T happen unless the carriers lower the prices for cellular and EVDO and lift the volume limits. $99/month for unlimited talking on Verizon Wireless or AT&T is a lot more than $24.95 on Vonage which also includes reasonable rates on international calling. 5 gig would disappear pretty soon if I were doing my nightly over-the-net backups and watching MLB.com on EVDO. Moreover EVDO isn’t really fast enough for lots of web stuff.

The conventional wisdom is that eventually voice and data will come over a fiber into the house and then be distributed wirelessly thoughout the house and maybe the yard and that mobile needs will continue to be met by different technology at a higher price. Maybe the conventional wisdom is right but it’s always worth questioning.

I think there’s a strong probability that not just the last 100 feet but the whole last mile will be wireless in many places. Radio technology is advancing very quickly. There would be plenty of spectrum IFF (and it’s a big IFF) there were regulatory reform to allow use of whitespace and make much more spectrum open. As we (and our computers) spend more and more time connected, we’ll be more and more impatient with having to switch connectivity modes when we walk out the front door.

That would mean no communication wires, cables or fibers coming to most single family residences. That could also mean true competition in communication services just as cell phone service offers more choices, more competition, and more innovation than landline service does today. It’s hard to make a business case for duplicate networks to each house; much easier to make the case for competitive radios, even on the same towers.

Just a speculation.

What Would Success Look Like in Iraq?

How about an end to private militias? That’s pretty important to the kind of success in Iraq that lets most American troops leave knowing that they’ve helped make the world a safer place. How about a Shiite-led government cracking down on Shiite militias while Sunni tribes turn on Sunni al Qaeda? That would be pretty good.

And how about an Iraqi army that quickly corrects its mistakes, flushes out its non-performers, tries again and succeeds? An Iraqi army that can provide security for Iraqis by itself? Wow, that would be great.

There’s plenty of reason to be cynical about apparent good news coming out of Iraq. All of the many sides (including ours) have good reasons and bad to spin the facts as much as they can, especially in the run-up to the American presidential election. Nevertheless, there are reasons to be hopeful as well, whether or not you think we should have invaded in the first place.

If it was a bad sign that Iraqi government forces didn’t flush the Mehdi army from Basra when they tried a few weeks ago, it’s got to be a good sign that they regrouped and apparently succeeded rather easily at taking control of the city this time. Sure, they had help from the US and UK; but there isn’t any question that the ground forces were overwhelmingly Iraqi.

The fact that Muqtada al-Sadr, apparently somewhere in Iran, claims to have ordered his forces to surrender their Basra headquarters indicates that that he didn’t have much of an option. His threats to end the truce he formerly “proclaimed” while his people are already fighting in Sadr City, Nasiriya, and, until very recently, Basra mean either that he has little control over his forces anyway or that he doesn’t have the means for a stronger counter-attack (I could be tragically wrong about this, of course; but I hope not). It’s a good thing that this very anti-American cleric seems to be losing power.

It’s puzzling that Iran praised the Iraqi government’s action against al-Sadr, whom they shelter and probably helped arm. That could be an ominous sign that the al-Maliki government may be too much under the control of Iran. Or it could simply mean that, for the moment, US and Iranian interests happen to coincide – probably not something we can build on.

All the many sides have their own reasons for continuing the power struggle in Iraq – not least among them that none of them can be sure of their fate if the other guys win. At a strategic level – which probably doesn’t matter much on the dangerous streets, the importance of influencing the American electorate is huge. If the situation appears to be deteriorating further, it’s likely that the next president will be someone committed to a rapid pullback of American troops; if the aftermath of the American surge is what looks like real progress (which eventually means an orderly withdrawal of most troops), then the next president may be McCain who will keep up the fight. (I’m not making a political statement; just analyzing the situation. I actually think we have a lot of important issues besides Iraq which ought to determine who is our next president.)

It’s important that we be as shrewd as we can be in recognizing both failure and success in Iraq. The original invasion was a huge success; the aftermath was a dismal failure of both planning and execution; the surge appears to have been helpful; now what’s happening? Our press needs to be as objective as human beings can be. We can anticipate efforts by those hostile to our presence to influence our election with a violent “surge” of their own which will be, like the Tet Offensive so long ago, either a sign of enemy desperation or of our inability to control events on the ground.

I wouldn’t presume to say how this story ends but am watching with an open mind and a little bit of hope.

FeedBlitz, Gawker Media, and Amazon S3

FeedBlitz (in which I’m an investor and board member) recently announced that all Gawker Media sites are offering weekly updates of their top five stories via FeedBlitz-generated email. Gawker needed to be able to customize the look-and-feel of the newsletters which go out to match the appearance of the individual sites and needed to be able to let readers manage their own signup, email address changes, and unsignup; FeedBlitz is an answer to these needs.

Not coincidentally, FeedBlitz CEO Phil Hollows also blogged that FeedBlitz has begun using Amazon S3 for many of its storage needs. Huge potential traffic from Gawker properties and similar megasites makes it essential to be able to scale fast but impossible to predict how fast. S3 is an answer to these needs (I have no financial interest in S3 but am fascinated by its potential to enable rapid prototyping and scaling).

Phil describes Gawker this way: “Gawker sites… are well written but often irreverent, somewhat profane, sometimes politically incorrect and frequently deal with topics you might not want to discuss with your mother.” They include Valleywag, Lifehacker, Gizmodo, and Defamer among many others and are, to say the least, often visited. To see how closely Gawker was able to reproduce the graphic elements of the websites in the automatically generated email, look here for a Valleywag sample and here for Gizmodo.

FeedBlitz is sending out more than 3 million emails (double opt-in emails, not spam) per day. In the old days when a company grew, it brought operations inhouse in order to save money – it verticalized. That was then and this is now. The fastest way for FeedBlitz or any other modern company to grow is to outsource everything that’s not a core competence. So FeedBlitz moved all of its image and script-serving to Amazon S3 rather than just keep buying bigger and bigger servers. Total bill at this point: about $3/day for a significant amount of both storage and traffic. And Amazon’s multiple connections to the Internet backbone and replicated database can serve this stuff up much faster than any local hosting site or a (shudder) in-company data center. No matter how fast FeedBlitz grows, its growth will be easily absorbed within the Amazon cloud. FeedBlitz engineering is free to concentrate on adding new functionality for publishers of newsletters as it worries less about pure scaling of existing functionality – often an Achilles heel for fast-growing services.

Phil says: “If you're running a site or service that is going to get big, I'm now of the opinion that you're nuts not to outsource to S3 or a similar service to store and serve objects that aren't core to your value add. It's faster, better and cheaper and whole lot less hassle. Do it!”

Third Life: Social Networking Breakfast with Jeff Pulver

“It’s like Facebook only it’s not online,” someone at Jeff Pulver’s social networking breakfast in Tel Aviv explained to somebody else. “There’s tagging and everything but it’s not virtual.” That’s a pretty accurate description of these real world events which build on not only connections but also techniques learned online.

Look at this picture of Jeff Pulver, himself:

Jeffp

The elements’ll be familiar to you if you use Facebook. The stickers on Jeff’s right side are his wall, meant for other people to write on. One way the ice gets broken between strangers is that they put tags on each others walls. You can see a yellow sticky someone put on Jeff and there are some little white ones as well.

The sticker on Jeff’s right side has his name and what is meant to be a conversation starting line he wrote about himself. His says “I take having fun seriously.” He does. Below that Jeff tagged himself, accurately, as a geek (unlike me, I’m a nerd).

The printed tag in the middle of Jeff’s chest is from the Marker COM.Vention in which this particular breakfast was imbedded. Craig Newmark of Craigslist and superblogger Robert Scoble were both at the COM.Vention, at Kinnernet which preceded it, and at the breakfast. Most of Jeff’s breakfasts are standalone; most guests are not famous. If you’d like to attend a breakfast near you, best things to do are either read Jeff’s blog or follow him on twitter. I’m trying to convince him to have one in Burlington, Vermont.

Just because the social networking breakfasts are live doesn’t mean technology goes away. At this one, and I suspect most others, there a huge variety of high tech cameras being used almost recursively. Note people taking pictures of each other and of others taking pictures of others and me (not seen) taking this picture and possibly someone taking a picture of me.

Recursive

If you’d like to hear more about the social networking toolkit, which Jeff says he’s gonna patent, watch the inventor explain in the video below:

Now on Kindle!

hackoff.com: An historic murder mystery set in the Internet bubble and rubble

CEO Tom Evslin's insider account of the Internet bubble and its aftermath. "This novel is a surveillance video of the seeds of the current economic collapse."

The Interpreter's Tale

Hacker Dom Montain is in Barcelona in Evslin's Kindle-edition long short story. Why? and why are the pickpockets stealing mobile phones?

Need A Kindle?

Kindle: Amazon's Wireless Reading Device

Not quite as good as a real book IMHO but a lot lighter than a trip worth of books. Also better than a cell phone for mobile web access - and that's free!

Recent Reads - Click title to order from Amazon


Google

  • adlinks
  • adsense