Kindle vs. iPad comparison review

I’ve just read a Kindle vs. iPad comparison from amazon.com and it seems a little bit odd for me.

Let’s analyse the comparison:

Item Kindle iPad My comments
Price $199
$300 less than iPad 2
$499 true
Screen 7”, in-plane switching display 9.7″, in-plane switching display +1 for iPad
Pixel Density 169 ppi & more than 16 million colors
28% higher pixel density than iPad 2
132 ppi & more than 16 million colors +1 for iPad – More readable on a bigger screen, text
Weight 14.6 oz
iPad 2 is 46% heavier
21.28 oz That’s what the size takes – more weight
Content Movies, shows, songs, games, apps,
magazines & books from Amazon
Movies, shows, songs, games, apps,
magazines & books from iTunes
Seems like the same to me
Breadth of Ecosystem Most Amazon content can be enjoyed
on your Kindle Fire and many other
devices, including iPhone, iPad,
Android, BlackBerry, Windows 7
phones, internet-ready TVs, Roku,
TiVo, and through your web browser
Most Apple content can only be
used on select Apple products
I would look at this from a different angle – this means, that Kindle can only read amazon content, but iPad can read amazon content AND apple content. +1 for iPad
Buy Once, Enjoy
Everywhere
With Whispersync, your book library,
last page read, notes, and highlights
sync across your devices and you can
stream a movie on one device and finish
it on your TV, without losing your place
iBooks syncs only on Apple
devices – no sync for movies
As amazon says – all amazon content can be viewed on iPad too. And also iBooks, so +1 for iPad
E-mail Yes Yes Looks the same. Although I’m pretty sure that iPad has a better e-mail client
Web Browser Amazon Silk, the cloud-accelerated
web browser
Safari Safari is a real browser, Silk is something virtual. +1 for iPad
Flash Support Yes No This is where Kindle wins for sure
Storage 8GB flash memory + free cloud storage
for all your Amazon content so you
never run out of space
16GB flash memory + free cloud storage
for iTunes content excluding movies
Excluding movies? How long would you store your movies in your iPad? Once you watch it – you remove it. Or upload it to youtube 🙂 +1 for iPad – it also has 32GB and 64GB models
Battery Life Up to 7.5 hours of video playback,
with wireless off
Up to 10 hours of mixed use +1 for iPad – no limitations about WiFi being off
Multitasking Yes Yes
Wireless
Capability
Wi-Fi Wi-Fi
Speakers Stereo Mono How is stereo better from a single device? I’ve never felt any difference
Prime Instant
Video
Amazon Prime members can instantly
stream nearly 13,000 popular movies &
TV shows at no additional cost
N/A Amazon Prime is $79 / year. You can watch NetFlix on the iPad for $7.99 a month – not much more expensive.
Kindle Owners’
Lending Library
Amazon Prime members can borrow
from thousands of popular books
at no additional cost
N/A You can still have Amazon Prime membership and use a Kindle app on the iPad.

After all this I don’t see many benefits of Kindle, apart from the price, but iPad is totally a better device – that’s what it takes.

CDN Hosted Javascript

This is totally not new, but a really nice feature I’ve discovered – using “CDN Hosted” javascript libraries, e.g. jQuery.

All you need to do is add an external reference the resource in your HTML, e.g.:

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js"></script>

This gives you multiple advantages, as:

  • you don’t have to store files on your hosting
  • you don’t have to worry about caching
  • you can decrease the bandwidth usage of your server
  • most likely you site’s overall performance will increase
  • you’re able to write a “single html” page e.g. for testing reasons using heavy JS / CSS frameworks, and send a single file over e-mail & etc.

I would like to see Blueprint CSS framework to be hosted on CDN too, but for testing reasons I can just use their test CSS directly when I need it.

See example:

Or usage in my CC validator trial page: http://blog.cikas.info/try/luhn.html

I like Microsoft’s explanation why CDN should be used:

Content delivery networks (CDNs) are composed of “edge cache” servers that are strategically placed around the world at key Internet network points. These “edge cache” servers can be used to cache and deliver all types of content – including images, videos, CSS and JavaScript files.

Using a CDN can significantly improve a website’s end-user performance, since it enables browsers to more quickly retrieve and download content. For example, instead of having a browser request for an image traverse all the way across the Internet to your web server to download, a CDN can instead serve the request directly from a nearby “edge cache” server that might only be a single network hop away from your customer (making it return much faster – which makes your pages load quicker).

Wicket 1.5.1 released

Apache Wicket Logo

Right after Wicket 1.5.0 was released – we get the first maintenance release of the Wicket 1.5.x series. This release brings over 40 bug fixes and 15 improvements.
Subversion tag
http://svn.apache.org/repos/asf/wicket/releases/wicket-1.5.1

Download the full distribution
http://www.apache.org/dyn/closer.cgi/wicket/1.5.1 (including source)

Update your maven dependency to:

<dependency>
    <groupId>org.apache.wicket</groupId>
    <artifactId>wicket-core</artifactId>
    <version>1.5.1</version>
</dependency>

Release Notes – Wicket – Version 1.5.1

Sub-task

  • [WICKET-3934] – Provide AttributeModifier#remove(String)
  • [WICKET-4029] – Improve RequestLogger to not do anything after IPageManager#commitRequest()

Bug

  • [WICKET-3773] – Onclick Script displayed as Link Text
  • [WICKET-3977] – Calling FormTester.select for DropDownChoice invokes onSelectionChanged with null argument
  • [WICKET-3991] – SignInPanel prevents the page being Stateless when signing in with the “rember me” facility.
  • [WICKET-3993] – Wrong ASCII Key Code for END Key. AutoComplete not working properly
  • [WICKET-3998] – CreditCardValidator returns incorrect cardId for VISA
  • [WICKET-4004] – PageExpiredException still thrown after handled by IRequestCycleListener
  • [WICKET-4005] – AutoHide of DatePicker breaks showOnFieldClick
  • [WICKET-4009] – Page Lock on Browser Back Button after Page Expiry
  • [WICKET-4010] – SignInPanel may lead to infinite redirects if there is rememberMe cookie with outdated data
  • [WICKET-4012] – Component’s onAfterRender() is called so many times as it is depth in the component tree + 1
  • [WICKET-4014] – Wicket 1.5 Form Post Action and Link Get discard Page Class Information
  • [WICKET-4016] – MarkupContainer.toString(true) fails with MarkupNotFoundException if the call is made in the component constructor
  • [WICKET-4020] – ResourceMapper throws IllegalStateException when attempting to map a request to a URL ending in a empty segment (directory)
  • [WICKET-4021] – PageProvider can instantiate pages even if isNewPageInstance returns false
  • [WICKET-4022] – Hidden auto generated field in Form has invalid value for autocomplete
  • [WICKET-4025] – AbstractLink does not detach body model
  • [WICKET-4030] – HeaderResponse.renderCSSReference does not render context path relative url, but wicket filter url-pattern relative url
  • [WICKET-4031] – TextRequestHandler doesn’t set Content-Length header
  • [WICKET-4032] – ComponentStringResourceLoader must not include the index of repeater items in resource lookup but still resolve properties to them
  • [WICKET-4038] – MountedMapper.mapHandler ruins Links inside mounted pages appending parameters wicket-ajax and wicket-ajax-baseurl
  • [WICKET-4047] – WebClientInfo causes NullPointerException when the request header “User-Agent” is null.
  • [WICKET-4048] – label’s wicket:for does not work completely for Radios
  • [WICKET-4051] – max-age header is set in milliseconds rather than seconds
  • [WICKET-4053] – AbstractTree#updateTree(AjaxRequestTarget target) is invoked even when request is non-ajax
  • [WICKET-4054] – Memory leakage in browser with AbstractAjaxTimerBehavior
  • [WICKET-4055] – LocaleFirstMapper does not strip Locale from url in getCompatibilityScore()
  • [WICKET-4058] – RadioGroup WicktTester with a AjaxSubmitLink fails
  • [WICKET-4059] – CheckBoxMultipleChoice does not respect isEnabled
  • [WICKET-4061] – Invalid listener url generated for nested components that have an id which starts with a dash
  • [WICKET-4063] – Theading issue in AsynchronousDataStore causes OutOfMemory exception
  • [WICKET-4066] – RestartResponseAtInterceptPageException.InterceptData is never cleared
  • [WICKET-4070] – Errors reported from Form#onValidateModelObjects() are ignored
  • [WICKET-4072] – Form Input example fails when changing the language
  • [WICKET-4073] – Wicket quickstart advertise HTTPS but it doesn’t work when started with jetty:run
  • [WICKET-4075] – Extended browser info gathering is broken
  • [WICKET-4080] – domready events not always fired in IE
  • [WICKET-4081] – WebRequest.getIfModifiedSinceHeader does not handle IllegalArgumentException
  • [WICKET-4082] – org.apache.wicket.request.Url#toAbsoluteString
  • [WICKET-4083] – WebResponse#enableCaching does not take care of a possible “Pragma: no-cache” header

Improvement

  • [WICKET-2790] – Submitting a form with Ajax in WicketTester does not check if form is multiPart
  • [WICKET-2930] – Method isSelected in Select should be public
  • [WICKET-3938] – Impossible to remove particular key-value from PageParameters
  • [WICKET-4006] – Add a check preventing trying to add the current component as a child to itself
  • [WICKET-4023] – Please Allow AjaxLink to use getChannelName
  • [WICKET-4024] – Provide a Convenience API for usage of Ajax Channels
  • [WICKET-4028] – Improve PageInstanceMapper#getCompatibilityScore() to return higher value if the request starts with ‘wicket/page’
  • [WICKET-4037] – Archetype quickstart references release candidate
  • [WICKET-4042] – Typo in FormTester fail message
  • [WICKET-4044] – Change the style of “WICKET AJAX DEBUG” link when some error gets logged
  • [WICKET-4046] – Touch pages only when they are returned from the data stores
  • [WICKET-4049] – Enable SSL for quickstart to make debugging SSL errors easier
  • [WICKET-4052] – Add org.apache.wicket.request.Response.write(byte[], int, int) to make it easier to write buffered data to the web response
  • [WICKET-4067] – Register devutils only if IDebugSettings#isDevelopmentUtilitiesEnabled() is true
  • [WICKET-4068] – Assume that form.onsubmit() without explicit return value means that submit should proceed
  • [WICKET-4079] – Provide new HybridPageParametersEncoder class for backwards compatibility with pre 1.5.x Hybrid URL encoding

New Feature

  • [WICKET-4015] – Implement a listener which can be used to measure the render time of a component

Task

  • [WICKET-4069] – Wickettester: submit select via AJAX