Planet IM

September 02, 2010

TextOne for iPhone, with photo sharing!

Our iPhone version of TextOne, the simple and fast messenger for smartphones, has received a nice photo sharing feature.

TextOne, the simple, light and fast smartphone messenger, is now offering a new feature to share photos with your friends.

Easy, a new icon appears at the top right of the conversation screen, you just need to tap it.

There, you can choose to take a picture or select one from your albums... and add the text you wish.

This will appear in the conversation as a taped instant photo, like any other messages.

You can also browse the photos exchanged with your contacts.

Of course, this also works with TextOne Pink!

Photo sharing in TextOne will let you share good moments with the people to whom you are close. Or alternatively play ;-)

And finally, you can play with it

August 28, 2010

felipec

Hi,

This is a maintenance release with not so many changes, mostly to fix the nasty DST bug. Everybody is encouraged to update.

That’s basically it. Enjoy :)

Felipe Contreras (7):
      oim: trivial cleanups and reorganization
      Fix date parsing for DST
      tests: add tests for DST date parsing
      plugin: add official set_alias()
      oim: fix crash on bad auth
      win32: tag 0.1.1
      dc: trivial cleanup

Download from the (usual place).


August 26, 2010

Call phones from Gmail

(Cross-posted from the Gmail Blog)

Gmail voice and video chat makes it easy to stay in touch with friends and family using your computer’s microphone and speakers. But until now, this required both people to be at their computers, signed into Gmail at the same time. Given that most of us don’t spend all day in front of our computers, we thought, “wouldn’t it be nice if you could call people directly on their phones?”

Starting today, you can call any phone right from Gmail.



Calls to the U.S. and Canada will be free for at least the rest of the year and calls to other countries will be billed at our very low rates. We worked hard to make these rates really cheap (see comparison table) with calls to the U.K., France, Germany, China, Japan—and many more countries—for as little as $0.02 per minute.

Dialing a phone number works just like a normal phone. Just click “Call phone” at the top of your chat list and dial a number or enter a contact’s name.


We’ve been testing this feature internally and have found it to be useful in a lot of situations, ranging from making a quick call to a restaurant to placing a call when you’re in an area with bad reception.

If you have a Google Voice phone number, calls made from Gmail will display this number as the outbound caller ID. And if you decide to, you can receive calls made to this number right inside Gmail (see instructions).

We’re rolling out this feature to U.S. based Gmail users over the next few days, so you’ll be ready to get started once “Call Phones” shows up in your chat list (you will need to install the voice and video plug-in if you haven’t already). If you’re using Google Apps for your school or business, then you won’t see it quite yet. We’re working on making this available more broadly - so stay tuned!

For more information, visit gmail.com/call.

Posted by Robin Schriebman, Software Engineer

August 23, 2010

Swift 1.0-beta6 released

It’s been a while since we released the previous Swift beta. As a result, the sixth beta is quite packed with bugfixes, speedups, and general improvements. The list of changes is too long to describe here, so head on over to http://swift.im/releases/swift-1.0beta6/ for details and downloads of the last Swift beta, and let us know what you think in the MUC room – swift@rooms.swift.im.

August 19, 2010

Use Linux? Now you can video chat too

(Cross-posted from the Gmail Blog)

If you’ve been wanting to use voice and video chat on Linux (our top video chat request), then we have good news for you: it’s now available! Visit gmail.com/videochat to download the plugin and get started. Voice and video chat for Linux supports Ubuntu and other Debian-based Linux distributions, and RPM support will be coming soon.

Posted by Tristan Schmelcher, Software Engineer

Tsung 1.3.3 has been released

Tsung 1.3.3 fixes severals bugs. It fixes support for SSL with erlang R14A.

Tsung 1.3.3 brings some minor bugfixes.

  • fixed parent proxy not working in 1.3.x (tested with 1.3.2 and 1.3.0).
  • fixed url substitution is broken in some cases
  • fixed Tsung not using sessions with low probabilities
  • fixed SSL not working with erlang R14A
  • fixed failure when a proxy is used and an URL substitution is set
  • fixed HTTP cookies support when a proxy is used
  • fixed hanging at the beginning using distributed setup
  • fixed "if" statement, which is not allowed in a transaction

August 18, 2010

Sentience discovered in the Linux kernel

Ladies and gentlemen, after much experimentation, I have made a remarkable discovery. Perhaps the very first case of a sentient AI has been discovered, sitting right under our noses, in the Linux Kernel. With such a complicated codebase that has evolved greatly over the years, there are certainly more surprising places for it to spring up, but it’s still quite unexpected.

And where, specifically, has this sentience manifested itself? The suspend/resume code.

See now, like many of you, I’ve dealt with the instabilities of suspend/resume. I’ve considered it to just be buggy, unreliable, and possibly incompatible with my hardware. That is, until I realized that there’s a pattern. One that began to make a sort of sense.

A couple months back, I gave suspend/resume another shot, and to my surprise it worked. I figured that Ubuntu 10.04 finally fixed it, but it still wasn’t perfect. I still noticed problems.

The first thing I noticed was that when I unsuspended at work, I couldn’t use my volume keys. Everything else was fine, but my laptop’s volume keys didn’t register as a key press on anything. If I suspended again and brought it back home, the keys would work fine. If I suspended at home and resumed at home, I wouldn’t have the volume key problem. Weird, but just buggy, right?

It was a couple weekends ago when I suspended my laptop to take it somewhere. It wouldn’t suspend at all. Just hard-locked. This continued until the week, when it worked again. Last weekend? Same problem, couldn’t suspend. Monday, it worked fine.

It was then that I realized suspend/resume was breaking deliberately! See, my laptop feels more comfortable at home, less so at work but it tolerates it (with some complaining), but absolutely doesn’t want to leave during the weekend. It’s like a cat that just wants to be in a familiar environment, selfishly vying for your attention through mischievous acts. Look at it hard enough and the pattern emerges. It’s undeniable.

That got me thinking. What other possible instances of AI have we been misconstruing as bugs or random glitches? All those inter-connected street lights that occasionally shut off as you walk underneath them? Maybe they’re just shy, or they hate you. Maybe NES cartridges just found being blown stimulating.

So remember guys. Windows suspend/resume may work just fine. Mac too. But Linux’s suspend/resume isn’t a buggy pile of crap. It’s an intelligent buggy pile of crap, that just wants to be loved.

August 17, 2010

Tracker: Direct Access branch merged in master

A while back we had this bug from Bastien: 613255 – “Read-only, non-DBus, store access”. For the past 5 or 6 weeks we have been working on this. Initially the idea was just to do direct access, but once we got started, we realised that the libtracker-client API wasn’t really good enough and we would like to extend it. But we didn’t want the old API there either, so we came up with this new library to supersede libtracker-client. For now we package both, but all functions in libtracker-client are marked as deprecated at this point.

So what do we have now? Fundamentally we have ONE API for different backends using different technologies. To summarise:

1. D-Bus (libtracker-bus, backend)
2. Direct Access (libtracker-direct, backend)

D-Bus – Read/Write Access
Depending on the version, we either use FD passing (requires > 1.3.1) to avoid copious memory copies OR we use D-Bus glib marshalling which represents the worst performance you can get from Tracker (though it is still usable).

Direct Access – Read Only Access
This is based on a library we had internally in Tracker called libtracker-data. We merged some things to make this happen (like libtracker-db) but generally, we sit on top of this library in libtracker-direct.

Plugins?
The backends are dynamically loaded at run time depending on the client’s needs (i.e. if you only ever do SELECT type queries, you’ll use the direct-access backend).

How does the API look for libtracker-sparql?
The idea here was to facilitate all the old API needs and some new ones. What we wanted was less API bloat and to incorporate some of the things we had in the code base all spread out in multiple libraries into this libtracker-sparql. These things include:

  • Connections – used in libtracker-client, we wanted some common way to get a connection to Tracker regardless of what backend was in use.
  • Cursors – used in libtracker-db and wanted as a public API for some time, but not possible without WAL (Write Ahead Logging) in SQLite 3.7. Now we share the same API internally and externally.
  • Builder – used in tracker-extract for building SPARQL queries for selecting/inserting data.
  • Utilities – used in tracker-extract, the miners, etc. for escaping text used in SPARQL queries and some other common functionality.

Example
So this is what you might expect with the new API:


TrackerSparqlConnection *connection;
GError *error = NULL;
const gchar *query = "SELECT ?class WHERE { ?class tracker:writeback true }";

connection = tracker_sparql_connection_get (&error);

if (!connection) {
	g_printerr ("%s: %s\n", _("Could not establish a connection to Tracker"), error ? error->message : _("No error given"));
	g_clear_error (&error);
	return;
}

/* The NULL below is the GCancellable */
cursor = tracker_sparql_connection_query (connection, query, NULL, &error);

if (error) {
	g_printerr ("%s, %s\n", _("Could not query classes"), error->message);
	g_error_free (error);
	g_object_unref (connection);
	return;
}

if (!cursor) {
	g_print ("%s\n", _("No classes were found"));
} else {
	while (tracker_sparql_cursor_next (cursor, NULL, NULL)) {
		g_print ("%s\n", tracker_sparql_cursor_get_string (cursor, 1, NULL));
	}

	g_object_unref (cursor);
}

g_object_unref (connection);

So, now we have direct access. I have ported my tracker-needle experimental application to it and it seems faster than tracker-search-tool (which it aims to supersede). I will blog about tracker-needle later, but for now, direct-access is available in master for anyone interested to try it out! This has been a huge team effort with Jürg, Philip and Aleksander Morgado and myself involved. Try it out, any comments about the API are appreciated and it is documented quite nicely too.

Last updated: September 04, 2010 05:01 AM