Simple DB : Amazon database

Today I installed a simple database on the Amazon Webservices. Amazon SimpleDB is a web service providing the core database functions of data indexing and querying in the cloud. This service is available in Europe since a few weeks. This allows to achieve lower latency, operate closer to other resources like Amazon EC2, Amazon S3, and Amazon SQS in the EU Region, and help meet EU data storage requirements when applicable.

Simple DB is simple to use, low touch, scalable, highly available, fast, flexible, inexpensive and designed for use with other Amazon Web Services.

The prices are:

  • First 25 Amazon SimpleDB Machine Hours consumed per month are free
  • $0.154 per Amazon SimpleDB Machine Hour consumed thereafter
  • First 1 GB of data transferred in per month is free
  • $0.100 per GB – all data transfer in thereafter
  • First 1 GB of data transferred out per month is free; thereafter:
  • $0.170 per GB – first 10 TB / month data transfer out
  • $0.130 per GB – next 40 TB / month data transfer out
  • $0.110 per GB – next 100 TB / month data transfer out
  • $0.100 per GB – data transfer out / month over 150 TB

When using Amazon SimpleDB, you organize your structured data in domains within which you can put data, get data, or run queries. Domains consist of items which are described by attributename-value pairs. The spreadsheet model shown in the following image explains the structure:

Amazon Simple DB Data Model

Amazon Simple DB Data Model

Update your Twitter picture with Snapatar

Snapatar lets you update your Twitter profile picture using your webcam. Simply snap a picture, fill out your Twitter details and send the new image to Twitter. You can do this as often as you like. Your creativity is the limit.

Snapatar was designed by Roy Tanck, a free lance webdesigner, geek, entrepreneur and WordPress enthusiast from the Netherlands. He is the co-author of  the book  Byte-size Flash MX which deals with optimizing Flash files. He is also the developer of the FlickR and Photo widgets.

What will the Internet look like In 10 years ?

The Internet Society engaged in a scenario planning exercise to reveal plausible evolutions of the Internet in the future. Based upon the two questions :

  • Will the world embrace or resist the open Internet model ?
  • Will the Command and Control or the Distributed and Decentralized model be more succesful ?

These two questions defined four quadrants, which led to four very different stories about how the world might develop over the next eight to ten years :

Internet evolution scenarios

All of these stories contain some elements of the Internet of today. The challenge for everyone is to contribute to help the Internet to evolve in a direction like the scenario called The Common Pool.

ROVIO : mobile webcam by Wowwee

Last update : May 21, 2013

Rovio Dashboard

Rovio is a WiFi-enabled mobile web cam developed by Wowwee that lets you see, speak and hear from anywhere in the world, as if you were right there in the room. Rovio is equipped with a TrueTrack™ Navigation System that allows you to use the Rovio interface to store waypoints – with one click Rovio will automatically navigate itself to the chosen point. Rovio’s built-in LED headlight will help you guide it even in dimly lit locations, so you’ll always know what is going on at home or at the office. No need to worry about Rovio running low on power while you’re away – the self-docking function allows you to send Rovio back to the charging dock to recharge, with the click of a button on your browser. Rovio has 3 omni-directional wheels to move in all directions. With additional TrueTrack Room Beacons, Rovio can navigate or self-dock across multiple rooms.

Rovio prototypes and final version

Rovio prototypes and final version

In September 2010, I upgraded the Rovio to firmware version 5.0 and tried to install it on a new WiFi network in an artgallery. The setup with a Vista (Service Pack 1) computer didn’t work, the USB connection always failed.

One year later, the setup was succesful. Two years later, In May 2013, I upgraded the Rovio to firmware v5.03 (stable). The current installed software versions on my Rovio are Base 5.3503, TrueTrack 5.13.201.

The Rovio user interface is entirely browser-based, which means you can access Rovio via the Internet using web-enabled devices. The following documents, tutorials and programs are available to control the Rovio robot :

Documentation

PC

Robodance 5 (Robonote), by Android Technologies, Inc.
version 5.2.0.7b, updated September 23, 2012
uses Skype’s video call service

Robodance 5

Robodance 5

RovioCommander II, by Jesse Mcculley
version 1.909b, updated May 20, 2013

Rovio Commander II

Rovio Commander II

RovioDirect, by E.W.E Software
version 1.2, updated February 9, 2010

Rovio Direct

Rovio Direct

RovioWrap (Rovio Controller), by Scott Settembre
alpha version 1.0.0.1, updated February 16, 2009
with Microsoft speech recognition

Wowwee Rovio DirectShow Filter
licensed to Wowwee by WebcamXP
version 4.2.5.0, 2008

Rovio Direct Show Filter

Rovio Direct Show Filter

RoboRealm, by RoboRealm
version 2.50.22, updated May 18, 2013
application for use in computer vision, image analysis, and robotic vision systems

Rovio Control for RoboRealm

Rovio Control for RoboRealm

Rovio Web Plugin for AbelCam WebCam Server, by Stefan Seiz
Release October 17, 2011

Rovio Plugin for AbelCam WebCam Server

Rovio Plugin for AbelCam WebCam Server

Jrovio (Java Rovio), by Marco Andreacchio
version 2.2, updated June 21, 2010

iPhone / iPad

Rovio Control, by Tommy Kammerer
version 1.4, updated January 25, 2013

Rovio Control for iPhone

Rovio Control for iPhone

Rovio Control HD for iPad (Retina), by Tommy Kammerer
version 1.5, updated January 31, 2013

Rovio Control HD for iPad

Rovio Control HD for iPad

ES Pad for Rovio, by (es) Corporation
version 1.0.3, updated July 8, 2011

ES

ES PAD for Rovio

Rovio Driver, by Bertrand Leroy
version 1.5, updated December 11, 2009

Rovio Driver

Rovio Driver

Rovio Chat, by Chi Kong Simon Chan
version 1.1, updated May 11, 2013
supports Rovio’s 2-way audio
needs Rovio Custom Firmware v5.03s Build 3711

Rovio Chat

Rovio Chat

Blackberry

Rovio Blackberry Client, by bbrovio
version 0.11, updated February 17, 2009

Rovio controller for Blackberry

Rovio controller for Blackberry

Android

AndRovio, by Poignont Projects
version 1.2.1
updated March 1, 2011
does not support audio

AndRovio

AndRovio

Windows Mobile

Pocket Rovio, by Carmelo Millian
version 2.1.1, updated January 14, 2010

Pocket Rovio for Windows Mobile

Pocket Rovio for Windows Mobile

Using Rovio

The Rovio has a LED power indicator, the color signals the following states :

  • Blinking : low battery
  • Green : network connection is functioning properly
  • Red : Rovio is being accessed
  • Orange : Rovio is booting and/or trying to connect to a network

The battery pack is charged when Rovio is docked. The blue LED indicators will pulse quickly to indicate that it has begun charging. During charging, the LED indicators will pulse slowly; a single charge takes approximately 4.5 hours for about 1.5 hours of use. When Rovio has finished charging the LED indicators will remain lit. It is safe to leave Rovio on its charging dock after the charge has completed.

To access Rovio from the Internet, port forwarding to Rovio ports 80 and 554 must be set up in the gateway router.

Additional informations about Rovio are available at the following links :

Flix Video Encoding and Publishing

last update : october 2010

In the past the On2 Flix product line was the leading line of encoding and publishing solutions for Adobe® Flash® Player, available as application software, plug-ins and software development kits for servers, desktops, and browsers.

On February 19, 2010, Google Inc. announced that it has completed its acquisition of On2 Technologies, Inc., valued at approximately $124.6 million.

On June 21st, 2010, ON2 announced that they are discontinuing sales of licenses for On2 Flix Pro, On2 Flix Standard, On2 Flix Exporter, On2 Flix PowerPlayers, On2 Flix Live, On2 Flix SDK for DirectShow, and On2 Flix Publisher. Google will no longer sell or support these products.

Backing Up a MySQL database

It is strongly recommended to backup databases at regular intervals and always before an upgrade. Restoring the database from backup is then possible if anything goes wrong.

phpMyAdmin is the usual program to manipulate a MySQL database.

To export tables from a database, login to phpMyAdmin, select the name of the database, choose those tables that corresponds to the related application and check the following options :

  • SQL
  • Structure
  • Add drop table
  • Add auto-increment
  • Enclose table and field names with backquotes
  • Data heading (without ticking the inside boxes)
  • Same as file
  • Zipped compression
  • Export type “insert”

Click GO and save the file to the computer. If you have separate files and folders for images, downloads, media or other attachments, save them with FTP on the computer.

A general rule of thumb is to keep at least three backups of databases and data files and to keep them in different places.

To restore the database, login to phpMyAdmin, select the database to restore, click the import tab, locate the .sql file on the computer, check the SQL radio button and click GO. The import may take a while, at the end a success screen is displayed. In case of separate image and media files, restore them with FTP.

WordPress has an integrated export/import function which is very userfriendly and efficient. It’s possible to change the author of the posts before saving and to import also automatically the attachments.

Today I tried the import and export of blogs with phpMyAdmin and with WordPress with success.

XHTML validation and Javascript : CDATA

With HTML pages on the web you can include the required Javascript betweentags. The W3C validator ignores the Javascript content. The same is not true for XHTML where the code between the script tags is considered to be PCDATA (parsed character data) which is therefore processed by the validator.

The result is a break of the page validation. To fix this problem, one solution is to make the Javascript external to the page. Another solution is to  place the Javascript code within a CDATA tag. However some older web browsers don’t understand the CDATA tag and this breaks the Javascript in those browsers.

If the CDATA tag is commented out, the Javascript code is handled correctly both by newer browsers and by validators and ignored by older browsers and the page is displayed as expected in all cases.

<script type=”text/javascript”>
/* <![CDATA[ */
// content of your Javascript goes here
/* ]]> */
</script>

A guide about this topic has been written by Stephen Chapman on the About.com:Javascript website.

eBay Development : Finding API

These are complimentary informations to my first post about eBay Development and are focused on the new Finding API. The homepage of the eBay Developers Program is http://developer.ebay.com/.

eBay provides a set of keys (DEVID, AppID, CertID) for the sandbox and for production. These keys are registrated at the personal eBay developer account webpage. Developer centers are available for Windows, Java, PHP, Javascript and Flash. There are different API’s available for selling, buying, research and monitoring :

  • Finding
  • Shopping
  • Merchandising
  • Feedback
  • Trading
  • Large merchants
  • Client alerts
  • Platform notifications
  • Research

There are call limits per day for the different API’s. For higher call limits, applications need to complete a compatible application check process.

eBay Finding API enables applications to search for eBay items using eBay’s next generation Finding Platform. Today I replaced the eBay shopping API by the new Finding API in my applications.

The supported functions for the Finding API are :

  • getSearchKeywordsRecommendation: Get recommended keywords for search
  • findItemsByKeywords: Search items by keywords
  • findItemsByCategory: Search items in a category
  • findItemsAdvanced: Advanced search capabilities
  • findItemsByProduct: Search items by a product identifier
  • findItemsIneBayStores: Search items in stores
  • getHistograms: Get category and domain meta data

The function findItemsAdvanced enables searching for items on eBay by category (using categoryId), by keywords (using keywords), or a combination of the two. By setting the descriptionSearch field to true, the keyword queries also search the item descriptions, in addition to searching through the item title and subtitles. Another interesting finction is getHistograms which returns category and/or aspect histogram information for the eBay category ID you specify.

There are different possibilities to obtain the list of categories ID’s for a specified eBay website (php program,  special API, …). A simple solution is to access the storelist online at the eBay website with the url http://listings.ebay.xx, for instance:

Other needed informations to use the eBay API efficiently are the Global ID, a unique identifier for combinations of site, language, and territory. The list of Global ID’s is available on the eBay developer website.

The keywords field is the basis for item searches. The value specified in the keywords field can contain one or more keywords and combinations of wildcard characters. The words “and” and “or” are treated like any other word.  You can use AND or OR logic by including certain modifiers. The complete list of modifiers and wildcards for searching by keywords is available at the eBay developer website.

A search can be refined with item, aspect and domain filters. Filters provide better control over the search results by narrowing the range of items returned. Domains are a buy-side grouping of items, such as women’s dresses. A domain can span many eBay categories and some categories may be included in more than one domain. Aspects are item characteristics, such as brand, product type, size, which are shared by certain types of items. For example, for Shoes, aspects include Style, Color, and Shoe Size. For Digital Cameras, aspects include Product Type, Brand, Megapixels, and Optical Zoom.

In addition to filters, you can specify certain properties to control the way data is returned. These do not control which data is returned, but rather how it is sorted and the volume of the response. The applicable sort values are available at the eBay developer website.

Use paginationInput and its child elements to break the items matching the search criteria down into smaller subsets, or “pages” of data. The paginationInput.entriesPerPage field specifies the maximum number of items to return for any given request. The paginationInput.pageNumber field specifies which “page” of data to return in the current call. The maximum value for paginationInput.entriesPerPage is 100, this is also the default value.

To include additional informations in the search results as the default values, the outputSelector fields can be used. To earn money from eBay for driving trafic to their website, affiliate-related fields, which are included in a call request using the affiliate container, enable the tracking of user activity. Commissions are generated when users do qualifying actions, such as bid, buy, or register. The affiliate container has the following fields: networkId, trackingId, and customId.

There is no difference between uppercase or lowercase characters in the keywords. Special caracters as é, è, à, ü etc are however not recognised.

SWFObject

SWFObject is an easy-to-use and standards-friendly method to embed Flash content, which utilizes one small JavaScript file. The actual version of the open-source project is 2.2. The work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License. The authors of SWFObject are Geoff Stearns, late Michael Williams and Bobby van der Sluis.

SWFObject offers:

  • two optimized Flash Player embed methods; a markup based approach and a method that relies on JavaScript
  • a JavaScript API that aims to provide a complete tool set for embedding SWF files and retrieving Flash Player related information
  • only one small JavaScript file (10Kb / GZIPed: 3.9Kb)
  • replacement of SWFObject 1.5, UFO and the Adobe Flash Player Detection Kit
  • unification of all existing Flash Player embed methods and provision of a new standard for embedding Adobe Flash Player content
  • detection of the Flash Player version and determination whether Flash content or alternative content should be shown, to avoid that outdated Flash plug-ins break Flash content
  • functionality to revert to alternative content in case of an outdated plug-in by means of a DOM manipulation (Note: if no Flash plug-in is installed the HTML object element automatically falls back to its nested alternative content)
  • the option to use Adobe Express Install to download the latest Flash Player

SWFObject 2 offers two distinct methods to embed Flash Player content:

1. The static publishing method embeds both Flash content and alternative content using standards compliant markup, and uses JavaScript to resolve the issues that markup alone cannot solve
2. The dynamic publishing method is based on marked up alternative content and uses JavaScript to replace this content with Flash content if the minimal Flash Player version is installed and enough JavaScript support is available.

Both methods have advantages. The SWFObject library consists of one external JavaScript file. SWFObject will be executed as soon as it is read and will perform all DOM manipulations as soon as the DOM is loaded – for all browsers that support this, like IE, Firefox, Safari and Opera 9+ – or otherwise as soon as the onload event fires.

An online HTML and javascript generator is provided to create the right code for an swf object. A tutorial how to use SWFObject is available on the Adobe website. The following link leads to a webpage with a script indicating the installed Flash version.

Amazon CloudFront

update : October 18th, 2011
Amazon CloudFront is a web service for content delivery. It integrates with other Amazon Web Services (mainly Amazon S3) to give developers and businesses an easy way to distribute content to end users with low latency, high data transfer speeds, and no commitments.

Amazon CloudFront delivers the content using a global network of edge locations. Requests for  objects are automatically routed to the nearest edge location, so content is delivered with the best possible performance. Amazon CloudFront works seamlessly with Amazon Simple Storage Service (Amazon S3) which durably stores the original, definitive versions of the files.

In Amazon CloudFront, objects are organized into distributions. A distribution specifies the location of the original version of the objects. A distribution has a unique CloudFront.net domain name  that  can be used to reference an objects through the network of edge locations. It’s also possible to map an own domain name to a distribution.

Amazon CloudFront is

  • fast
  • simple
  • cost-effective
  • elastic
  • reliable
  • global
  • designed for use with other Amazon Web Services

The price depends on the edge location and the volume transferred. The mean price per GB for low volumes is about 0,2$, for high volumes about 0,1$. A simple monthly AWS bill calculator is provided by Amazon. Normal fees will apply for Amazon S3 usage, including “origin fetches” – data transferred from Amazon S3 to edge locations.

The edge locations in Europe are:

  • Amsterdam
  • Dublin
  • Frankfurt
  • London

Amazon CloudFront is designed for delivery of objects that are frequently accessed – “popular” objects. Objects that aren’t accessed frequently are less likely to remain in CloudFront’s edge locations’ caches. Thus, for less popular objects, delivery out of Amazon S3 (rather than from CloudFront) is the better choice. Amazon S3 will provide strong distribution performance for these objects, and serving them directly from Amazon S3 saves the cost of continually copying less popular objects from Amazon S3 to the edge locations in CloudFront.

I activated my Cloudfront account on November 1st, 2010.

A recent tutorial how to install Amazon CloudFront has been posted by Michael Tieso on the website “Art of Travel Blogging”.