Tag Archives: google

Disappearing cloud APIs: a new legacy software problem in the making

Today Google announced that a number of its APIs are to be withdrawn:

This highlights an issue with platform as a service (PaaS). If you build an app on a set of cloud services provided by a third-party, there is a risk that those services will change or disappear so that your app no longer works.

Many of Google’s APIs are free, or free for all but the heaviest users, so you can argue that you get what you pay for. Developers are particularly frustrated by the disappearance of the Translate API, where Google says:

Due to the substantial economic burden caused by extensive abuse, the number of requests you may make per day will be limited and the API will be shut off completely on December 1, 2011.

Poor old Google with its “substantial economic burden”. Oddly though, some developers are willing to pay, but this is not going to be an option:

It would be much better if Google charges using Translate API than shutting it down. Now i will have to remove this functionality from my projects. Nicely done Google 🙁

says one developer. Further, Google’s rationale for withdrawing APIs is likely multi-faceted. If I write an app that calls a Google API in the background, there is no direct benefit to Google unless it makes a charge. From Google’s perspective it is better to supply a widget, that can be branded, or to get users logging onto its site so it can gather stats and display advertising.

Still, my main interest here is in the implications for cloud computing, particularly PaaS. I frequently see old apps running in businesses. In some cases the original developer is long gone and nobody understands the code, if they have it at all. These apps keep running though. In a PaaS world that will no longer be possible; they will stop working if the APIs they use disappear.

The other side of this coin is that responsible service providers have to keep old APIs supported in order not to break applications. I have an application which I wrote 5 years ago using Amazon’s Simple Storage Service (S3). It still works today. There must be thousands of other applications which also use it. Amazon is now stuck with that API, and I guess that unless some major security flaw is discovered it will continue to work for the foreseeable future.

Cloud is identity management says Kim Cameron, now ex-Microsoft

Kim Cameron, formerly chief identity architect at Microsoft, has  confirmed that he has left the company.

In an interview at the European Identity Conference in Munich he discusses the state of play in identity management, but does not explain what interests me most: why he left. He was respected across the industry and to my mind was a tremendous asset to Microsoft; his presence went a long way to undoing the damage of Hailstorm, an abandoned project from 2001 which sought to place Microsoft at the centre of digital life and failed largely because of industry mistrust. He formulated laws of identity which express good identity practice, things like minimal disclosure, justifiable parties, and user control and consent.

Identity is a complex and to most people an unexciting topic; yet it has never been more important. It is a central issue around Google’s recently announced Chromebook, for example; yet we tend to be distracted by other issues, like hardware features or software quality, and to miss the identity implications. Vendors are careful never to spell these out, so we need individuals like Cameron who get it.

“Cloud is identity management,” he says in the interview.

Cameron stands by his laws of identity, which is says are still “essentially correct”. However, events like the recent Sony data loss show how little the wider industry respects them.

So what happened at Microsoft? Although he puts a brave face on it, I am sure he must have been disappointed by the failure of Cardspace, a user interface and infrastructure for identity management that was recently abandoned. It was not successful, he says, because “it was not adopted by the large players,” but what he does not say is that Microsoft itself could have done much more to support it.

That may have been a point of tension; or maybe there were other disagreements. Cameron does not talk down his former company though. “There are a lot of people there who share the ideas that I was expressing, and my hope is that those ideas will continue to be put in practice,” he says, though the carefully chosen words leave space for the possibility that another well-represented internal group do not share them. He adds though that products like SharePoint do have his ideas about claims-based identity management baked into them.

Leaving aside Microsoft, Cameron makes what seems to me an important point about advocacy. “We’re at the beginning of a tremendously complex and deep technological change,” he says, and is worried by the fact that with vendors chasing immediate advantage there may be “no advocates for user-centric, user in control experience.”

Fortunately for us, Cameron is not bowing out altogether. “How can I stop? It is so interesting,” he says.

Apple, Google: risks of third–party platforms for developers

This week there are a couple of stories about companies whose business was affected by the third-party platform on which they deploy.

The first is from a post from Beamitdown Software’s Dennis Morin whose iFlowReader app for iOS is no longer viable following changes Apple has made to its developer agreement, insisting that add-on content for apps must be sold through Apple’s purchase system, where it is subject to a 30% fee. Beamitdown’s product is an eBook reader, and the content is eBooks, on which the company gets a 30% commission from the publisher. No profit.

It is also worth reading Morin’s interview with CNET in which he adds some detail.

Morin’s complaint is that Apple changed the rules; and reading his account of how difficult it was to communicate with Apple and how unsatisfactory and unreasonable the outcome is, it is hard not to be sympathetic.

On the  other hand, was it sensible to build a business on a platform that you do not control, and with a product that competes, and was always likely to compete, with a similar service from the owner of that platform?

Ask Skyhook, which is trying to offer location services on Android devices, and is suing Google for allegedly blocking Skyhook’s deal with Motorola to favour of its own services. The action has unearthed  correspondence between Google and Motorola that shows the limits of Android’s openness, though I have no idea about the merits of the legal action. Note that a key point here is not the Android OS itself, but Google’s applications which include Android Market. You will notice that the cheapest Android devices, like the famously poor Next Tablet, do not include the Android Market or other Google applications; they use Android source code but are not fully part of the ecosystem:

Is compatibility mandatory?

No. The Android Compatibility Program is optional. Since the Android source code is open, anyone can use it to build any kind of device. However, if a manufacturer wishes to use the Android name with their product, or wants access to Android Market, they must first demonstrate that the device is compatible.

How can I get access to the Google apps for Android, such as Maps?

The Google apps for Android, such as YouTube, Google Maps and Navigation, Gmail, and so on are Google properties that are not part of Android, and are licensed separately. Contact android-partnerships@google.com for inquiries related to those apps.

Who determines what will be part of the compatibility definition?

Since Google is responsible for the overall direction of Android as a platform and product, Google maintains the Compatibility Definition Document for each release. We draft the CDD for a new Android version in consultation with a number of OEMs, who provide input on its contents.

The Next tablet and devices like demonstrate why Google having a measure of control over Android is not a bad thing. However it gets uncomfortable if you want to put out a device that uses Android in ways that conflict with Google’s goals.

What are Google’s goals? It is a good question; but my assumption is that Android is intended to promote Google’s services such as search, and to make your Google identity central to your digital life so that you use Google mail, payments, Google Apps and so on. Further, Android is a strategic play to prevent Apple from owning mobile outright, at least at the high end, and in that respect it is proving successful.

The newly announced Chromebook is more closely tied to Google and delivers more obvious benefit to the company, but whether it will be as successful as Android is doubtful.

The bottom line is that if you choose to deploy on someone else’s platform, you have to take account of the risk that entails. This is nothing new – try marketing an office suite for Windows – but the extent to which the platform is controlled has been taken to a new level by Apple, and even Android has its risks. The nearest thing to an open platform that has broad reach is the Web and web technologies.

Chromebook: web applications put to the test, and by the way no Java

Yesterday Google announced the availability of the first commercial Chromebook, a Linux computer running the Chrome browser and not much else. There are machines from Acer and Samsung which are traditional laptop/netbook clamshell designs, with an Intel Atom dual core processor, 16GB solid state storage, and a 12.1” screen. Price will be a bit less than $400, or organisations can subscribe from $28 or €21 per month in which case they get full support and hardware replacement. There are wi-fi and 3G options. Nobody is going to be excited about the hardware.

image

The Chromebook may be the most secure computer available, if Google has got it right. The OS is inaccessible to the user and protected from the browser, and system patching is automatic.

The strength and weakness of the Chromebook is that is only runs web applications – the only exception being utilities that Google itself supplies. Are we ready for a computer that is little use offline? I am not sure; but this will be an interesting experiment.

The Chromebook is a compelling alternative to a traditional PC with its susceptibility to malware and dependence on locally installed applications and data. If you lose your PC, getting a new one up and running can be a considerable hassle, though large businesses have almost cracked the problem with system images and standard builds. Lose a Chromebook, and you just get another one and sign in.

You sign into Google of course, and that is a worry if you would rather not be dependent on a single corporation for your digital identity and a large chunk of your data.

The problem for the Chromebook is that Apple’s iPad and numerous Google Android tablets and netbooks offer security that is nearly as good, and local applications as well as web applications, for a not dissimilar cost. These devices are also easy to restore if they break or go missing, slightly less so than a Chromebook but not much.

The choice looks a bit like this:

  1. Chromebook: Web applications only
  2. iPad/Android: Web applications and local apps

Put like that, it is difficult to see the advantage of the Chromebook. The subscription scheme is interesting though; it is a new business computing model that brings the cloud computing principle of operating expenditure instead of capital expenditure to the desktop.

The offline issue may be the worst thing about a Chromebook. When I travel, I frequently find myself without a good internet connection. The word “offline” does not feature in either the consumer or business frequently asked questions – a question Google would rather you did not ask?

Yet there is 16GB storage on board. That is a lot. In theory, HTML 5 local storage should solve the offline problem, but few web apps, including Google’s own, make this seamless yet.

A few other observations. While there are no user-installable client apps, Google is adding some utilities.

VPN is coming:

We’ve heard from our pilot customers that VPN is an important feature for businesses and schools, and we’re working very hard to bake this into Chromebooks soon. Support for some VPN implementation is already in the product and we’ll both extend support for more VPNs and get these features to stable soon.

Remote desktop access is coming:

we are developing a free service called Chromoting that will enable Chrome notebook users to remotely access their existing PCs and Macs.

Apparently this is based on Citrix Receiver.

There is a bias towards Adobe Flash:

Chromebooks have Flash support built-in, but they do not support Java or Silverlight.

Another blow for Java on the client.

Google seeks to automate the home

Google made a bunch of announcements at its Google I/O keynote today. It showed off the next version of Android, called “Ice Cream Sandwich”; it announced its Music Beta, a service which looks a lot like Amazon’s Cloud Player, in which you upload your music collection to the cloud; it announced movie rentals.

The most intriguing announcements though were about how Android devices will be able to connect to other devices in future. The Open Accessory API lets manufacturers create devices which talk to Android over USB, and in future over Bluetooth, in a standard manner. The idea is that if you have an Android-compatible device – Google demoed an exercise bike – you can attach your smartphone and do some clever stuff, such as controlling it, analysing its data, or whatever is appropriate.

A related idea is called Android@Home. Google has developed a new lightweight wireless protocol which will let manufacturers create household devices that can communicate with Android:

We previewed an initiative called Android@Home, which allows Android apps to discover, connect and communicate with appliances and devices in your home.

image

The automated home is a grand concept where almost any device, from a light to a coffee maker to a fridge or a door becomes available to control and program. However, the examples Google gave were not exciting: playing a CD by waving it at a player, coding an alarm clock to turn the light on gradually. Big deal.

It is not really a new concept. Sun had ideas to develop Java as a universal runtime and language to automate the home. Microsoft has similar thoughts, maybe using the .NET Micro Framework. So far none of these efforts have come to much – will Google’s initiative be different?

Probably not; but there is something else going on here. I travel a bit, and it is now common to find an iPod dock in your hotel room. If you have an Ipod or iPhone you just plug in and go; if you have a non-Apple device, you are out of luck. That is a kind of pressure exerted on every guest, a hint that they might be better off with an Apple device.

Google wants to do the same for a variety of other devices, but with respect to Android. Here is a refrigerator, and by the way, if you have an Android device you can do this other clever stuff like, I don’t know, alerting you if the temperature goes too high, or letting you peek at the contents from your smartphone so you can see if you need to buy milk.

Same with the Open Accessory API. If Google can sign up enough manufacturers, it will be increasingly difficult for non-Android devices to compete.

That said, we did not hear much about Google TV at today’s keynote. Why? Because it has flopped; a reminder that not all Google’s efforts succeed.

Hands on: Building a PhoneGap app with Dreamweaver CS 5.5

One interesting feature in the new Adobe Creative Suite 5.5 is that PhoneGap is integrated into Dreamweaver. What this means is that you can build a mobile app for Google Android or Apple iOS from within Dreamweaver.

I have just installed the new suite, so decided to give it a try. My project: to create a working calculator app and install it on an HTC Desire (Android 2.2).

I started by creating a new document based on the PhoneGap Mobile Starter.

image

Next, I created a new site with the name “Calc”, in a folder called Calc.

I saved the page as index.html. When I did so, Dreamweaver prompted me to copy a bunch of JQuery Mobile stuff into the folder.

Then I selected “Configure Application Framework…” from the Mobile Applications option on the Site menu.

image

This menu is pretty much all you get for PhoneGap support. The Configure option lets you select the Android SDK or install it. Mine was already installed.

image

If you want to build for iOS, you need to run Dreamweaver on a Mac, though I guess you could code on Windows and build on the Mac using PhoneGap in the normal way.

The next step was to write the application. I mostly used the code view. DreamWeaver has a handy Insert panel which you set to jQuery Mobile. Drag controls from here into your code or design view.

image

Beware: the design view is a bit hopeless for jQuery Mobile apps, unless you have Live view switched on. Here they are side by side:

image

I built probably the world’s worst calculator. Assembling the user interface was easy though. I used a jQuery Mobile Layout Grid for the buttons. I wrote some quick JavaScript with no error handling whatsoever. I used Firefox and its error console for simple debugging.

When I was done, I selected “Application Settings…” from the Mobile Applications menu. Here you can set a few properties including the version and the icon.

image

Build and Emulate from the Mobile Applications menu.

image

This installed the app in the Android emulator. I could run it successfully, though it was mighty slow. You click a button, then after a noticeable pause the app updates to show the value you clicked. However, my app worked.

image

Next, I attached my Desire phone, and copied across the calc-debug-apk package which had been built. I detached the phone and tapped the app. Again success – but the app, while faster than the emulator, is still slow.

image

That is possibly because it is a debug build. But how do you specify a release build? I cannot find a setting for it in Dreamweaver, which seems a striking omission. I am hoping it is possible to tweak the PhoneGap build properties in the generated source, but it looks like I will need to consult the PhoneGap documentation for this.

On the one hand I am impressed. The UI looks nice considering how little time I spent on it, thanks to jQuery mobile. Further, the application works, and I was able to build it entirely in Dreamweaver. The code completion in Dreamweaver’s editor is decent.

On the other hand, documentation is terrible. This article is almost all I can find – beware the dud link to abobe.com:

image

I am not complaining about the PhoneGap docs or the jQuery Mobile docs, but the Adobe docs for using this in Dreamweaver. I hope that more will come.

Update: I spent some more time on this trying to fix the performance issues. The fact of being a debug build should not affect performance as far as I can tell; it merely signs the app with a debug key. I moved the project to the standard Eclipse tools and built it there in case Dreamweaver was messing up the build in some way, but performance is just as bad. More research throws up threads like this one:

I’ve been using Phonegap & JQM on a real device and it is also very slow (HTC Hero, upgraded to 2.1), but it flies on an ipod touch 4th gen. I guess the HTC is just getting old but I’d like to try it on a more modern device.

My initial conclusion then is that a jQuery Mobile/PhoneGap app on an HTC Desire running Android 2.2 will never perform well. It sounds like it might be OK on iOS; I guess I should try that next.

See also my interview with Nitobi president André Charland about PhoneGap.

Developers and mobile platforms: lies, damn lies and surveys

I’ve been reading the IDC/Appcelerator developer survey about their attitudes to mobile platforms. The survey covered 2,760 Appcelerator Titanium developers between April 11-13, so it is certainly current and with a sample just about big enough to be interesting.

The survey asks developers if they are “very interested” in developing for specific platforms, with the following results, and with comparisons to 3 months ago:

  • 91% iPhone (fractionally down)
  • 86% iPad (fractionally down)
  • 85% Android phones (down from 87%)
  • 71% Android tablets (down from 74%)
  • 29% Windows Phone 7 (down from 36%)
  • 27% Blackberry phones (down from 38%)

The survey is titled:

Apple shines, Google slows, and Microsoft edges RIM in battle for mobile developer mindshare.

Is that a fair summary? It is not what I would highlight. I cannot read the exact figures from the chunky graphic, but it is clear that the iOS figures are also fractionally down, maybe by just 1%, but hardly much different from the Android figures on a sample of this size. Both are pretty much flat.

The figures for Windows Phone 7 and Blackberry are more dramatic; though we should at least note that Appcelerator Titanium is a cross-platform toolkit that does not currently support Windows Phone 7, and that its support for Blackberry is only in preview. That was true last time round as well, but I’m not sure that asking developers about their plans for a platform which the toolkit does not currently support is the best way to gauge overall interest.

Another question that interests me: is developer interest a cause or an effect of a mobile platform’s success? A bit of each, no doubt; but personally I think the “effect” model is stronger than the “cause” model. Developers pick a platform either because they have immediate customers for apps on that platform, or because they think they can make money from it.

Nurturing a strong developer community is definitely important for a platform provider; but I doubt it ranks as highly as other factors, like building a strong retail presence, delivering excellent devices at the right price, and focusing on usability and a good end-user experience.

If you are interested in Appcelerator Titanium you might like to read my interview with the CEO at Mobile World Congress; and this discussion on whether Titanium really builds native apps.

Is Appcelerator Titanium native? And what does native mean anyway?

Of course we all know that Microsoft’s IE9 and the forthcoming IE10 are native – VP Dean Hachamovitch said so many times during his keynote at the Mix 2011 conference earlier this week. That has sparked a debate about what native means – so here is another interesting case.

Appcelerator’s Titanium cross-platform tool for mobile development is native, or at least that is what it claims:

image

Now, I am not sure that native has a precise definition, but to me it suggests a compiled application, rather than one interpreted at runtime. So this description of how Titanium executes JavaScript – its main language – is surprising:

In a Titanium Mobile application, your source code is packaged into a binary file and then interpreted at runtime by a JavaScript engine bundled in by the Titanium build process. In this guide, you will learn more about the JavaScript runtime environment that your code runs in. Titanium runs your application’s JavaScript using one of two JavaScript interpreters – JavaScriptCore on iOS (the interpreter used by Webkit) and Mozilla Rhino on Android and BlackBerry.

So a Titanium application is actually interpreted.

Native is a vague enough term that Appcelerator can no doubt justify its use here. “Native UI” is fair enough, so is “Native capabilities.” Native performance? That seems to me a stretch, though JavaScript performance is good and constantly improving. Appcelerator even has a web page devoted to what it means by native.

Titanium is also open source. Anyone doubtful about how it works need only consult the code.

In the light of Microsoft’s statements, it is interesting that what Appcelerator really means by native is “not a web page”:

Build Native Apps … Everything else is basically a web page.

So can an application be both native and interpreted? What about Silverlight apps on Windows Phone 7, are they native? Adobe AIR apps, surely they are not native? Google Android has a Native Development Kit which is introduced thus:

The Android NDK is a companion tool to the Android SDK that lets you build performance-critical portions of your apps in native code.

The implication is that byte code executed by the Dalvik virtual machine, which is the normal route for an Android app, is in some sense not native code. Which also implies that Appcelerator’s claims for Titanium are at least open to misunderstanding.

Browser wars heat up as Firefox 4 arrives

Just one week after the final release of Microsoft’s Internet Explorer 9, and here comes another major browser, Mozilla Firefox 4.

What’s new in Firefox? Performance, for one thing. There is a new JavaScript engine called JägerMonkey which is more effective than the old TraceMonkey – though TraceMonkey is still there – and there is hardware-accelerated graphics on Windows Vista and Windows 7 using Direct2D, and on Windows and Mac Direct3D or OpenGL are used to speed page composition.

On the appearance side, Mozilla has streamlined the user interface with tabs above the address bar, sorry Awesome Bar, and reduced the number of buttons. By default there are no menus visible, and you are meant to use the Firefox button at top left:

image

I was disconcerted not to find the Tools menu here and one of the first things I did was to show the menu bar, though it does spoil the new UI design.

Firefox is also coming to Android and Maemo devices, and a great feature called Sync will synchronize bookmarks, tabs, passwords and history across all the devices you use.

There is also a new privacy feature called Do not track. This is a way of telling websites that you do not wish to be tracked. Tracking is used by web advertisers to send ads based on your browsing history as seen by that advertiser. Since many websites have scripts served by the same ad agency, this can be considerable. The feature does not block tracking, but only requests not to be tracked. It is off by default and buried in Advanced options, so will probably not be very effective.

image

Firefox is an excellent browser, with many more features than I have mentioned above. A few observations though.

The new features in Firefox 4 echo many of the few features in Internet Explorer 9, which in turn echoes some of the themes in Chrome. However on my system IE9 seems to be a little faster than Firefox 4, the user interface is more polished in my opinion, and the tracking protection in IE9 is more effective since it does actually block tracking.

Then again, there are Firefox add-ons that also block tracking; and in general Firefox seems to have the best range of available add-ons, which could well be the deciding factor for many users.

Firefox 4 still has a separate search box, and in principle I like this. I find it annoying that IE9 and Chrome intermingle searches and URLs in one box. I suspect though that I am in a minority of users. If you switch between browsers, you can find yourself typing searches in the Awesome Bar anyway, though habit, so I am guessing Mozilla will cave in and combine them eventually.

Mozilla is a non-profit organisation with a strong open source and community ethos and that also may be enough reason to use Firefox.

It does face intense competition now though, and it must be a concern that its income comes largely from:

search functionality included in our Firefox product through all major search partners including Google, Yahoo, Yandex, Amazon, Ebay and others.

which in practice is mostly from Google, which has a competing browser.

Personally I think Mozilla will struggle to maintain market share for Firefox; though version 4 is having a good launch complete with a delightful Twitter party

image

and a pretty download stats counter which is currently on 2.75 million and climbing fast.

image

The future of Google Apps: social features, high performance spreadsheets, working offline

Yesterday I spoke to Google’s Global Product Management Director for Google Enterprise (whew!) Matthew Glotzbach, at a press briefing for Google Apps which included the announcement of Google Docs Discussions, as covered here.

image_thumb

One of the issues discussed in the briefing was Cloud Connect, which I reported on here. Cloud Connect automatically copies and synchronises Microsoft Office documents with Google’s cloud storage. There are some performance and usability issues, but the biggest problem is that you cannot edit the documents in the browser; or rather, if you do, Google makes a second copy leading to versioning issues.

Google says this is a file format issue. The online Google Docs applications cannot edit documents in Microsoft Office formats – “the document models are completely different” says Glotzbach – though it can import and export those formats. Could Google develop the ability to edit Office documents online? “It is a technical challenge, something we haven’t built yet,” he added.

It is an interesting point. Microsoft’s Office Web Apps have flaws, but they do let you maintain the same document whether edited in the browser or in the Office desktop applications. It is an example of friction if you try to live partly in Microsoft Office, and partly in Google’s cloud. It may be better to stick with one or the other.

What about offline capability, something I hear a lot as counting against Google Docs. Google had a solution for this based on its Gears add-on, but then withdrew it.

We are actively working on offline. It is extremely important. Gears was a precursor. A lot of the ideas embedded in Gears have become part of HTML5.

says Glotzbach. I asked whether this will extend to the Chrome OS netbook operating system, and he said that it will:

Chrome, as the most modern browser based on HTML 5, has the capabilities built into its core. Chrome OS as a derivative of that has those offline capabilities baked into it, so it is a matter of having applications take advantage of that.

We also talked about the new discussions feature. I observed that it seems to be just one part of a bigger story. What about discussions spanning multiple documents? What about discussions without documents? Is there any way of doing that?

“Yes, email,” he said, chuckling. Clearly Google has taken to heart that email remains the de facto mechanism for most corporate collaboration. “We’ve also got Google groups. Obviously the manifestation of a group for many users is email, that’s how they interact with it, but there is also a destination site or page for that group.”

Might Google develop its own equivalent to Salesforce.com Chatter, for Twitter-like enterprise messaging?

The idea of eventually being able to pull in other streams, the idea of social media inside the enterprise Is a powerful idea. I think Chatter is a good example of that, and others such as Yammer. I think those ideas will likely find their way into businesses. It is not clear to me that social will be a destination within an Enterprise. Rather I see it as, features will emerge in various products that leverage those social capabilities. Discussions is influenced heavily by a lot of those social media ideas, and so you can see that evolving into more integrated social capabilities across the app suite.

What about Google spreadsheets, which seem great for simple tasks and collaboration, but suffer performance and scalability issues when used with large data collections that work fine in Excel?

There’s always work to do. We have today some limitations in terms of spreadsheet size. Those are things we are actively working on. With browser technologies I actually think we have an advantage over desktop applications. If I told you I had a spreadsheet that had 5 million columns and a billion rows, there’s no desktop spreadsheet in the world that can handle that kind of volume, but because we have in essence supercomputers on the back end processing that, what you display is just a window of that large data. So we’re using clever technologies like pre-fetching the rows and columns that are just off the edge of the page, similar to some of the technologies we use with Google Maps.

But it’s an example where we have some artificial limitations that we are working to remove. Imagine doing really sophisticated non-linear calculations in a spreadsheet. We’ve got a supercomputer on the back end that can do that for you in seconds.