text:
In the last years I've been using an iPhone and I recently wanted to transfer the contact list to my phone with Ubuntu Touch. These are the steps I followed.
What is required:
How to do it:
Let's go step by step.
There are different ways to export the Contact list from the iPhone to elsewhere. One option is to install an application like My Contacts Backup, and then to transfer the file containing the contacts to the computer. This option is preferred because avoids the need of a Mac desktop.
In my case, I already had my iPhone contacts synchronized with iCloud (option that I don't remember to have activated) and had the MacBook Air at hand. So these are the steps that I followed. First, the iCloud account must be setup to synchronize Contacts. Open Contacts in OSX, go to application menu and press to Accounts...
Then select iCloud and introduce your account credentials.
Finally, enable Contacts synchronization.
After sync is done, the contacts are available in the application. Next step is to export all the list to a vCard file. To do that, select all contacts.
And export them.
Give a name to the file, and we are done in OSX.
The /Users/<user>/Documents/phone-contacts.vcf is a text file in vCard format that contains all the details of our contacts. Use a USB key to copy that file and copy it to an Ubuntu desktop.
Once the file is in Ubuntu desktop, we need to tweak it a little bit, since the import tool in Ubuntu Touch doesn't like the vcf file as exported directly by OSX. The problem is that each contact entry in the file is not separated by a new line, so it must be added afterward. Open a Terminal and type this command:
In text:
$ cat phone-contacts.vcf | sed -e "s/END:VCARD/END:VCARD\n/" > phone-contacts-touch.vcf
A new (and correct) file will be created, phone-contacts-touch.vcf.
Now connect the Ubuntu Touch device to Ubuntu desktop and install some packages:
$ sudo apt-get install phablet-tools android-tools-adb
In the Ubuntu Touch phone, go to System Settings > About this phone > Developer Mode and enable the developer mode. Connect the phone to Ubuntu via USB and type this command to transfer the file to Ubuntu Touch:
$ adb push phone-contacts-touch.vcf /home/phablet/Documents
And log into Ubuntu Touch:
$ phablet-shell
And now, the final step that will import the contacts. That will be done using SyncEvolution tool that comes by default in Ubuntu Touch.
$ syncevolution --import ~/Documents/phone-contacts-touch.vcf backend=evolution-contacts database=Personal
And that's it. Now, all the contacts are imported and available in the Address Book app in Ubuntu Touch. Enjoy!
Of course, with some development effort this task could be much easier. A path that I don't know whether it is possible are direct calls to iCloud API's from Ubuntu Touch, but I doubt it. I've took a quick look to libimobiledevice library. Many years ago there was a tool, python-idevicesync, that was based on it and provided a contact export feature. It's now out of sync with the library API. Another good step would be an Ubuntu Touch app that could read vCard files, and avoid the need to call SyncEvolution using the command line. I'm sure the community will be looking into this features soon.
For Mobile World Capital's blog, I was asked to write an article about the impact of free software in the history of mobile. This is it:
«Today Apple and Google dominate the market of mobile operating systems. In a few years, these companies have gained privileged positions in the telecommunications market, overshadowing the terminal manufacturers. Motorola Mobility is now in the hands of Google. But, ironically, the computer industry owes much to the phone industry. Unintentionally, AT&T created the operating system that is today ruling the world, from mobile phones to supercomputers. Or, if you will, the key programming language of the last 40 years. While doing so, they also planted the seed of the free software».
Continue at Mobile and open source: how Bell Labs (AT&T) created the system of the world.
PS: This is the English translation, it's also available in Catalan and the original, in Spanish.
In my daily work at Canonical I use VM's quite often to test Ubuntu Web Apps and new browser releases in different environments. I use a MacBook Pro 15" (mid 2012) as the main computer, currently running Ubuntu 13.04. This computer had rEFIt to boot and the default OSX system. Of the 500 GB, just 75 were dedicated to Linux, so I was forced to delete VM's or backup them in an external hard disk to re-use them. Finally, I decided to buy a SSD, which are quite cheap nowadays.
The SSD I bought was a Samsung 840 250 GB (not Pro version, which has some additional features). It costs 179 €.
This are the steps I followed to move my Ubuntu setup from a HD to a SSD.
To copy the partition, I resized the USB drive partitions to live room to the HD's Linux partition, which is 75 GB. Then, in gparted I selected the partition from the HD, selected "Copy" from the partition menu and then "Paste" it in the spare space in the USB drive. This step took +40 minutes. At this point, the Linux partition is available in the external disk.
After that, I switched off the computer and replaced the HD with the SSD. Follow the link to see how. Now, the second part: to move and setup the system to the solid state disk. The SSD disk was blank, so it needed proper configuration.
Congratulations! The Linux partition is now copied bit-by-bit in the SSD. However, it cannot boot. The reasons are: rEFIt (the bootloader) is not installed; the Linux partitions are not properly configured. To do that, we need to modify the file /etc/fstab in the Linux partition (SSD).
And this is the final third step: setup the system to properly boot. In my SSD, /dev/sda1 is the EFI partition, /dev/sda2 the Linux partition and /dev/sda3 the swap partition. You may have different setup. /etc/fstab must be changed to reflect this addresses. From a terminal:
$ sudo mkdir /media/root
$ sudo mount /dev/sda2 /media/root
The Linux partition is accesible in the directory /media/root/. The file /etc/fstab/ of the Linux partition can be edited now at /media/root/etc/fstab/
$ gksu gedit /media/root/etc/fstab
This is the original content:# /etc/fstab: static file system information.
Here, the modifications:
# / was on /dev/sda5 during installation
/dev/sda2 / ext4 discard,errors=remount-ro,user_xattr 0 1
# swap was on /dev/sda7 during installation
/dev/sda3 none swap sw 0 0
The blkid command can be run as root to find out the UUID strings of the devices and use them instead.
Then, I downloaded the compiled version of rEFInd, which is a fork of the rEFIt bootloader and able to run from Linux, Mac and Windows.
$ cd /media/root/root/
$ sudo wget http://downloads.sourceforge.net/project/refind/0.6.11/refind-bin-0.6.11.zip
This is almost done. We now "log" into the Linux partition (SSD) to apply the changes and setup the bootloaders. In order to do that successfully, the /proc and /dev from the live DVD are mounted to the Linux partition and the EFI partition (this is needed by rEFInd).
$ sudo mkdir /media/root/boot/efi
$ sudo mount -B /proc /media/root/proc
$ sudo mount -B /dev /media/root/dev
$ sudo mount /dev/sda1 /media/root/boot/efi
$ sudo chroot /media/root/
Now we're "logged" in the Linux partition as the root user. This is when GRUB and rEFInd are installed in the SSD to be able to boot Linux from the Mac.
# mount -t sysfs sysfs /sys
# cd /root/
# unzip refind-bin-0.6.11.zip
# cd refind-bin-0.6.11
# ./install-bin.sh --esp --alldrivers
# grub-install /dev/sda
# update-grub
# exit
And that's all. The system should be able to boot the Linux partition from the SSD.
Some caveats and open questions:
Look carefully at the picture. More than 1,000 generations separate us from that hand. This person lived 30,000 years ago in southern France. The prehistoric painters of Chauvet Cave transport us to a distant and different time. The ice glaciers covered Europe and Neanderthals were close to extinction. Represented on the walls of the cave are other species of large mammals, also extinct. In light of the embers, skillfull hands like that drew rhinos in combat, megaloceros, cave bears, aurochs and mammoths. A landslide sealed and preserved this cave in pristine condition, until its recent discovery.
Look at the palm of your hand. Look at the picture again. It is a human hand. Troglodytes are often portraited as a crude and inferior species. But when we watch what they achieved, this prejudice is impossible to sustain. Despite the time that separates us, the drawings demonstrate great expertise, imagination and abstraction, and an artistic quality recognizeable as distinctly human. Anyone, from any culture, is able to see himself reflected in the drawings. We are descendants of these cave painters. Genetically, a baby born today would be almost identical to a baby born at that time. What differentiates us is not in the genes.
The world has changed since then. Glaciers have retreated from Europe. The climate is warmer. Animals and plants were domesticated. Hands like those created bricks. With bricks, towns were build. In towns, organized societies fluorished. Social complexity exceeded individual capacity. To account for large quantities became a need. And art gave way to knowledge: 5,500 years ago, marks were made on clay tablets to represent numbers. From there, and in a few hundred years, writing was invented. Thanks to the written symbols, accurate information could be transmitted to the future. And this is what made us modern. Our civilization is supported by the slow accumulation of written knowledge. How to make a building. How to cure a disease. How the universe began. The knowledge to be meaningful, to be valuable, must be shared.
Now put your hand over the image. Think about what you share with her. The length of the fingers. The chin. The sense of warmth. And now think all the possibilities that yours has, that that hand never had. To play the piano. To solve an equation. To write a poem.
My wishes for 2013: Learn. Teach. Create. Share. Transcend. Be human.
Transoceanic flights can be boring, even with an iPad to watch movies and play Angry Birds. In my last trip to Boston for a meeting at Canonical's offices, I missed a lot a small computer to play with in the airplane. The 15 inches of the MacBook Pro are good to be productive, but not suitable for the small airline seat. I own a somewhat outdated 9" Acer Aspire One, one of the first netbooks to be released. Unfortunately, it was not working properly.
I bought this Aspire One AOA110 near three years ago. I used it primarly as a portable computer and at hme as the device of choice to surf and read documentation (then, it came the iPad). Some months ago I upgraded the aging operating system, the rpm-based Linux distro called Linpus with Ubuntu Lucid. However, I discovered an issue with the battery: it won't work. The netbook could only be used with with the power cord. I thought it was a hopeless case.
However, it seems that Aspire One battery issue is a common and known problem, which only requires a BIOS update. Acer provides the firmware update in its site, but the programs to execute are for DOS/Windows. Here are the instructions to upgrade it using Linux:
This way, I rescued the netbook. Of course, it feels slow compared to more recent computers, but its days may not be over yet :)
Fernando Tricas always has interesting things to say. In a recent post he talks about The life of links and digital content (Spanish):
«We tend to assume that digital [content] is forever. But anyone who accumulates enough information also knows that sometimes its difficult to find it, in other cases it breaks and, of course, there is a non-zero probability that things go wrong when hosted by third-party services. It is an old topic here, remember Will we have all this information in the future? . The topic resurfaces as news in the light of Currently charged by the article that can be read at A Year After the Egyptian Revolution, 10% of Its Social Media Documentation Is Already Gone».
In the comments, Anónima said: «Given a time t and an interval Δt, the larger Δt, the more likely is that all information in a time t-Δt you want to find is gone». This sounded like an statement to check, Thus, I decided to do an experiment with del.icio.us' bookmarks.
In delicious.com/rvr I have archived around 4000 links from 2004. So, I downloaded the backup file, an HTML file with all links and metadata (date, title, tags). I developed a python script to process this file: go through the links and save its current status (whether the link is alive or not). With another script, the status were processed to generate the statistics. These are the results:
As can be seen, there is a correlation between the age of the links and the probability of being dead. For the 10% who cited the Egyptian revolution, in the case of my delicious, we must go back three years ago (2009). But at 6 years from now, a quarter of the links are now defunct. Of course, the sample is very small shouldn't be representative. It would be interesting to compare it with other accounts and to extend the time span: How many links are still alive after 10 or 15 years? Is it the same with information stored in other media? Are all this death links resting in peace in a forgotten Google's cache disk?
I imagine that sometime in the future, librarians will begin to worry not only to digitize remote past documents, but also to preserve those of the present.
In case you are interested, the code to generate such data is available at github.com/vrruiz/delicious-death-links. The spreadsheet is also available in Google Docs .
New year, new life. Today was my first one at Canonical. Starting today, I am spending my time to two of my passions: Linux and free software. Canonical is the company behind Ubuntu, "Linux for human beings". This project, created by Mark Shuttleworth, wanted to create the most friendly Linux distribution for the average user. Its popularity backs this vision.
My position at Canonical is Quality Engineer, on the Product Strategy department. I will be working closely with Álvaro López, Robert Carr and other excellent developers. And -although not in the same team-, my brother Alberto Ruiz is also working in that department.
Exciting times ahead to learn, share and enjoy!
In this article we are introducing another way to extend JavaScriptCore: Seed.
Seed: A JavaScriptCore engine
In previous articles we've seen the power of JavaScriptCore. However, its features are tied to the WebKit engine. Wouldn't be great if we could run standalone JavaScript programs using JavaScriptCore? That's exactly what Seed does. Seed is a JavaScript interpreter, able to run pure JavaScript programs. It uses WebKitGTK+, not to browse, but to run JavaScript code.
Indeed, Seed comes in two flavors:
As a command line, Seed is like a Python or Perl interpreter: a script is loaded and executed. However, outside the web environment, JavaScript is pretty much useless. That's why, as we did in our previous examples, Seed adds support for some native libraries. And specifically, Seed can be used to program GTK+ applications using JavaScript, thanks to its GObject Introspection/JavaScript bridge.
libseed, the C library, allows third-parties to easily build scripting capabilities for their programs. It adds a thin layer to JavaScriptCore API. The functions and methods available in JSC are usually available in libseed. This mean we can define new features and access JavaScript objects from C.
A simple Seed script
To install Seed in Ubuntu, type:
$ sudo apt-get install seed libseed-gtk3-dev
This is a simple GTK+ program, which just shows a window with a button.
/* Imports GTK+ libraries */
Gtk = imports.gi.Gtk;
/* Inits GTK+ */
Gtk.init(null, null);
/* Creates window */
var window = new Gtk.Window();
/* Terminates program if window is closed */
/* Creates button */
var button = new Gtk.Button();
button.set_label('Hello world');
/* Terminates program if button is clicked */
/* Add button to window */
/* Shows */
/* Main loop */
To run it:
$ seed gtk.js
This shows:
WebViews and Seed
In our previous articles, we've extended JavaScript features manually, programming C methods to create JS classes. Those classes were available to our Web Views. But Seed already provides a lot of libraries. In the next example, we'll see how to use libseed to extend WebKit.
This the source code of our program which exposes Seed libraries to a WebKitGTK+ web view.
#include <stdio.h>
#include <gtk/gtk.h>
#include <webkit/webkit.h>
#include <seed.h>
#include <JavaScriptCore/JavaScript.h>
SeedEngine *engine;
static void window_object_cleared_cb(WebKitWebView *web_view,
WebKitWebFrame *frame,
gpointer context,
gpointer arg3,
gpointer user_data)
JSGlobalContextRef jsContext = webkit_web_frame_get_global_context(frame);
engine = seed_init_with_context (NULL, NULL, jsContext);
static void destroy_cb(GtkWidget* widget, gpointer data)
g_free (engine);
gtk_main_quit ();
static GtkWidget* main_window;
static WebKitWebView* web_view;
static GtkWidget* create_browser()
GtkWidget* scrolled_window = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
web_view = WEBKIT_WEB_VIEW (webkit_web_view_new ());
gtk_container_add (GTK_CONTAINER (scrolled_window), GTK_WIDGET (web_view));
g_signal_connect (G_OBJECT (web_view), "window-object-cleared", G_CALLBACK(window_object_cleared_cb), web_view);
return scrolled_window;
static GtkWidget* create_window()
GtkWidget* window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_default_size (GTK_WINDOW (window), 500, 500);
g_signal_connect (G_OBJECT (window), "destroy", G_CALLBACK (destroy_cb), NULL);
return window;
int main (int argc, char* argv[]) {
gtk_init (&argc, &argv);
if (!g_thread_supported())
g_thread_init (NULL);
GtkWidget* vbox = gtk_vbox_new(FALSE, 0);
gtk_box_pack_start(GTK_BOX(vbox), create_browser (), TRUE, TRUE, 0);
main_window = create_window();
gtk_container_add(GTK_CONTAINER (main_window), vbox);
gchar* uri = (gchar*) "file://webkit-seed.html";
webkit_web_view_load_uri(web_view, uri);
gtk_widget_grab_focus (GTK_WIDGET (web_view));
gtk_widget_show_all (main_window);
gtk_main ();
return 0;
To compile it, type:
$ gcc -o webkit-seed webkit-seed.c `pkg-config --cflags --libs webkitgtk-3.0 seed`
And this is the webkit-seed.html file:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script type="text/javascript">
var sqlite = imports.sqlite;
sql = new sqlite.Database('/tmp/webkit_seed_test.db')
sql.exec('CREATE TABLE test (id INTEGER PRIMARY KEY, data TEXT)');
To run the program:
$ webkit-seed
This time, the browser will appear, but the fun action will be in the /tmp directory. There we'll found a new SQLite 3 database, with a two-field table.
Of course, Seed gives access to a lot of sensible libraries. Safety would be at risk if we let any JavaScript program to run this way, but it also opens a whole world of possibilities!
P.S.: Of course, I tried to run the GTK+ example inside the WebView. Unfortunately, it didn't work :-(
In the previous articles dedicated to WebKit, we've used the WebKitGTK+ in plain C. Thanks to GObject and GLib libraries, doing bindings for others languages is quite easy. And of course, bindings for WebKitGTK+ exists for Python, one of my favorite programming languages. Python is ideal for rapid prototyping and/or fast development.
To use WebKitGTK+ in Python and Ubuntu, python-webkit library must be installed:
$ sudo apt-get install python-webkit
This is the source code of a simple WebKit browser in PyGTK+.
#!/usr/bin/env python
import pygtk
import gtk
import webkit
# Creates the GTK+ app
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
self.scrolled_window = gtk.ScrolledWindow()
# Creates a WebKit view
self.web_view = webkit.WebView()
# Sets the window size
self.window.set_default_size(1024, 800)
# Loads this URL
Using Python we get rid of the manual memory management. Now, let's use WebKit and Python to build a tool.
Facebook and desktop applications: OAuth 2.0.
Facebook has a programmable API, so application can interact with user data. Probably you know Farmville, the popular Facebook game. Farmville uses Facebook API to access to our data. For applications to be able to interact with our data, developers must register the application in Facebook and the each user grants permission access to the app.
This protocol to obtain user access is called OAuth 2.0, and is has become a popular standard among many popular web sites. The workflow is:
The problem with this workflow is that desktop applications don't usually run a web server, so it's difficult to get this access token. How can we do it? Using WebKit!
Facebook states that the callback URL can be set to https://www.facebook.com/connect/login_success.html which will receive the access token as a parameter (login_sucess.html#access_token=...). We are going to use WebKit to identify this URLs using this callback:
self.web_view.connect('load-committed', self._load_committed_cb) # Load page
The 'load-commited' signal is emmited by the WebKit view when a page is about to be loaded. In the _load_commited_cb function, the page URL is checked to get Facebook's application access token. This token is finally saved to a file and the browser is closed.
This is the source code:
#!/usr/bin/env python
import pygtk import gtk import webkit import urllib import urlparse FB_TOKEN_FILE = 'access_token.txt' class Browser: """ Creates a web browser using GTK+ and WebKit to authorize a desktop application in Facebook. It uses OAuth 2.0. Requires the Facebook's Application ID. The token is then saved to FB_TOKEN_FILE. """ def __init__(self, app_key, scope='offline_access'): """ Constructor. Creates the GTK+ app and adds the WebKit widget @param app_key Application key ID (Public). @param scope A string list of permissions to ask for. More at http://developers.facebook.com/docs/reference/api/permissions/ """ self.token = '' self.token_expire = '' self.scope = scope # Creates the GTK+ app self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) self.scrolled_window = gtk.ScrolledWindow() # Creates a WebKit view self.web_view = webkit.WebView() self.scrolled_window.add(self.web_view) self.window.add(self.scrolled_window) # Connects events self.window.connect('destroy', self._destroy_event_cb) # Close window self.web_view.connect('load-committed', self._load_committed_cb) # Load page self.window.set_default_size(1024, 800) # Loads the Facebook OAuth page self.web_view.load_uri( 'https://www.facebook.com/dialog/oauth?client_id=%s&redirect_uri=%s&response_type=token&scope=%s' % (urllib.quote(app_key), urllib.quote('https://www.facebook.com/connect/login_success.html'), urllib.quote(self.scope)) ) def _load_committed_cb(self, web_view, frame): """ Callback. The page is about to be loaded. This event is captured to intercept the OAuth 2.0 redirection, which includes the access token. @param web_view A reference to the current WebKitWebView. @param frame A reference to the main WebKitWebFrame. """ # Gets the current URL to check whether is the one of the redirection uri = frame.get_uri() parse = urlparse.urlparse(uri) if (hasattr(parse, 'netloc') and hasattr(parse, 'path') and hasattr(parse, 'fragment') and parse.netloc == 'www.facebook.com' and parse.path == '/connect/login_success.html' and parse.fragment): # Get token from URL params = urlparse.parse_qs(parse.fragment) self.token = params['access_token'][0] self.token_expire = params['expires_in'][0] # Should be equal to 0, don't expire # Save token to file token_file = open(FB_TOKEN_FILE, 'w') token_file.write(self.token) token_file.close() print "Authentication done. Access token available at %s" % (FB_TOKEN_FILE) gtk.main_quit() # Finish def _destroy_event_cb(self, widget): """ Callback for close window. Closes the application. """ return gtk.main_quit() def authorize(self): """ Runs the app. """ self.window.show_all() gtk.main() if (__name__ == '__main__'): # Creates the browser browser = Browser(app_key='XXXXXXXXXXX', scope='offline_access,read_stream') # Launch browser window browser.authorize() # Token available? print "Token: %s" % (browser.token)
Easy, isn't it?
The complete source code is available at github.com/vrruiz/FacebookAuthBrowser
As explained in the previous article, D-Bus is object oriented, and interfaces can expose objects with their methods, properties and events. We used D-Bus to access battery status, and extended WebKit/JavaScript Core to read it. In this post we are going to connect D-Bus signals with JavaScript callback functions. What we want to do is execute custom JavaScript code after a D-Bus signal has been emitted (and received).
D-Bus signals are events that clients can subscribe to. As explained, UDisks interface emits signals everytime a new external drive is attached to the system, and Linux desktops capture this events to launch file managers (and other applications). UPower.Device also emits signals, and we are going to capture Changed().
It's easy to connect functions using D-Bus Glib bindings. First, we add a signal to the proxy object, which is a way to indicate the type of the arguments. Changed() doesn't has any parameter, so the call is this:
dbus_g_proxy_add_signal (proxy, "Changed", G_TYPE_INVALID);
And then we connect the D-Bus signal with a callback function (battery_changed_cb).
(GClosureNotify) g_free);
This callback function will receive two parameters, proxy and ref, with references to its correspondent JavaScriptCore context and global object.
So, when UPower updates the battery status, it emits a Changed() signal. This signal will be received by our JavaScript Battery() objects. What happens then? battery_changed_cb will check whether Battery has a property called onChange and whether is of type function. So, if Battery.onChange stores a function, battery_changed_cb will call it. You'll see it more clearly in the JavaScript file.
Above is the source code of our previous D-Bus program. Remember that is based on that of the previous example.
#include <stdlib.h>
#include <dbus/dbus.h>
#include <dbus/dbus-glib.h>
#include <gtk/gtk.h>
#include <webkit/webkit.h>
#include <JavaScriptCore/JavaScript.h>
DBusGConnection *conn;
DBusGProxy *proxy;
DBusGProxy *properties_proxy;
typedef struct {
JSContextRef context;
JSObjectRef object;
} RefContextObject;
/* Callback for UPower.Device.Changed() */
static void battery_changed_cb(DBusGProxy *_proxy, RefContextObject *ref)
g_message("Battery changed");
/* Get onChange property */
JSStringRef string_onchange;
string_onchange = JSStringCreateWithUTF8CString("onChange");
JSValueRef func = JSObjectGetProperty(ref->context, ref->object, string_onchange, NULL);
JSObjectRef function = JSValueToObject(ref->context, func, NULL);
if (!JSObjectIsFunction(ref->context, function)) {
g_message("JSObject is not function or is not set");
JSValueRef result = JSObjectCallAsFunction(ref->context, // The execution context to use
function, // The JSObject to call as a function.
ref->object, // The object to use as "this," or NULL to use the global object as "this."
0, // An integer count of the number of arguments in arguments.
NULL, // A JSValue array of arguments to pass to the function. Pass NULL if argumentCount is 0.
NULL); // A pointer to a JSValueRef in which to store an exception, if any. Pass NULL if you do not care to store an exception.
/* Class initialize */
static void battery_init_cb(JSContextRef ctx,
JSObjectRef object)
GError *error = NULL;
conn = dbus_g_bus_get (DBUS_BUS_SYSTEM, &error);
if (conn == NULL)
g_printerr ("Failed to open connection to bus: %s\n", error->message);
g_error_free (error);
/* Create a proxy object for "org.freedesktop.UPower" */
proxy = dbus_g_proxy_new_for_name (conn,
if (proxy == NULL)
g_printerr ("Failed to create proxy object\n");
/* Create a proxy object for "org.freedesktop.UPower.Properties" */
properties_proxy = dbus_g_proxy_new_from_proxy (proxy,
dbus_g_proxy_get_path (proxy));
if (properties_proxy == NULL)
g_printerr ("Failed to create proxy object\n");
/* Connect callback to signal org.freedestop.UPower.Device.Changed() */
RefContextObject *ref = g_new(RefContextObject, 1);
ref->context = ctx;
ref->object = object;
dbus_g_proxy_add_signal (proxy, "Changed", G_TYPE_INVALID);
(GClosureNotify) g_free);
error = NULL;
/* Class constructor */
static JSObjectRef battery_constructor_cb(JSContextRef context,
JSObjectRef constructor,
size_t argumentCount,
const JSValueRef arguments[],
JSValueRef *exception)
return constructor;
/* Class finalize */
static void battery_destroy_cb(JSObjectRef object)
/* Ends Battery */
if (proxy != NULL) g_object_unref (proxy);
if (properties_proxy != NULL) g_object_unref (properties_proxy);
static gboolean proxy_property_value(char *property,
GValue *get_value,
GError **error)
/* Call ListNames method, wait for reply */
return dbus_g_proxy_call (properties_proxy, "Get", error,
G_TYPE_STRING, "/org/freedesktop/UPower/devices/battery_BAT0",
G_TYPE_STRING, property,
G_TYPE_VALUE, get_value,
static JSValueRef proxy_double_value(JSContextRef context,
char *property,
size_t argumentCount)
GError *error = NULL;
GValue get_value = {0, };
if (argumentCount == 0) {
/* Call method, wait for reply */
if (!proxy_property_value(property, &get_value, &error))
g_printerr ("Error: %s\n", error->message);
g_error_free (error);
return JSValueMakeUndefined(context);
gdouble value = g_value_get_double(&get_value);
return JSValueMakeNumber(context, value);
return JSValueMakeUndefined(context);
static JSValueRef proxy_uint64_value(JSContextRef context,
char *property,
size_t argumentCount)
GError *error = NULL;
GValue get_value = {0, };
if (argumentCount == 0) {
/* Call method, wait for reply */
if (!proxy_property_value(property, &get_value, &error))
g_printerr ("Error: %s\n", error->message);
g_error_free (error);
return JSValueMakeUndefined(context);
guint64 value = g_value_get_uint64(&get_value);
return JSValueMakeNumber(context, value);
return JSValueMakeUndefined(context);
static JSValueRef proxy_boolean_value(JSContextRef context,
char *property,
size_t argumentCount)
GError *error = NULL;
GValue get_value = {0, };
if (argumentCount == 0) {
/* Call method, wait for reply */
if (!proxy_property_value(property, &get_value, &error))
g_printerr ("Error: %s\n", error->message);
g_error_free (error);
return JSValueMakeUndefined(context);
gboolean value = g_value_get_boolean(&get_value);
return JSValueMakeBoolean(context, value);
return JSValueMakeUndefined(context);
/* Battery.capacity method callback implementation */
static JSValueRef battery_capacity_cb(JSContextRef context,
JSObjectRef function,
JSObjectRef thisObject,
size_t argumentCount,
const JSValueRef arguments[],
JSValueRef *exception)
return proxy_double_value(context, "Capacity", argumentCount);
/* Battery.percentage method callback implementation */
static JSValueRef battery_percentage_cb(JSContextRef context,
JSObjectRef function,
JSObjectRef thisObject,
size_t argumentCount,
const JSValueRef arguments[],
JSValueRef *exception)
return proxy_double_value(context, "Percentage", argumentCount);
/* Battery.voltage method callback implementation */
static JSValueRef battery_voltage_cb(JSContextRef context,
JSObjectRef function,
JSObjectRef thisObject,
size_t argumentCount,
const JSValueRef arguments[],
JSValueRef *exception)
return proxy_double_value(context, "Voltage", argumentCount);
/* Battery.updateTime method callback implementation */
static JSValueRef battery_update_time_cb(JSContextRef context,
JSObjectRef function,
JSObjectRef thisObject,
size_t argumentCount,
const JSValueRef arguments[],
JSValueRef *exception)
return proxy_uint64_value(context, "UpdateTime", argumentCount);
/* Battery.PowerSupply method callback implementation */
static JSValueRef battery_power_supply_cb(JSContextRef context,
JSObjectRef function,
JSObjectRef thisObject,
size_t argumentCount,
const JSValueRef arguments[],
JSValueRef *exception)
return proxy_boolean_value(context, "PowerSupply", argumentCount);
/* Class method declarations */
static const JSStaticFunction battery_staticfuncs[] =
{ "capacity", battery_capacity_cb, kJSPropertyAttributeReadOnly },
{ "percentage", battery_percentage_cb, kJSPropertyAttributeReadOnly },
{ "voltage", battery_voltage_cb, kJSPropertyAttributeReadOnly },
{ "updateTime", battery_update_time_cb, kJSPropertyAttributeReadOnly },
{ "powerSupply", battery_power_supply_cb, kJSPropertyAttributeReadOnly },
static const JSClassDefinition notification_def =
0, // version
kJSClassAttributeNone, // attributes
"Battery", // className
NULL, // parentClass
NULL, // staticValues
battery_staticfuncs, // staticFunctions
battery_init_cb, // initialize
battery_destroy_cb, // finalize
NULL, // hasProperty
NULL, // getProperty
NULL, // setProperty
NULL, // deleteProperty
NULL, // getPropertyNames
NULL, // callAsFunction
battery_constructor_cb, // callAsConstructor
NULL, // hasInstance
NULL // convertToType
/* Callback - JavaScript window object has been cleared */
static void window_object_cleared_cb(WebKitWebView *web_view,
WebKitWebFrame *frame,
gpointer context,
gpointer window_object,
gpointer user_data)
/* Add classes to JavaScriptCore */
JSClassRef classDef = JSClassCreate(¬ification_def);
JSObjectRef classObj = JSObjectMake(context, classDef, context);
JSObjectRef globalObj = JSContextGetGlobalObject(context);
JSStringRef str = JSStringCreateWithUTF8CString("Battery");
JSObjectSetProperty(context, globalObj, str, classObj, kJSPropertyAttributeNone, NULL);
/* Destroy callback */
static void destroy(GtkWidget *widget,
gpointer data )
main (int argc, char* argv[])
/* Initialize the widget set */
gtk_init (&argc, &argv);
/* Create the window widgets */
GtkWidget *main_window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
GtkWidget *scrolled_window = gtk_scrolled_window_new (NULL, NULL);
/* Create the WebKit Web View widget */
GtkWidget *web_view = webkit_web_view_new ();
/* Connect the window object cleared event with callback */
g_signal_connect (G_OBJECT (web_view), "window-object-cleared", G_CALLBACK(window_object_cleared_cb), web_view);
/* Place the WebKitWebView in the GtkScrolledWindow */
gtk_container_add (GTK_CONTAINER (scrolled_window), web_view);
gtk_container_add (GTK_CONTAINER (main_window), scrolled_window);
/* Connect the destroy window event with destroy function */
g_signal_connect (G_OBJECT (main_window), "destroy", G_CALLBACK (destroy), NULL);
/* Open webpage */
webkit_web_view_load_uri (WEBKIT_WEB_VIEW (web_view), "file://webkit-05.html");
/* Create the main window */
gtk_window_set_default_size (GTK_WINDOW (main_window), 800, 600);
/* Show the application window */
gtk_widget_show_all (main_window);
/* Enter the main event loop, and wait for user interaction */
gtk_main ();
/* The user lost interest */
return 0;
To compile it on Ubuntu:
$ gcc webkit-05.c -o webkit.c `pkg-config --cflags --libs webkitgtk-3.0 dbus-glib-1`
Above, the corresponding HTML file webkit-05.html.
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<h1>Extending JavaScript with WebKit. Battery class.</h1>
<div id="battery-status"></div>
<script type="text/javascript">
var display = function () {
var div = document.getElementById("battery-status");
var battery_status = "Capacity: " + Battery.capacity() + "<br>";
battery_status += "Percentage: " + Battery.percentage() + "%<br>";
battery_status += "Voltage: " + Battery.voltage() + "<br>";
battery_status += "Update Time: " + Battery.updateTime() + "<br>";
battery_status += "Power supply: " + Battery.powerSupply() + "<br>";
div.innerHTML = battery_status;
var battery = new Battery();
battery.onChange = display;
var display stores a reference to a function. This function fills the empty <div id=battery-status> with the actual battery status. Finally, a Battery() object is created and battery.onChange is defined.
If we run our program
$ ./webkit-05
when UPower.Device.Changed() is emitted, our JavaScript function will be called and the battery status, automatically updated in the web page.
As before, the complete source code is available at github.com/vrruiz/WebKit-JavaScriptCore-Extensions.


text:
- Resources
- Related Research Areas
- Carbon Cycle & Ecosystems
We propose a study of the impacts of a changing climate on tundra fire and the implications for tundra ecosystem services vulnerable to a changing fire regime. The overall goal is to investigate the influence of climate change in the Arctic on fire occurrence and fire effects in the tundra ecoregions of North America (NA). In particular, if fire increases in landscapes where fire is neither currently nor historically of great importance, what impacts will this have on the ecosystem services? Specific objectives of the proposed project are driven by the following two hypotheses: A: Climate change in the north is causing a fundamental change in fire regime in tundra ecosystems marked by fires of larger size and duration than previously occurred within the last century, leading to increased tundra area burned with higher burn severity. B: A change in fire regime will adversely influence ecosystem services, including surface hydrology, carbon sequestration, air quality, and wildlife resources, and enhance the feedback to the climate system through increases in surface albedo and release of greenhouse gas.
Our current understanding of arctic fire regimes for the recent and historic past (within
the last 50 to 100 years) is poor. Current satellite-based methods for mapping fire at
northern latitudes are focused on algorithms tuned to forested landscapes rather than
treeless tundra types. Therefore, our current accounting of recent fire for the circumpolar
arctic is not complete. Fire regime is also most likely changing, and will be changing
quickly since fire is strongly driven by climate, and climate is changing fast in the arctic.
Current ability to predict future fire occurrence in the face of climate change is maturing,
and has the potential to improve understanding of the magnitude of fire change.
The 2007 Anaktuvuk River fire has presented an avenue to assess the effects of late season tundra fires on ecosystems. Large, extreme fire events such as the Anaktuvuk fire have the potential to become more numerous as fire season lengthens and climate conditions become more favorable to fire spread. We intend to connect with current research efforts at the Anaktuvuk site as well as studying fire locations across NA. By looking at fire across the region, the role of fire in shaping ecosystem conditions can be better understood if fire regime changes in Arctic NA.
For hypothesis A, we propose to improve maps of past fire using remote sensing-based
resources (AVHRR, MODIS, and Landsat) using established techniques for fire mapping
but tuned to detect fires in treeless, Arctic landscapes. Surface conditions following fire
will be assessed in the field at the Anaktuvuk River site, via literature review, personal
experience of the study team, and from remote sensing. Burn severity will be investigated
as a driver of post-fire site dynamics and a comprehensive review of methods to assess
severity in tundra sites will be made. We will use the acquired knowledge to drive a fire
occurrence model fine-tuned to ecosystem specifics of Arctic NA.. We also plan to apply
existing climate models within a framework of fire occurrence modeling to develop
future fire occurrence scenarios.
To address hypothesis B, the fire regime information for the past into the future will be used to learn the possible implications of climate change-induced fire regime change. Influences of particular interest are related to impacts on systems specifically vulnerable to climate change and/or disturbance. The factors we will investigate are: 1) changes to surface hydrology, which influences vegetation regrowth; 2) implications for carbon cycling and sequestration, including the immediate release of pyrogenic carbon; 3) influences on energy balance, both the release of radiatively important CO2, CH4, and aerosols, and changes to surface albedo; and 4) impacts to wildlife land use, such as caribou forage conditions.
Project PI: Nancy French/Michigan Tech University
Michigan Tech Research Institute 3600 Green Court, Ste 100 Ann Arbor MI 48105 USA
Phone: (734) 913-6844
Email: firstname.lastname@example.com
Popular Resources
Nothing to see here at the moment. Check back later.
Log in to start a discussion.
Project Highlight
Started: Sep 02, 2010
Last Activity: Feb 09, 2011
- Only approved users can join
- Anybody can view this project
- Any registered users can leave comments
- Anybody can view comments
New Member
- Joined 4 years, 6 months ago
Related Projects
Terrestrial Observation and Prediction ...
2 members
2 resources
Vegetation Dynamics In Drylands ...
1 members
Development Of A Satellite-Based ...
3 members
Need help?
Visit our help center

subset: commoncrawl


text:
Author has written 6 stories for Twilight, and Vampire Diaries.
The names France. Single mama of 2 beautiful boys. I'm 22 and have a lot of spare time on my hands at night. I'm Canadian eh! and I wouldn't have it any other way..
I use to have another account on this site , and since I can't seem to remember the password I now have this one.
If you're reading my story "My messed up life" I'm sorry I haven't updated in a while. This site won't let me for some reason.
Banner for my messed up life , made by Rosalynn . http://api.ning.com/files/7ZFTRsuNvik5gsApTjo*KmgwD5ddgD7f93PkLsqh-2WLo*Jd-7K5KP5O4wNYrf6NzvIYi5GzEFD4seWIo56xjiD26cJwnUuC/MyMessedUpLife.jpg
Banner for Sightless Eyes : http://s1185.photobucket.com/albums/z360/mizz_france1/?action=view¤t=nanner.jpg
Unsafe External Link


text:
Jason Wu
Women's Jason Wu Flounce Skirt Polo Dress
Details & Care
A full and flouncy skirt gives fresh, feminine appeal to a classic polo dress defined with figure-flattering ribbing at the natural waist. Color(s): black. Brand: JASON WU. Style Name: Jason Wu Flounce Skirt Polo Dress. Style Number: 835571.See More Details


text:
Browser does not support script.
Temporary roadworks can range from small maintenance work to major road closures and can cause varied levels of disruption.
We will always try to minimise any disruption on our roads and thank our local residents for bearing with us while we work to make the roads better for the future.
United Utilities are carrying out work to install a new sewer. This work is expected to last until April 2015. This may cause delays for people travelling into Blackpool. For more information please visit United Utilities dedicated Mains Lane and Garstang Road page.
The Highways Agency are currently carrying out a widening programme on the northbound carriageway of the M6 by junction 32 which may include closures or delays. For more information please visit the Highways Agency's journey impact page
Social Networks
Powered by Contensis


text:
Graphene Sheath Modulates Fiber-Optic Transmission At 200 GHz 18
from the let's-go-straight-to-x-rays dept.
We've improved Slashdot's video section; now you can view our video interviews, product close-ups and site visits with all the usual Slashdot options to comment, share, etc. No more walled garden! It's a work in progress -- we hope you'll check it out (Learn more about the recent updates).
It sounds like this is just very high speed On Off Keying, which is not only limited by modulation but also by the ability to clearly receive that signal on the far end.
This could be an alternative to coherent phase shift keying as a short range 100G+ interconnect though, where dispersion and noise aren't an issue.
you also have to dissipate the heat of conversion in the source and detector, which means large chunks of silicon in relation to the transistors. but I can see using this to cut distortion cross-chip, or up a stack of chips in Cray-ish constructions, and maintain internal speed.
there is of course the usual last line of the study document, on behalf of the lead and the graduate assistants who have several years to go in their degree yet, that "this effect needs more study."
"Life sucks, but it's better than the alternative." -- Peter da Silva


text:
Saidi tööriistad
Tuleb arvestada sellega, et osad väljaanded võivad kättesaadavad olla vaid inglise, prantsuse või saksa keeles.
This policy brief was produced by the OECD and the European Commission on entrepreneurship by people with disabilities. It presents data on the scale of self-employment and entrepreneurship activities undertaken by people with disabilities and discusses the barriers to entrepreneurship that are unique to people with disabilities. The policy brief also discusses policy approaches to support entrepreneurship for people with disabilities, including increasing awareness about the feasibility of entrepreneurship; developing entrepreneurship skills; supporting the development, acquisition and use of assistive technologies; ensuring access to appropriate financial support; and, improving Internet and IT accessibility. The brief provides examples of successful policy approaches used in the EU as well as inspiring stories about entrepreneurs with disabilities.
This policy brief is part of a series of documents produced by the OECD and the European Commission on inclusive entrepreneurship. The series includes policy briefs on youth entrepreneurship, senior entrepreneurship, social entrepreneurship, evaluation of inclusive entrepreneurship programmes, access to business start-up finance for inclusive entrepreneurship and entrepreneurship by the disabled as a well as a report on `The Missing Entrepreneurs'. All these documents are available in English, French and German. They are available at http://www.oecd.org/cfe/leed/inclusive-entrepreneurship.htm
Laadi alla PDF
Laadi alla PDF
"Sinu esimene EURESe töökoht" on Euroopa Liidu rahastatud algatus, mille eesmärk on
• aidata noortel eurooplastel leida töö-, praktika- või töökohapõhise õppe võimalusi teistes ELi liikmesriikides
• viia VKEd ja teised tööandjad kokku laiema kandidaatide ringiga
Praktiline juhend, milles käsitletakse järgmisi teemasid:
• osalemisnõuded ja kuidas kandideerida
• kuidas saada rahalist toetust
• kust leida täpsemat teavet
"Sinu esimene EURESe töökoht" ootab sind juba täna!
Käesolev väljaanne on elektroonilisel kujul kättesaadav kõigis ELi ametlikes keeltes.
Laadi alla PDF
The factsheet presents the highlights of the 2013 PROGRESS Annual Performance Monitoring Report, showcasing the programme's main achievements during that year. These include improving information-sharing on EU law and policy among Member States, ensuring the integration of cross-cutting issues such as equality into EU policy and improving policy consistency. Programme outputs were driven by employment and social objectives of Europe 2020, with activities focused on major challenges such as unemployment, social impact of the crisis and demographic changes. This leaflet is available in printed format in English, French and German.
Laadi alla PDF
The Social Europe guide is a bi-annual publication aimed at providing an interested but not necessarily specialised audience with a concise overview of specific areas of EU policy in the field of employment, social affairs and inclusion. It illustrates the key issues and challenges, explains policy actions and instru¬ments at EU level and provides examples of best practices from EU Member States. It also presents views on the subject from the Council Presidency and the European Parliament.
Volume 7 focuses on EU funding instruments used to help people into employment or out of poverty and social exclusion. The guide outlines the aims and objectives of four specific funds: the European Social Fund (ESF); the Fund for European Aid to the Most Deprived (FEAD); the EU programme for Employment and Social Innovation (EaSI); and the European Globalisation Adjustment Fund (EGF).
There is a particular focus on priorities for the EU's new financial period, which runs from 2014-2020, and on how these funds will support Europe 2020, the EU's economic strategy for smart, sustainable and inclusive growth.
The guide will be available in printed and electronic format in English, French and German.
Laadi alla PDF
The 2013 PROGRESS Annual Performance Monitoring Report looks at how PROGRESS has helped the Commission make proposals on evolving policy priorities such as improved performance of public employment services, social investment for inclusive growth and handling occupational pensions. Programme outputs were driven by employment and social objectives of Europe 2020, with activities focused on major challenges such as unemployment, social impact of the crisis and demographic changes.
This publication is available in electronic format in English only.
Laadi alla PDF
Hiring subsidies are an important measure, extensively used by Member States, to promote employment in disadvantaged-worker categories such as young and older people, the long-term unemployed and women. This review maps out the design of such subsidies, and identifies good and effective practices in targeting, funding, monitoring and integrating incentives with other policies. It is intended as a source of mutual learning and transfer of good practices between Member States.
This publication is available in electronic format in English.
Laadi alla PDF
Low qualified workers encounter increasing difficulties to find a job, face lower job stability and are out-competed by medium-skilled workers even in elementary occupations. In contrast, job opportunities are growing in some high-skilled professions. These are the main findings of the European Vacancy and Recruitment Report 2014. The report also highlights the increase in temporary and part-time work during the crisis and underlines the need to better support school-to-work transitions, to decrease segmentation of the labour markets and to up-skill jobseekers, particularly the low qualified. This report is available in electronic format in English only.
Laadi alla PDF
Child poverty and social exclusion is one of the major challenges facing the European Union and in February 2013 the European Commission issued a major Recommendation on "Investing in children: breaking the cycle of disadvantage'. This Synthesis Report has been produced by the Network Core Team of the European Network of Independent Experts on Social Inclusion, on the basis of the independent experts' reports covering the 28 EU Member States. It brings together the main findings of the country analyses and draws on these and the Core Team's overall assessment to put forward a series of concrete suggestions for advancing the implementation of the Recommendation at both national and EU levels. The report is available in electronic format in English, French and German. The 28 country reports are available here together with their translation in the national language(s).
Laadi alla PDF
The Belgian Platform against Poverty and Social Exclusion EU 2020 is designed to feed into the Europe 2020 Strategy, which includes the European Platform against Poverty and Social Exclusion as one of seven flagship initiatives. Since 2011 the Belgian Platform has brought together a wide variety of participants for quarterly meetings. Although the Platform has no real policy making authority, it provides an important forum for open dialogue and increasing awareness of the European framework for fighting social exclusion. This report summarises the key issues discussed and the lessons learned. It is available in electronic format in English, French, German and Dutch.
Laadi alla PDF


text:
Finally inspired to make remodeling an opportunity.
This week is all about moving the clutter of my life from three rooms and closets, into the rest of my house so it looks like it threw up on itself.
I decided to do it in fifteen minute spurts, taking little breaks (like this) in-between. We're getting the floors refinished, and instead of feeling overwhelmed, I've decided now is the time to finally get the worst of these rooms (my office) reorganized. While I'm flinging (like with like) things into boxes, the possibilities of putting back far less stuff into the same places is invigorating! I'm sending out the bookcase to be refinished, so when I finally fill it back up, only the books/magazines/office programs I use will be at hand. My goal is No Surface Clutter.
I decided to trash the things I don't want as I put them back into place instead of getting distracted while the rooms are being emptied. (Some things are an easy do-it-now fling, others I'll make choices on then.) I'm measuring drawers for a few organizing devices while I can see what's coming out of them, and setting up a much simpler filing system as I sift through what's truly important. I'm dumping books, papers, unused address labels, stationery, magazines and anything else I haven't used in too long. I have empty drawers!
I was dreading this job, but am finally seeing it as the impetus I needed to get the lead out on freeing up more time and possiblities for my life. You know I started out in this room being very organized, but as time goes along and things accumulate, it kept getting harder to stay with the orginal systems.
I can handle this (I keep repeating to myself) and am trying not to let the filing bog me down. I know I don't have to refine this today! The reason I'm trying to deal with this now is so I don't lose the important stuff amidst the boxes, but can put my hands on it right away. I have been in the process for the last week of setting up a colored hanging file system (red for action like mail/subscriptions, green for financial, yellow for health, etc. and regular dark green folders for long term filing.) All this is going into a rolling crate that I can store under my desk so it's handy and accessible. I'm writing on labels for the moment to speed the process along. My motto this week is ''Get It Done''.
Does anyone have any more good tips for me as far as paperwork or anything else for that matter?
As you work thru this remember to take care of yourself. Are you in charge of dinner? If so, make decisions early in the day and have all things on hand. That way, when you are exhausted, it will be so much easier. Have good snacks, a nice lunch or a special indulgence on hand. Drink lots...of water or beverage of choice:). Play music or have the TV on.
Having gone thru refinishing of floors not once, not twice but on three different times...plastic and tape. Use blue painters tape to seal ALL cabinets. Plastic off doorways. Stuff floor vents with towels and don't forget to mask cold air returns. Buy a couple of new furnace filters. If you have ceiling fans..don't forget the dust up there.
Your floors will be gorgeous, your house will be clean, and your files organized!
Thanks tre3! That's a very good tip for feeding yourself. I feel like I'm on a roll...many boxes filled, removed and my filing system is shaping up. I have until the weekend to clear everything out so it's coming together nicely. I just pitched some stuff I've had since 1985! Buh-bye clutter bugs.
Great reminder for stuffing and blocking off the vents. I can't wait until this is over and done with!
"You know I started out in this room being very organized, but as time goes along and things accumulate, it kept getting harder to stay with the orginal systems."
boy, is this true!
For one thing, no system, however perfect, is maintenance free. For another, the stuff you decide you don't need anymore doesn't get up and leave by itself! it just stays in there, out of sight and out of mind, both at the same time.
And of course, your needs change, so a system itself may end up outmoded.
Congrats on starting the effort, and good luck!
I needed to file the quarterly statement from the kids' savings accounts, and went through all those file and got about 4 inches of papers out--all the quarterly statements from years past that I got to lazy to pitch when the new ones came. I need to start enforcing the "one in, one out" rule: when the new quarterly statement comes, I toss the oldest one.
And in order to do that, I'm going to take the start-up paperwork (which I want to keep always) and fold it in half (printing side out, so I can tell what it is) and put it in the front of the file. Then, that paperwork will be *shorter,* and I can simply put the new paper in the back, and grab the first *tall* paper from the front to toss.
Yes it is! In fact Talley Sue, I called my DH at work to tell him about it, along with your one in/one out rule. He thought they were great tips too. (I'm trying to involve him as much as I can in the new filing system so we can both use it without frustration.) So far so good! I made a red action folder called PENDING and put all the stuff I'm working on or expecting to happen in the next few weeks, and have already used it twice today. Now I need to set up a longer term file to put under the every day files so I can stack them. They roll nicely under my desk and out of the way and I'm surprised at how well it's working out.
My bookcase went off to the refinisher today, hallelujah! I'm piling books I no longer need by the back door to make their way out, so it's happening...


text:
There is a huge scope for young statisticians in the government sector, says Sub-Collector
All economic policies that are initiated by a nation are based on statistical data.
The subject of statistics plays an important role, be it running a country or a firm, said Vijayawada Sub-Collector Dasari Harichandana.
She inaugurated the 7th Statistics Day celebrations organised by the National Sample Survey Organisation (NSSO) here on Saturday.
Addressing students pursuing economics and statistics at various colleges, she said, numbers never lie and statistical data can never go wrong and that is why the government gives so much importance to statistical data.
"The government needs data and there is a huge scope for young statisticians in the government sector," she said. Statistics Day is observed every year on July 29, on the birth anniversary of Professor Prasanta Chandra Mahalnobis, who was the founder of the famed Indian Statistical Institute and member of the Planning Commission during the tenure of Prime Minister Jawaharlal Nehru.
The NSSO Regional Director G. Satish said Professor Mahalnobis is considered to be the father of Statistics in India and was accepted globally for his path-breaking Mahalnobis Model which was used while drafting the Second Five-year Plan.
Every year a theme is designed for the day and this year it is 'Labour and employment'.
"The NSSO is given the task to collect data on the theme and after a year-long data collection and research, the document is submitted to the government for policy making," said Mr. Satish.
Giving details on the functioning of NSSO, he said there were three departments: Design department - which plays the role of preparing the questionnaire, data collection department – which is actually the field survey department, data processing department and publication department - that complies and produces the report.
The day-long event comprised of paper presentations and lectures, quiz, elocution and essay writing.
Guest lectures were delivered by Andhra Loyola College Head of the Department, Economics, S. Yosebu, Eluru-based St. Theresa Degree College for Women Economics Head D. Madhu Malathi and Institute of Labour and Employment –Vijayawada Senior Education Officer Syed Bashir Ahmed.
Keywords: economic policies, National Sample Survey Organisation, Indian Statistical Institute, Statistics Day


text:
Insomniac announces next major DLC for 'Sunset Overdrive'
"Sunset Overdrive" will get a new downloadable expansion in less than a month, bringing an entirely new area to the game as well as new weapons and a new traversal mechanic.
windows 10
windows 10 technical preview
LG Windows Phone mock-up
"Sunset Overdrive" will get a new downloadable expansion in less than a month, bringing an entirely new area to the game as well as new weapons and a new traversal mechanic.
An upcoming expansion to "Sunset Overdrive" will bring a new area to the game when it releases Dec. 23, along with new weapons, missions, challenges and more.
Microsoft wants to 'win' Black Friday with some massive discounts on games. Titles such as Sunset Overdrive, FIFA 15 and Call of Duty Advanced Warfare have had their prices slashed.
If you want a white Xbox One, be prepared to pay a premium for the console as the device is in short supply with most retailers showing that the product is out of stock.
Xbox Live Gold members are getting a special treat tomorrow when they'll be able to download and play Sunset Overdrive in full, including multiplayer - as long as they can finish the game in 24 hours.
From Sunset Overdrive and the Office of the future, to OneDrive, 4K phones and Windows devices at wild prices, we take a look back at highlights from this week's top tech news on Neowin.
"Sunset Overdrive" is Insomniac Games' first Xbox-exclusive title after a long history with PlayStation franchises, but just how good is the silly third-person action game?
Microsoft has released the launch trailer for "Sunset Overdrive," the Xbox One exclusive that's due out on Oct. 28. Check back next week for Neowin's full review of the game.
Microsoft Store is using new pre-order bonuses via Xbox Live Rewards and exclusive game content to draw Xbox shoppers to its own retail stores this holiday season.
Microsoft has released a "live-action trailer" for its next big Xbox One exclusive, "Sunset Overdrive," showcasing just how insane the game will be when it's released in North America on Oct. 28.
Microsoft has announced some interesting bundles for Xbox One gamers, but, more importantly, the company has also unveiled the long-awaited white version of the Xbox One
A new advertisement for the Xbox One has been uploaded to the official Xbox YouTube channel showcasing some of the upcoming games which could become popular multiplayer titles among gamers.
Microsoft has released a new promotional video for the Xbox One. It shows of some games due for release later this year, while a quote from Rocky is read out by Sylvester Stallone in the background.
Microsoft and developer Insomniac Games have released a viral website for the Xbox One exclusive "Sunset Overdrive" focused on OverCharge Delirium XT, a fictional beverage in the game.


text:
This recently refurbished 5 star hostel offers comfortable and modern accommodation in New Zealand. YHA Franz Josef is the perfect hostel to take in the sights of the magnificent Fox and Franz Josef glaciers. Accommodation comprises shared, double, twin (some with ensuite bathrooms) and family rooms. Facilities include a spacious fully equipped kitchen, TV lounge with Sky TV and free dvd's, open plan lounge/dining room with open fire, bike storage, drying room, pool table and sauna., Comfortable and modern with a warm atmosphere and a rain forest in the back yard. Located in Franz Josef, close to the glacier.
What travellers think
pratiques environnementales: acceptables car à force de trop vouloir en faire, ce n'est plus hygiénique. Pas de liquide vaisselle mais de l'eau, pour laver c'est moyen...
Sat 23 Aug 2014
I stayed at this hostel 9 years ago it was perfect not so much now on my last night there was a very bad incident 1st/2nd march big disturbance I was not happy
Tue 18 Mar 2014


text:
Home / V #71 – Four Asian Supermodels Laying the Fashion World at their Feet / Tao Okamoto, Fei Fei, Liu Wen for V #71 4
It's not surprising that various art forms excite us more than ordinary office jobs. This is why Alejandro Medina traded in a finance specialist job for a career in music. He wanted to make sure that he was capable of creating music and developing a sound of his own. He met his goal, becoming the solo artist best known as Lexo The Great.


text:
Welcome to JSGA ( Jain Sangh of Greater Austin)
JSGA, a non profit organization that has been formed
in the year 2005 on behalf of Austin Jain milf porn free pics Parivar. We
value your support and your dedication in supporting
JSGA events. This site is here developed for JSGA community.
Our Sangh is dedicated in providing you and your family
the value of jain principles. A gateway in which one can
build, share, offer services to free lesbian teen porn video the community. We have
various events around the year in which you and your
family members can participate within JSGA community.
We welcome you to visit our website and offer ways to
bond and grow our community.
Interested parties can get the updated information on community
communications via email, please subscribe to
JSGA Non-Profit Registration Address
1600 Iris real free cartoon porn
Cedar Park, TX 78613
United States


text:
Trump Card Alteisen
Credits & Info
- Date
- 05/01/2009
- File Info
- Song
- 2 min 35 sec
- Score
- 4.45 / 5.00
Related Content
Heard in 1 Entry!
View all submissions featuring this audio file.
Licensing Terms
- Attribution:
- You must give credit to the artist.
- Noncommercial:
- You may not use this work for commercial purposes unless you make specific arrangements with the artist.
- Share Alike:
- If you alter, transform, or build upon this image, you may distribute the resulting creation only under a license identical to this one.
- Score:
- Rated 4.45 / 5 stars
- Plays & Downloads:
- 12,612 Plays | 1,233 Downloads
- Share Links:
- Genres:
- Electronic - Video Game
- None
Author Comments
Rated 5 / 5 stars
Long Live Kyosuke Nanbu!!!
I could listen to this song for 4 days straight while working and I'm still not tired of it :D
Now if only there was a remix of Excellen's Theme (*hint hint*)
Amazing job as always!
...whoa. Then again, I had my own loops of my own remix back then when I made this so I can -kinda- relate XD AND HAHAHA HINT HINT? I WONDER WHAT YOU ARE TRYING TO TELL ME...maybe. Just maybe. But I'm leaning on Elzam/Ratsel. XD Thanks!
Rated 5 / 5 stars
Man, that was great! Congratulations!!
I'm really looking foward to another theme of SRW OG!
Haha, thanks! And Trombe! is one of my concept, you know...and to sound redundant...you never know :)
Rated 5 / 5 stars
Damn, this is pretty awesome.
I first came across this in a video of a dude I follow. I have to say, after checking out this and some other stuff of yours, you're a pretty good composer. This makes me want to play Super Robot Taisen, actually, so mission accomplished for you, I guess. Keep doing what you do, man. *thumbs-up*
Wow, I thank that dude you follow for leading you here then! Thanks for the comments, reviews and the assurance that my mission has been accomplished. But hey, you're probably not complaining--it's a great game with awesome music, some of which I will definitely remix in the future! I'll keep it up. :D
Rated 5 / 5 stars
Nice remix
this makes makes me want to beat the game all over again 10/10 dude.
Huh...for me, that's in progress. XD Thanks and glad you like it!
Rated 5 / 5 stars
I feel as if i walked into awesomeness...
This song is something i would expect to see in a Even sided match that goes into "overtime". Nice to see more music like this that gets me listening to it so much that if it was a contest of how many times you listen: I'd probably WIN.
seriously. nice job on this.
What a way to put it XD But yeah, it definitely sounds fit for scenarios like those :D Thanks for the review!


text:
How To Change My Language On Facebook Docs
Sponsored High Speed DownloadsHow To Change My Language On Facebook Free Download7962 dl's @ 7028 KB/sVerified Doc - How To Change My Language On Facebook5903 dl's @ 4492 KB/sHow To Change My Language On Facebook5674 dl's @ 1715 KB/s
settings Setting FaceBook privacy Get your pens out! 5 Steps
Setting FaceBook privacy settings Get your pens out! 5 Steps ... (unless you change your settings). 5. Check Block Lists Step Five: Your Block List contains the
General Information about your "Facebook" usage
I don't change my profile picture Once a month Once a week Twice a week Three or more ... How often do you change your "status" on Facebook? (ie - John Doe is ...
Sheedy Social Media for Social Change Final
used for Social Change ... be noted that this paper may have a language and cultural ... records. Users could change their Facebook statuses ...
Facebook 101 How to Manual - Grand Valley State University
My Account: The settings tab allows you to change your name, ... Set your primary language in order to browse Facebook in the language of your choice. 19 Adding a ...
Your HTC First™ - AT&T - 4G LTE, Cell Phones, U-verse, TV ...
Changing the display language 73 ... You can change the time before HTC First sleeps in ... Certain accessibility features in HTC First may work better with Facebook ...
Language change and digital media - jannis androutsopoulos
Aug 15, 2011 · out on facebook walls, with the protagonists' entries sprinkled with emoticons such as ' : ... language change and digital media yet to be written.
Extended user guide - Digital Printing, Packaging, Commercial ...
FACEBOOK or email. 8 Copy (not shown ... can change the language through the KODAK PULSE Web site. Sign in to your account at www.kodakpulse.com, then click the Frame ...
Kobo ™ Vox User Guide
you sign out and change Kobo ... you log in to your Facebook account on your Kobo Vox, Facebook ... The Help feature lets you ask a question using natural language, ...
THANKYOU!for!downloading!Socratic(Seminar(Lesson(Plan ...
Socratic Seminar Lesson Plan ... I will be willing to change my mind. 7. ... I will monitor my language to be sure I demonstrate I'm willing to considering ...
www.Breaking News English
Breaking News English ... Change partners and share what you wrote. ... • body language • Facebook / Twitter • other _____ 6.
HOW TO CREATE A FACEBOOK PAGE - Glen Rock Public Library - Home
You can change the language your page is in using this option. 11 Part 2: Security Settings ... On Facebook, "Friends" are people who can see your posts.
I Read It, and I Got It! Strategies to Comprehend Text
Ways to Change Instant Stories ... language help you comprehend the text? ... From my pagoda just over the way
Your HTC Vivid
right from HTC Vivid. Facebook Log in to your Facebook account to import your ... entered using HTC Vivid , tap My tasks. ... To change the name of HTC Vivid later, ...
Your HTC Status
§ Press > Go offline to change your chat status to offline. ... Under To language, ... accounts such as Facebook and Twitter, HTC Status will try to combine them
ST60 series - Panasonic
Menu > Setup > Language > Preferred SAP language If you change the audio settings with the SAP button, Preferred SAP ... (Panasonic is not liable for
YouCam - CyberLink
You can upload a captured video directly to Facebook* from within CyberLink YouCam. ... † Change UI language: select the desired language of the CyberLink YouCam
BMW Connected : Frequently asked questions (06/ 2011 )
The volume counter for Facebook comments and 'likes' in my BMW's display shows three periods (' ... How can I change the language of the posts, ...
Facebook Cheatsheet
Facebook Cheatsheet by Andy Wibbels, ... Language Payments Face-book Ads ... (Change Picture) View Photos of Me
Learning Facebook Application Development
Learning Facebook Application Development Hasin Hayder Dr. Mark Alexander Bain Chapter No. 1 "Getting to Grips with the Facebook Platform"
ZTE Prelude User Manual Guide - Phones - Tablets - Internet ...
ZTE Prelude™ user guide. ... You can change your Facebook sync settings by tapping > Settings ... You can change the language of your phone system in two simple steps .
Facebook and the fire department: Who is using it and how?
Facebook and the fire department 1 ... I hereby certify that this paper constitutes my own product, that where the language of others is ... to make a change or ...
International Journal of English Language & Translation Studies
International Journal of English Language ... on my Facebook page ... A Study of Social Networks and Language Change.
Spanish/English Speech Practices: Bringing Chaos to Order
I am the sum total of my language. (Charles Sanders Peirce) ¿Ysisoyma´s de uno, Peirce? ... Silva Corvala´n,C.(1994)Language Contact and Change: ...
How Do I Change iTunes So It Converts My Music to MP3 Files?
How Do I Change iTunes So It Converts My Music to MP3 Files? Subject Descriptors: Music, MP3, iTunes Application (Version): iTunes 8 Windows Vista, Windows XP, Mac OSX
Understanding Privacy Settings in Facebook with an Audience View
Understanding Privacy Settings in Facebook with an Audience View ... confusing language, ... their effects change over time as Facebook modifies
Nokia 111 / Nokia 113 User Guide
Change the volume ... To change the writing language, ... My laptop Nokia XX Select the device to connect to. If asked, type in the passcode. 3
Defacing Facebook: A Security Case Study - University of Virginia
Defacing Facebook: A Security Case Study ... Facebook Markup Language that allows arbitrary JavaScript ... The following code fragments change the way the profile ...
Address Change Information - Huntington Beach, California
ADDRESS CHANGE INFORMATION Some of the agencies listed below will be notified on your behalf by the City of Huntington Beach.
Communities of practice: Where language, gender, and power ...
Women and Language Conference. Berkeley: ... Or my reminding you all in this ... in fact they both change
Thirteen Facebook Tips for Lawyers in 2013
www.lawpracticetoday.org ©American Bar Association 2013 Thirteen Facebook Tips for Lawyers in 2013 By Dennis Kennedy February 2013
IRS Form 3115 – Application for Change in Accounting Method
Form 3115 (including its instructions), ... Schedule D—Change in the Treatment of Long-Term Contracts Under Section 460, Inventories, or Other
ESS USER GUIDE - Volt
... English will always be the default language when you log on. To change your default user . language preference, see My ... enables Volt employees to: • Change ...
Facebook Tutorial - Queens Library
• Facebook is the most popular social network, ... You can change the password, ... password, language, and more settings associated with
Facebook - EPIC - Electronic Privacy Information Center
11 Brian Ries, What Did Facebook Change Now?, THE DAILY BEAST (Sept. 22, 2011, 6:52 PM), ... creations, remembering a user"s browser language, ...
Social Media: No 'Friend' of Personal Privacy
nological advancement of the Internet with a particular emphasis on the social media networks Facebook ... tion outlining this change and ... of pithy legal language ...
Pantech Perception User Guide - Verizon Wireless
Pantech Perception User Guide ... Language & input ... To change a folder's name, tap the folder, tap the Settings icon E, and then enter a new name.
Chapter 4 Getting More From Your Kindle Paperwhite 19 ...
Setting up your Kindle Paperwhite ... Available dictionaries will differ depending on the language you select. To change your default dictionary: 1. ... Facebook. To ...
User Guide for RENUE - AT&T - 4G LTE, Cell Phones, U-verse ...
Thank you for choosing the Pantech RENUE TM. The Pantech ... Language ... 3. Change Time, Time Format, ...
Convio Facebook Application Toolkit - Luminate API| Extending ...
These pages can include Facebook Markup Language ... Position the "My Applications" Facebook page and Convio ... Edit this source file if you want to change ...
Frequently Asked Questions Q How can I become a U.S. citizen?
If you require an American sign language interpreter at the oath ceremony, ... Can I change my name when I ... If I am a U.S. citizen, but my child does not meet the ...
HP Deskjet 3510 e-All-in-One series - Hewlett-Packard
2 Get to know the HP Deskjet 3510 series ... Change from a USB connection to a wireless network ... selected the correct language and region.
Kobo Glo Video Tutorial - kobobooks.com
Kobo Glo Video Tutorial ... You can also click My Facebook Account to sign in with your ... Select the language that you'd like the translation in.
Change - Joyce Meyer
Change Your Words, Change ... Language and languages—Religious aspects—Christianity. ... Facebook is now sometimes used as a weapon.
YOU ARE CORDIALLY INVITED - Dermatologist-Created Skincare ...
Call is all about and write yourself a prescription for change. I look forward to celebrating the launch of my new Rodan + Fields business with you. Sincerely,
How To Use Templates - MailChimp
Change things around. ... MailChimp has a powerful yet simple template language that makes it ... In your MailChimp account you'll find a My templates button on ...
Language and Identity - Home | Department of English ...
Language and Identity 1 Language and Identity 2 Language and Identity • Reflect on Your Own Identity ... • People change identities to suit the needs of the moment. 5
Boost MAX - ZTE USA - Phones - Tablets - Internet Devices ...
Boost MAX ™ User Guide [UG ... Share Pictures on Facebook ... Touch to change input language. Touch to enter digits, symbols, ...
American Sign Language - Linguistics at Berkeley |
American Sign Language Johnny George Linguistics 55, Fall 2003! Today™s Episode !! ... William Stokoe ™s research on ASL in the 1960s led the change in attitudes
A Report on the Improvement of the Training of Teachers of ...
Breakthrough to English, a structured approach to initial literacy. ... language change, first and second language acquisition by young children in Botswana, ...


text:
Manufacturer: Hilason Saddlery
Model: Treeless Saddle
Category: Trail Saddles
Purchase: I found Hilason Saddles on Ebay. I had read some great reviews about it so I tried it out myself. I paid $360, compared to the other saddles, its a great price :)
Likes: The leather is just perfect! The quality is outstanding and wow I love the feeling of it when I'm riding it. I've ridden it so many times and it also seems like my horse loves it. Everything is just perfectly in place and i was really happy by the quality that it was made. I've tried other companies as well but honestly i really like Hilasons the best.
Dislikes: Everything is great =)
Quality: The leather is really comfortable and very durable.
Summary: Honestly, people should really try Hilason. They have such a great selection of saddles and with such low prices, it's unbeatable! I really like Hilason and I'm sure whoever tries it out will definitely love it!
Rating: 5
Author: Riding Beauty
Date: 0000-00-00
Usefulness Rating: 2.5 out of 5.
6 reader(s) voted.
Crestridge Wade Extra Wide Trail Saddles
Kimberley Kimberley Outback Australian Saddle Trail Saddles
Black Forest Saddles Rosewood treeless Trail Saddles
Crates #238-4 Trail Trail Saddles
Meleta Brown Freedom Saddle by Crates Crates Trail Meleta Brown Trail Saddles
Circle Y Kentucky Trail Gaiter Trail Saddles
Martin Saddlery Clinton Anderson Saddle Trail Saddles
J. Stead Wade Saddle Trail Saddles
Down Under Saddlery Kimberly Trail Master Trail Saddles
Tucker Tucker equitation endurance Trail Saddles
Tucker Endurance generation II Trail Saddles
Abetta Abetta endurance Trail Saddles
Big horn 1637 Voyager Trail Saddles
specialized endurance Trail Saddles
Dixieland Gaited Saddles D9U/ Butterfly Trail Saddles
Dixieland Gaited Saddles Butterfly Light Rider Trail Saddles
Corriente Assosiation Trail Saddles
TN Saddlery Synthetic Trail Saddle Synthetic Trail Saddle Trail Saddles
James Saddlery Universal Pattern Military Saddle Trail Saddles
CTK saddlery TAS015 - B Trail Saddles


text:
Find Us at…
RSS Feeds and Such
AboutA web log for all fans of Walt Disney, The Disney Company, and its many products. Using the theories behind Walt Disney's family oriented entertainment and education, this blog is intended to be a safe read for the whole family. Proud to be a part of Quality Will Out Omnimedia. The Disney Blog is not affiliated with The Walt Disney Company in any way. All Disney parks, attractions, lands, shows, event names, etc. are registered trademarks of The Walt Disney Company. The Disney Blog is affiliated with LaughingPlace.com, the number one Disney Fan site on the internet. Please see creative commons license at the bottom of this page for copyright information. All content on this website is my own and does not necessarily represent the views of my employer or anyone else on the planet. The Disney Blog is supported by advertising and some of the links on this site and in product reviews are revenue share affiliate ads. I also do accept product for review and to give away as prizes. However, I compose all my editorial separate from any decision regarding advertising or affiliate links. YMMV.
Tag Archives: ariel
Holiday Gift Guide: Disney Films
Thanksgiving has come and gone, and now Christmas is next up! You know what that means…BUY BUY BUY! The annual problem is coming back: What do I get the Disney Fan in my family? Well, that is why I am … Continue reading
Posted in Uncategorized Tagged Animation, ariel, brave, David Koenig, Film, little mermaid, merchandise, Mouse Under Glass, Movies, t-shirts, wreck-it ralph 4 Comments
New Fantasyland Dress Rehearsal Photos
Yesterday the Magic Kingdom… …major sections of the New Fantastyland expansion opened for a dress rehearsal. Technically, they could close it again at any time before the official opening in December, however the history is once a section opens they … Continue reading
New Look Inside Be Our Guest Restaurant, Little Mermaid Marquee
Disney World has released three exciting new images that tease the great things to come when the Fairytale Forest section of New Fantasyland opens this fall. Above is the new Marquee to "Under the Sea ~ Journey of The Little … Continue reading
Posted in Walt Disney World Tagged ariel, attraction, be our guest, d new fantasyland, decor, Dining, disney wor, fantasyland, fantasyland expansion, food, restaurant, the little mermaid, WDW 2 Comments
Inside The Little Mermaid Wing at Art of Animation Resort
The last wing to open at Disney's Art of Animation Resort is actually the first set of buildings built. Of course, it was still called "Pop Century – Legendary Years" at the time. Later these buildings became known as Disney's … Continue reading
Posted in Walt Disney World Tagged ariel, art of animation, art of animation resort, daar, king triton, orlando, the little mermaid, travel planning, ursula, vacation, walt disney world, WDW 1 Comment
Concept art for Ariel's Grotto – New Fantasyland Meet and Greet
It took them long enough, but Disney World has finally released a little bit of concept art for the new Little Mermaid meet & greet that will be attached to, but separate from, the larger attraction. The concept art for … Continue reading
Posted in Walt Disney World Tagged ariel, ariel's grotto, expansion, little mermaid, magic kingdom, meet and greet, new fantasyland, orlando, Walt Disney World, WDW 3 Comments