So, there we have it, a method for toggling between fullscreen and non-fullscreen mode in your ruby-maemo application. If you can’t see the code, you’re probably viewing an aggregated feed, so please view this post directly.
Also, I’d like to take this opportunity to mention that there’s a temporary ruby-maemo debian repository: ‘deb http://stage.rubyx.co.uk/maemo/ diablo user’.
A Quick Look at Maemo Official Platform in Bugzilla
2008-12-29 through 2009-01-04
A Quick Look at Maemo Official Applications in Bugzilla
2008-12-29 through 2009-01-04
I’m gradually working on documenting Telepathy, the IM/real-time-communications toolkit, though I am currently still exploring the API rather than writing text, and I am only using occasional hours here and there for even that. The delay is more due to me than Telepathy. With the help of the Telepathy developers, I have completed some simple telepathy-glib examples, giving me a feel for the API. I can now start to write up some of the text.
Telepathy actually works and is full featured, and has many people working on it. That makes it very useful to many people.
But to be honest, the API feels frustrating so far and I think you’ll see what I mean when you look at those examples. I’ll continue trying to document it so people at least know what to do, even if what they have to do doesn’t seem very nice.
Apart from the many little annoyances, I think the API suffers greatly from extreme use of asynchronicity, instead of fighting to protect application developers from that. I think that’s partly due to the choice of D-Bus for the implementation, instead of just using a C library, forcing every method call to be asynchronous. There’s also a tendency for high-level actions to consist of multiple small (asynchronous) low-level steps, though that’s partly due to the awkwardness of simulating an object-orientated class hierarchy in a D-Bus API where even (the equivalent of) a cast is asynchronous, and a consequence of needing to discover interfaces at runtime, due to inconsistent interface coverage by the various plugins (connection managers). There’s also a tendency to expose the (naturally asynchronous) client-server network behavior of the protocols directly in the API instead of combining and hiding multiple network back and forth behind simpler API, though the new TpContact class does a lot of work in the background.
However, I have not yet explored the whole API and don’t yet have a full sense of the common ways that the API is used, so my judgement could conceivably be wrong. I also suspect that it could be much worse.
If you're developing a web application that runs on Linux, and a customer asks for a report in MS Word format, you're going to be in a lot of pain. One approach is buying a Windows licence, installing it in a virtual machine, and hooking up an application to drive it over COM, and then figuring a way to talk to the VM from your web app. A simpler approach is generating a web archive file (.mht) and pretending it's a .doc file. Word happily opens it, usually.
Here's a random helpful tip: try not to have more than 2047 <ul> elements in it, or they'll start spontaneously nesting.
The best solution for an embedded high-speed tablet is to use radio technology that already exists: WiFi, Bluetooth, HSDPA, and maybe (but not likely) EVDO rev A. We already know that there is an upcoming HSPA Internet Tablet in the works. Let's hope that it gives consumers a compelling reason (in price or features) to buy the tablet instead of a Netbook, laptop, or smartphone.
This is mostly to remind myself as probably all of UK and anyone who’d google for city link review already knows to stay away. Far far away. And then some.
I’ve had two deliveries handled by City Link and both have been surreal experiences (I only need to read a few reviews to see that’s how they operate.)
I like them and I see why they’re the next big thing in hardware. They fit a nice spot, possible a better one than mobile internet devices/internet tablets: while they’re not as portable, they have a bigger screen, (almost) usable keyboard, more powerful cpu and bigger memory.
For geeks like me I guess it can easily replace laptops: I mostly use terminal with ssh + screen to our server, e17 as window manager (very light and fast), emacs for anything that requires me to edit, icecream/distcc to compile. Of course Firefox still don’t play well with memory and cpu, but I still have hope this bloat will go away some day. Since these netbooks have VGA port, we can easily simulate dockstations with usb keyboard+mouse and a bigger monitor. Long battery lifes are also a great thing to me. I still want to get one, but maybe I’ll wait one with ARM cpu (hopefully even longer battery life) and possible 3g as well, then let’s see if I can forget about my laptop as I did with my desktop some years ago.
But this post is also meant to highlight that non-geeks also like them! I was walking at a Brazilian mall the other day and spotted more than once some old women (the less tech-lovers out there) pointing eeepcs and saying they’d love to have those: they’re white, they’re small, “they’re soooooo cute” in their own words. Needless to say men of all ages and younger girls like these kind of toy too.
In my opinion Netbooks area is where Linux can gain great market share. Actually the market is still very small, but growing fast and Linux is there from beginning. Netbooks are not restricted to x86, so Linux can show its flexibility running on ARM and MIPS, areas where standard Windows does not play. Applications are not the same, or expected to be the same, people are not demanding heavyweight office applications, but they do demand excellent internet experience, and Firefox/Webkit technologies (not the apps!) do great there. Pidgin (libpurple or Telepathy) and other tools will help there, as well as our great multimedia platforms with MPlayer, Xine, GStreamer, VLC…
Another great thing about netbooks is that they’re cheap. Even in Brazil where everything imported is overtaxed, they’re acceptable. So people are willing to get one without fear of wasting too much money on something.
And let’s remember we’re talking about a new product! So it’s more expensive than what it will be in few months, you don’t see internet addicts using it at the mall and here in Brazil you see no advertisement about them, expect more buzz when this happen. It’s a exciting technology, stay tuned!
Some personal highlights:
- I got married and a beautiful little baby girl came.
- At INdT, after almost 3 years working on Mozilla related projects, started doing some stuff with WebKit in the second half of 2008, and now I am officially full time allocated to work on the Webkit port to EFL (which is an extremely exciting project and deserves a dedicated blog post). I am right now working on my first not so foo patch :)
- As I am still in love with Mozilla, I could not leave that passion aside, and I am extremely happy of also being working as consultant of two US companies (GetWellNetwork and Skyfire) on projects related to Mozilla technologies.
- In the beginning of 2008, I joined the Master Degree program, at UFAM and I am excited to be working with Information Retrieval and a bunch of other cool TechWeb stuff. It is supposed to finished by of the year.
- I could not do as much as I would like to help on some cool other open source projects, including Microb, Fennec and Prism, although whenever I got a overdose of coffee and can not get to sleep, I try to send some patches.
As it was for the Zend folks, 2008 was quite a busy year also in the Midgard-land. I think the last time there was so much activity and energy in the project must've been sometime in the early days. Here are some highlights from it:
1. As I understand it, you are in your early 20's. Can you tell us what you are currently doing outside of the Maemo world (i.e. are you working, getting educated, a combination of the two, or something else)?
Currently I'm a Junior studying Computer Science at Florida State University. I don't work during the semester, so I usually work at a local new & used bookstore over breaks to scrape together enough cash to get me through each semester.
2. As with many of the members of the Internet Tablet community, you appear to be quite knowledgeable in the areas of Linux, computer hardware, etc. Is this self-taught, or do you have formal education in any of these areas?
The demo app is a client I wrote for the Twitter service. The intention was to demonstrate how an intuitive GUI can be designed using an Image editor. With the GUI designed using Inkscape and an off-the-shelf python library to talk to Twitter service (Thanks to DeWitt for python-twitter), I only had to write simple glue code to get the whole app working. Check out the video.
Good news is I have setup a debian repo to host packages for this app.
In the Maemo Application Manager, add following Catalog:
Name: Altcanvas
Web Address: http://repo.altcanvas.com
Distribution: testing
Components: main
Refresh the application list. You should see 'twitter-inkface' app in the list. All the dependencies will be automatically pulled from the repo.
Since the repository implementation is currently experimental (No it's not a standard web server! I will save it for a separate post), you may face a problem while installing or I may have to take it offline for modifications. In that case, you can download following four packages and install them with dpkg ("dpkg -i *.deb")
libaltsvg,inkface-python, inklib, twitter-inkface.
For more info on Inkface project, visit the project page.
Maemo Wordpy has come to the 1.0 version.
After several months of hard work from the last version and also several months of delays from the planned date (I needed to have some fun too), the version 1.0 beta4 has been promoted to the Extras repository.
It will be very similar to the final 1.0 version, only bugfixes will be added.
Apologies for the delay, the holidays consumed much more of my time than intended (I hope everybody had happy and safe ones :)), so this edition will cover December and January.
My last article in this series discussed the Maemo-specific packaging features that often seem to fall by the wayside when developers are packaging for the platform. For this second installment, I'm going to focus on information slightly more relevant to regular users—interesting and, perhaps, overlooked articles in the wiki.
Ad blocking
With resource-limited devices like ours, ads can severely affect the quality of the browsing experience, and ad blocking is a simple way to avoid the difficulties that advertisement-filled websites can offer up. It's a topic not often discussed, so information can be hard to find, but this article covers all of the relevant options for ad blocking (along with their pros and cons), and walks you through implementing whichever you choose.
Extras
Many tablet users haven't caught on to the change in direction that has occurred over the last year for Maemo and its repositories. Gone are the days where one had to seek out a dozen different small repositories in order to get the software you wanted. Although we're not all of the way there yet, Extras is the place to go for almost all of your software needs, and is the only repository most users will need. This article tells you everything you need to know about the repository and its use.
Root access
Root access is a frequent issue for users new to the Maemo platform, as its acquisition and use is somewhat different from that of desktop Linux distributions like Ubuntu and Debian. This article tells you everything you need to know about why you might need root access and how to get it.
Updating the tablet firmware
Though the days of flashing-only upgrades are gone, in favor of SSU, some users may still find reason to flash. This article covers the steps necessary to flash your tablet on any platform by any of several methods.
Uploading to Extras
The days of scores of repositories are waning. Extras is now the place to get software for Maemo, which makes the lives of both developers and users easier, and greatly improves the user-experience for Maemo. This article covers everything developers and packagers need to know to get their packages into Extras and into the hands of users.
USB host mode
Having access to a USB interface for the tablet opens up a lot of doors—keyboards, mice, memory card readers, hard drives. With USB host mode you can connect these to your tablet. This article covers everything you need to know to enable and use USB host mode.
Wifi Power Saving Mode
Wifi PSM is a powerful feature that is generally not understood by most tablet users. It is a large part of what gives the tablets such great battery life, but also a source of many networking woes. This article explains what Wifi PSM does and some of the possible pitfalls of its use and how to work around them.
A Quick Look at Maemo Official Platform in Bugzilla
2009-01-05 through 2009-01-11
A Quick Look at Maemo Official Applications in Bugzilla
2009-01-05 through 2009-01-11
I’ve been invited to talk about mobile technologies for an ICT Promotion Initiative called Asturias, territorio TIC (Spanish website), that mixes technology and tourism (showing wonderful places of our region). In my case, we went to Cabo Peñas, and all the posts and videos are under “Web en tu móvil con Manrique” category. But I would like to remark the videos about Maemo and Elisator, because it isn’t very normal seeing an N810 in this kind of initiatives in Spain:
- Explaining what a Maemo device is: Dispositivo móvil de acceso a internet (youtube video)
- Explaining Elisator: Detección de animales enfermos (youtube video)
Clang’s static analyzer (description and more detailed information about setting it up here and here) is an wonderful tool that helps catching some nasty bugs and that has not been widely divulged so far. Lately we’ve been using it to help debug the Enlightenment Foundation Libraries (EFL), and I decided to post this just to help other people try it out.
In order to use it, basically one just needs to get both llvm and clang (preferably from svn, since these tools are being updated all the time) and install them somewhere on the PATH, and afterwards use the scan-build script to build the application/library you want to analyze.The output is a nice set of html files, with the reported bugs divided by type and with detailed information + commented source code.
I’m trying to maintain updated reports on the EFL here, using a really simple script that I made to compile some of the most important libraries, apart from E itself. The script is also available on the same URL, in case someone wants an easy way of trying this out.
You see - My job would be easier if I had a mobile 3G connected device (whether phone or not) with a rich web browser, VPN abilities, and good Email client. Media playback is a plus. Here's what is on the table:
- Existing Nokia N95-3/Nokia N810/iPod touch (first generation) combo. Advantages: I already have this stuff and it does what I want it to do. No added cost. Disadvantages: The N95-3 feels a little dated these days. It's a good solid phone and does the 3G, camera, texting, and MMS well but I never migrated out of the iTunes music ecosystem and have too much stuff already well organized in there.The N810 provides a better web experience than any phone, but not a better experience than netbooks.
- iPhone 3G. Advantages: I already have this and, with a lot of work, it could do the VPN and SSH work I want it to do. Disadvantages: The keyboard is simply unusable for anything but a quick message. With that keyboard, there's no way I'd be able to remotely debug a Linux server faster than just driving to the office.
- 3G connected netbook (like this deal from Radio Shack (if it is still available) or this deal from Dell though I HATE rebates) plus the iPhone 3G. Advantages: Media/phone combo works well enough, but the ability to use the netbook for "real internet/real work." Disadvantage: Another $60/mo data plan.
- Something Else. I am sure I am forgetting an option.
- Just wait. Limp along on what I have now and hope something better comes along.
FOSDEM, held in Brussels on Feb 7th and 8th, is the most important free software event of the year in Europe. While I'm going to Poland instead of there this time, the event is an excellent opportunity to learn more about two projects I'm involved with:
Midgard and a replicated P2P filesystem
Sun Feb 8th 2009 at 16:20, Room Ferrer
Tero Heikkinen, who spoke about Midgard already in OpenMind and FSCONS will be giving a lighting talk about building a peer-to-peer replicated filesystem with Midgard and FUSE. If you thought Midgard was just a CMS, this is an excellent opportunity to learn how things have changed.
You may want to have your data available and editable everywhere, even you are not connected. You may also want to share data with your friends as you meet them or just make some copies of you most important files. Keeping files sync or sharing them without any extra work is challenging.
...Storage backend is done with Midgard 2 that uses libgda for database connection. Midgard 2 provides GObjects that are available for Midgard's python bindings. Python has also bindings for FUSE so now there's a working stack for creating userlevel filesystem that is very versatile...
Bringing geolocation into GNOME
Sat Feb 7th 2009 at 16:15, Room H.1302 (GNOME developer room)
Pierre-Luc Beaudoin, the developer of libchamplain, a GTK map rendering widget, will be giving a talk about the potential GNOME (and GNOME Mobile) geostack that includes GeoClue for getting user position and handling conversions between civic location and coordinates, and libchamplain for visualizing location in various applications.
libchamplain is already on its way into various GNOME applications like the EOG image viewer and the Empathy instant messaging tool. GeoClue is in incubation into the GNOME Mobile stack, and has already been featured in the Garmin Nüvi 880 navigator.
Technorati Tags: fosdem, fuse, geoclue, gnome, midgard, p2p, libchamplain
Technorati Tags: fosdem, fuse, geoclue, gnome, libchamplain, midgard, p2p
Maybe you have tried it already: Tennix has been available for Maemo for quite some time now. The current version still has room for improvement (performance-wise), and the gameplay part runs a bit slow. That's why our team uses it as an optimization target for a course at the uni until the end of January.
Two benefits: You get a playable, fast tennis game for your tablets, and we get a bit more proficient in writing more efficient code and making better use of the current hardware. This will obviously also benefit the Desktop version of Tennix, as both use the same codebase.
I hope to be able to draw some conclusions and give you an overview of what we were able to do in a few weeks. Until now, try out Tennix and get used to its (relatively slow) speed, so that you feel the improvements when the optimized release is out :)
For those who haven't discovered it, I run a personal repository of packages for maemo. If you break your maemo device by using my repository, you get to keep both pieces. I have a few n810 units and of course my primary open source software suite, libferris, is ported to maemo and available in my repository. Libferris is a virtual filesystem which includes rich index and search capabilities. There are many nice choices for index+search for maemo, with Tracker coming out soon in the standard maemo distribution, strigi available for the n810 etc. Of course, I use libferris on maemo for my indexing ;)
My repo also contains a few handy misc packages like unison, sshfs, fuse, and tinc. Anyone notice the hints that I like filesystems? The unison package could be made to have a few less dependencies, but it works well already. I have compiled afuse, obexftp and obexfs for maemo but those are not in my repository yet because I'm having trouble getting the 810 bluetooth to work from the normal obex packages instead of through the osso-gwobex layer. It would be nice to be able to mount a mobile phone's sd card through FUSE on the n810 and share storage a bit more, but I digress.
You'll also notice cwiid and libsixdof added recently to the repository. I have been playing with a wiimote on the desktop and on the n810. The libsixdof on the 810 can read the state of the wiimote OK. The wmgui tool locks the CPU of the n810 at 100% when using the accelerometer mode, so clearly you have to be somewhat smarter about what you update for each event on an embedded device. I have hopes that I can hack maemo mapper to use libsixdof soon and thus be able to control it on an n810 using a wiimote ;) Getting other six degree of freedom controllers to work will be more of a problem on maemo because you need to use a very recent evdev with a patch for some devices.
One of the issues that still plagues libferris on maemo is the lack of prelinking. Starting an application that uses libferris causes the CPU to spend a bunch of time resolving symbols before it can start executing anything. I've enabled hidden symbols, compiled with a later gcc than the scratchbox normally uses and played games to speed things up, but getting close how quick a desktop machine can resolve symbols at application startup has still escaped me. I might end up rsyncing / to nfs:/foo and running prelink on an n810 just to see if/how much that helps things out.
that's great news for a wider Qt adoption, specially on emebedded platforms, like symbian and maemo.
see these links for more info:
- Announcement
- Ars Technica
- Dot KDE
- FAQ
- Slashdot
The press release is here, but it is a bit hard to follow unless you're an open-source developer or copyright law student. To sum it up:
- Qt software is commercial, but the source code is open to developers.
- Developers can contribute code to the Qt base.
- With access to the framework's source code, developers are able to better understand how it works and take advantage of this in developing their applications.
- Switching to the LGPL allows software makers to create commercial products extending upon the public code base. This makes the platform more attractive to big developers who have products to sell.
Wow! Making it stronger WOW to let you all know how I did feel when I received the excellent news: Qt 4.5 will be LGPL 2.1 (see official here).
I still remember myself talking to Mark Shuttleworth about possibility of Qt going LGPL and I was saying that it would never become LGPL since it was an excellent thing for Nokia, keeping adversaries away.
It turned out that I was wrong… “never say never!” they say. Nokia is seems so confident, or Motorola so non-intimidating, that it believes that doing the right thing and moving its product license to more commercial friendly will bring more developers and thus more applications.
Mark was wondering about
This will make Qt a very interesting platform. It is now truly open, cross platform, and technically very advanced.
Many people had already earlier an opinion that Qt is technically very advanced, flexible and powerful. It was only the licensing and the development model that was wrong. Now, that’s fixed.
Didn't your n810 come with an accelerometer? from Ben Martin on Vimeo.
Although libsixdof supports other 6-degrees of freedom controllers too, getting those controllers to work on maemo is a little more of a challenge. For example, I would love to use the portable spacenavigator usb device with maemo. Even though most folks have the USB cabling to hook up the unit, and it gets detected by the n810 when you have USB in the right mode, getting XInput events from evdev on maemo might be another battle. It is not like that part is trivial on a desktop distro either right now unfortunately. I might end up hacking support for direct /dev/input/foo kernel devices into libsixdof to get around that issue and have "real" 6dof devices working under maemo.
I just finished the Evolution DBus metadata API’s implementation. Information about this work can be found on this wiki page.
I just bought a round trip for the Gran Canaria Desktop Summit, flying out on July 3rd and returning on July 11th, with Europa Air, from Lyon to Las Palmas via Madrid, for €254 including taxes. I found the ticket on Expedia.
This is, quite frankly, very cheap - and I expect that ticket prices will only start going up from here on in.
To all those planning on attending: please buy your tickets now.
If you need some travel assistance, buy the tickets now, and keep a receipt, and ask for assistance afterwards. The longer you wait, the more expensive your ticket will cost, and the less likely it will be that we will be able to partially or fully reimburse you.
It might be worth your while checking ticket prices via a travel agency - since this is a holiday destination, the travel agency may have access to charter flights which aren’t listed on sites like lastminute or expedia. Also, have a look at Easyjet, a budget airline that can give you really cheap flights and isn’t listed in the online reservation sites.
Since version 0.96 MediaBox uses a component system for extensions. It is essential to understand this system when implementing plugins.
Components in MediaBox are independent objects connected to a message bus, where they can send messages or listen to messages from other components. Every component gets connected to the bus automatically when created. You don't have to take care about this step.
A plugin is a collection of one or more components grouped into a directory. The YouTube plugin, for instance, consists of a YouTube device component and a component for the preferences dialog.
Plugins can also add new messages to the vocabulary of messages that can be sent across the message bus.
Here's a little ASCII-art to summarize this all.
consist of connect to
Plugins -------------> Components ---------------> Message Bus
| | | |
| emit | | listen for |
| | | |
| | | |
| define v v transports |
+------------------> Messages
That is the patch that solves the problem for on both crashy trees, from Fedore mozilla team, iirc.
--Antonio Gomes
A Quick Look at Maemo Official Platform in Bugzilla
2009-01-12 through 2009-01-18
A Quick Look at Maemo Official Applications in Bugzilla
2009-01-12 through 2009-01-18
Controlling Canola2 using libsixdof and a wiimote from Ben Martin on Vimeo.
Two big features that libsixdof brings is the ability to configure what happens when the controller is moved on an axis, and how frequently that happens. So, if you don't like your images flicking past at 20 images / second in Canola, you can limit it to whatever / second. In the video, having maximum axis movement will only ever scroll 3 images / second. So when I hold the unit causing a continual next image movement I can still see what is happening and Canola2 does not get overloaded with events.
Flipping pages in a PDF by moving the n810 from Ben Martin on Vimeo.
Again the wiimote is actaully held behind the device. I'm sort of getting the hang of the controlling code etc so that you can use more subtle rotations of the device to issue commands to the running program. This is using the same stuff that the Canola2 video did, I could patch a PDF viewer, but for discrete events like next-page it doesn't really make a huge difference. Panning is the big thing that screams out for patching.
The major change after last release (as gupnp-media-server) is the introduction
of a simple yet powerful plugin-based architecture/api: Everyone plugin:
- is loaded into a separate MediaServer instance.
- can implement any kind and number of resources (currently only services).
- can export an icon file.
- inherit it's ContentDirectory implementation from a base class that does most
of the UPnP-related work. More improvements on this planned for next release.
- use an intuitive API to easily export media from URIs and live GStreamer
source elements over HTTP.
Other changes:
- Relicense under LGPL to allow proprietary plugins and ease of moving code
from/to gupnp libraries.
- DVB Daemon integration though a plugin. Now you can watch live channels from
your PC on your PS3 for example.
- Test plugin that exports one audio and video item, streaming contents from
GStreamer's audiotestsrc and videotestsrc elements respectively.
- Better interoperability with Sony playstation 3.
- Announce unavailability to UPnP world on exit.
- Loads of other improvements.
Download source tarball from here:
http://ftp.acc.umu.se/pub/GNOME/sources/rygel/0.2/
in the UK seeing my family which was great after so
long away.
One thing I did not miss however was the weather.
I spent the first four days with a headache due to the
cold and I seemed to suffer more this time or at least
take more time to adjust.
As the January weather continues to bring misery to
everyone there it is always nice to come back in
Brazil and start to think about the year ahead.
A personal goal is to try to remember as much as
possible from my youth playing rugby so that I can
try to translate some of the wiley old pack leader tricks
I used to use to my new role as a scrum master @ INdT
My recollections mostly involve pinching, poking eyes
and biting so I am not sure they will be too appropriate
as a tactic but never discount anything :)
The start of a new year also is great because it means
there will be another Bossa Conference coming around
soon.
This year it will happen again on March 8 -11 in the
beautiful North East of Brazil
with the focus definitely on QT, Gnome and the 'plumbing' of a distro.
great stuff planned so it will be an awesome show for sure.
Highly recommended!
Great to see too that Scott James Remnant from Ubuntu
will be there and I hope he will give us some more insights
into Upstart and the whole 'boot the distro damn fast' memes
which are gaining traction in the Linux world at the moment.
Interesting times ahead then..so see you there!.
Here at ProFUSION we’re using BlipFM quite a lot to both listen to music and share recommendations with others. Since until now no one has made a plugin for Canola (*hint*), I’ve written a really simple script in Python to parse a page and generate a podcast XML. It’s still quite hackish, but I’m going to improve it later to support more pages and stuff like that. Any comments/contributions are welcome (for all intents and purposes, the code is under the WTFPL).
Source code available here. Example podcast generated from my user here.
Get your text editor ready because this time I'm showing you the basics of plugin development for MediaBox.
Last time, I have explained the component system of MediaBox. If you haven't read this article yet, please do so as it will help you understand what's going on.
Now we're going to write a simple plugin that displays a short notification when the application has started.
As I have told you before, a plugin is a directory with some components in it. MediaBox looks for the plugin directories in its components directory. So we put a new directory in there with two empty files __init__.py and StartupNotifier.py in it:
mediabox
|
+-- components
|
+-- my_first_plugin
|
+-- __init__.py
|
+-- StartupNotifier.py
Every plugin needs the __init__.py file. This is the place where components are loaded and messages are defined. In this example, we will only load our StartupNotifier component, though.
Put the following code into __init__.py:
def get_classes():
from StartupNotifier import StartupNotifier
return [StartupNotifier]
The function get_classes is called by MediaBox to load the components. This function must return a list of the classes (not instantiated objects) of your components.
Now we are going to fill StartupNotifier.py with life. It is a simple component, so we derive StartupNotifier from the Component baseclass:
from com import Component, msgs
class StartupNotifier(Component):
def __init__(self):
Component.__init__(self)
def handle_message(self, msg, *args):
if (msg == msgs.CORE_EV_APP_STARTED):
self.call_service(msgs.NOTIFY_SVC_SHOW_INFO,
"Application Startup Complete")
That's all. This simple form of a component is called a mediator component, because it just listens for and emits messages. When a component wants to listen to the message bus, it simply overrides the method handle_message and checks for the message types it's interested in. The call_service method on the other hand sends a service call to the message bus.
When you now start MediaBox, you will be greeted by your new plugin.
Next time will be a bit more theoretical again. Then I'll talk about the different types of components and what they do in MediaBox.
Now that the list is published I can announce that my talk was approved and I’ll present at PyCon US 2009!
My talk Python enabling mobile media centers will tell you all how Python made it possible to finish Canola2 in record time and how it does not suck performance wise in mobile devices as the Nokia N800, N810 and it is even acceptable on 770! I’ll quickly cover how painful development of first version in C was, how we profiled, tools we used to write Python-EFL bindings and more.
For my beloved Brazilian friends, I plan to present it (or a similar talk) at Bossa Conference ‘09 and possible present it in Portuguese at PyCon-Brazil later this year.
What would prevent anyone from buying it at this price? Nothing - if they didn't know what was right around the corner....
I promoted the ogg-support 0.9 to Extras repository. Feedback is welcome.
I’ve also managed to get the tags (except for the album) to show up in Metalayer Crawler. But that code isn’t even in SVN yet.
Kilikali shows all the tags properly and based on the GStreamer debug prints the MLC also gets the album tag but for some reason doesn’t write it to ~/.meta_storage SQL db.
Too bad the MLC is closed source so I can’t debug further why it rejects the album tag.
As announced today at linux.conf.au, Empathy will soon support publishing your physical location to your contacts, and reading your contact’s location. This feature has been developed over the past months by Alban Crequy, Daffyd Harries and myself. While the first version will be limited to automatic location discovery with Geoclue, future versions will allow more parameters and settings.
This feature allows you to publish your location (including complete address, latitude and longitude) to the contacts on your contact list only. Of course, the level of detail can be tuned and limited. The information is published using the XMPP protocol using XEP-0080. To make a long story short, your XMPP server will need to support PEP. Turns out that pretty much everyone but Google Talk supports it: you will still be able to receive your contact’s location, but your location won’t be published.
All clients implementing this XEP will be able to display your location. Empathy will display your contacts location on a map using the map widget provided by libchamplain.
This feature will allow you to stay in touch with you friends, knowing where they are, and possibly, how late they’ll be at the restaurant!
Now the technical details. Upon startup, empathy will setup Geoclue to get your current position. Geoclue will try to figure your location using all the resources you specified (among network, cell, GPS). Upon connection, Empathy will send that information.
When you are receiving location information from your contacts, it will be stored until you decide to access that information. Upon displaying the map view, if the information doesn’t contain a latitude and a longitude, Empathy will use Geoclue to geocode the user’s location. Geocoding is converting a street address to a latitude, longitude pair.
Make sure you attend the “Bringing geolocation into Gnome” talk at FOSDEM 2009.
With only a few months to the next Community Council election, a plan is coming together on revising the voting system used; after much debate last time.
Current ProcessThe election process is defined currently as (roughly) "one-member, one-vote, 5 people with most votes gets elected". This is sub-optimal as people might not get the council they want as a whole if they vote for their most favoured candidate.
For the inaugral elections, the voting process generated a lot of heat and noise after the wheels were in motion.
The Council can put forward a new proposed voting system, but obviously since this affects how the next council is chosen, the community has to decide to ratify the proposal through a referendum.
Proposed Change: Single Transferable VoteThe target is for a voting mechanism which meets three critieria:
- Make it easy for people to vote
- Make the results of the election easily verifiable (ideally for a voter)
- Ensure the result well reflects the will of the electorate.
There are various approaches (such as RRV ) which may be mathematically optimal for the third requirement, but the (relatively) complex maths makes it fail on the first two.
So, the current favourite is a Single Tranferable Vote system. Quim Gil summarised this as:
"Preferential voting (or preference voting) is a type of ballot structure used in several electoral systems in which voters rank a list or group of candidates in order of preference."
-- http://en.wikipedia.org/wiki/Preferential_voting
In practice, instead of voting one best candidate (like last time) or choosing 5 candidates at the same level (like the GNOME Foundation does), each voter ranks the candidates by preference and maths do[es] the rest."
Out of any option, this meets all 3 requirements best of all (IMHO), even if it's sub-optimal in one or more categories.
So, for the referendum, I'm imagining there being the following options (language and wording to be decided):
- No change. The current process is fine.
- A single transferrable vote. Bullets 4 and 5 ("Each community member gets one vote" and "The 5 nominees with the most votes are elected." ) will be changed to XXX (TBD, something like "Each community member ranks ranks one or more candidates in order of preference" and "Council members will be selected according to this single-transferrable vote system " )
- None of these options is acceptable.
The Council would decide what to do in the event of the third option getting a majority of votes. My first thought is that the election would be held under the current rules and the next council would have to pick up the task.
What you should do nowIf you have any opinions on the voting system used for the Maemo Community Council elections, please raise them on the maemo-community mailing list. This thread, for example, could be appropriate "Election process referendum" .
We are very excited about this opportunity: not only will an official debmaster truly be a wonderful addition to our community development, but it will be the first time that Nokia wasn't involved in the hiring process of one of our community employees.
This speaks wonders for Nokia's desire (and trust) for the Maemo Community to be open and autonomous.
While the process of sponsoring an open community isn't alway smooth (and probably never easy), Maemo SW has been instrumental in facilitating our space and resources in a way that many community members never see -- and, it proves that there is a real dual-meaning in the word "transparency."
In the coming week or so, the Council hopes to be able to introduce our new debmaster to you. We hope that you'll welcome this person with open hearts and a willingness not only to listen to their expert advice, but offer help in becoming a part of our community.
The one thing that we do know is that the Council and the new debmaster alike wish to see Maemo develop world-class, user-friendly software.
A Quick Look at Maemo Official Platform in Bugzilla
2009-01-19 through 2009-01-25
A Quick Look at Maemo Official Applications in Bugzilla
2009-01-19 through 2009-01-25
The more dedicated among you may follow one (or several) of the Maemo mailing lists . A bunch of you probably read Internet Tablet Talk (soon to become talk.maemo.org !). One or two of you may have even figured something out via this article on EIPI 's Mobile Tablets blog. But, if my assumptions are correct, there are many of you probably rely solely on Maemo Planet in order to know what's going on with in the world of Internet Tablets and maemo.org . However you get your news, I wanted to make sure you knew about something very exciting: maemo.org is changing...
If you follow the maemo-community mailing list, you already know this. If you came across this thread at itT, you already know as well. But, if you hadn't heard yet, we are fully underway in a complete redesign of the look & feel of the maemo.org website. I've posted a few images below. You can click on them to see larger versions.
Because of help from a number of people the new "look" is being implemented and tested as we speak. We have been working hard on creating a site that is both visually appealing and easy to use. I'd like to take a moment to point out some of the main influencers: Dave Neary , Niels Breet (X-Fade), Andrew Flegg (Jaffa), Glaubert Oliveira (the maemo.org logo designer/contest winner and OpenBossa employee), Andre Cunha (OpenBossa employee), Henri Bergius (bergie) of Nemein (the company behind The Midgard Project , the back-end of this very website), Lauri Manner (neithan) from Nemein, and Reggie Suplido (creator and maintainer of Internet Tablet Talk). Of course, I 'm involved too. There are also a number of other people who I hope will forgive me for not mentioning their names here.
If you're interested in monitoring our progress — or even joining in the discussion — there are several ways to do it. First, I'd suggest subscribing to the maemo-community mailing list. Maemo-community is for community-related topics and has reatively low traffic. If you'd like to partake in a little finer grain, feel free to subscribe to maemo2midgard-commits . Here, you'll receive an email every time someone adds or changes something on the test site. Speaking of test sites, you can always just hop over to newstyle.maemo.org and see what's happening. Warning: the test site will often appear broken (or no different than the current maemo.org site) and won't always function properly.
We hope you like what you see. Trust me when I say that it will be light year ahead as far as your user experience is concerned.
At the end of this Sprint, I will pick some of the ideas to which I will commit for the next Sprint. Some items that have been added to the wiki page already are:
Category reorg
We had long discussions about what packages categories to use. Implementation and deployment is currently blocked by bug #1805. The current catalog still shows a mostly randomly-selected list of categories. It should be reorganized to use the official list of categories agreed on by the community.OS200x vs Maemo x
In the past Nokia referred to OS releases OS2007, OS2008, etc. The use of OS200x has been deprecated in favor of Maemo x (e.g., Fremantle is Maemo 5). The catalog is currently organized by OS200x, this needs to be changed to the new versioning scheme.Automatically create entries in Downloads when package in Extras has user/* section
At the moment not all applications which are available in Extras are listed in Downloads. A script could gather basic information for all user applications in Extras and create entries in the catalog. These entries can later be updated by users to give more details about the application.Add Application Manager install failures feedback to downloads
There is a plan to integrate install status feedback into the Application Manager. Downloads could use statistics from installation failures to display the "quality" of a package.I've just read on the Nokia Betalabs blog that the formerly known Nokia Chat application has been renamed to Contacts on Ovi. What really surprised me is to know that there is a version available for the Internet Tablets since last October. I have not been able to test it yet, but it seems that it is simply a plugin for the Accounts program which enables the user to register his Ovi account and start chatting.
In the FAQ page it is also noticeable that you can register your Ovi account as a standard Jabber/XMPP account in other instant messaging clients such as Pidgin and Adium.
To download the package, just point the browser of your tablet to this address or download it directly form here.
I once needed to know about SyntaxError's attributes. Here's what pydoc SyntaxError from Python 2.5 says:
| Data descriptors defined here: | | filename | exception filename | | lineno | exception lineno | | message | exception message
So far so good
| | msg | exception msg
Hmm?
| | offset | exception offset | | print_file_and_line | exception print_file_and_line
Doh!
| | text | exception text
My, that was useful. Maybe the online documentation will be better?
- exception SyntaxError
...
Instances of this class have attributes filename, lineno, offset and text for easier access to the details. str() of the exception instance returns only the message.
Um. Well, at least now I know I can ignore both 'msg' and 'message'. I think. Still, it would be nice to warn that sometimes the exception text can be multi-line.
Feb 16, 2009.
That's my bet. The Mobile World Congress in Barcelona starts then and Olli Pekka Kallasvuo, President and Chief Executive Officer of Nokia, is delivering a keynote.
Granted no one can confirm or deny that speculation. Indicators seem to be in place - such as the progress of the Maemo 5 platform, recent price drops of the N810, and the age of the N810 in the face Netbook competition.
Netbook competition? Yes - that's what I am putting in there. Maemo Internet Tablets and Netbooks are geared for different sets of needs, but the "middle consumer" who wants a mobile device but without specific parameters will choose a Tablet OR a Netbook - not both. That middle consumer is actually bigger than the Tablet or Netbook markets themselves.
If you happen to be in Barcelona, try to make it to the Mobile World Congress. Even if there is no new Tablet, there are some major players in the mobile space delivering keynotes. I look forward to reading the coverage.
A generic E-mail metadata API
Ars Technica has a nice introductory article about GeoClue:
A multitude of factors are contributing to a mobile computing renaissance. Some of these factors include the growing availability of ubiquitous mobile Internet connectivity and the rising popularity of netbooks and other Internet-enabled small form-factor devices. These changes are inspiring a renewed interest in location-aware software and web services.
A framework called GeoClue aims to enable integration of location-aware technologies in Linux desktop applications. It is an abstraction layer that makes geolocation functionality accessible through a standardized desktop-neutral API that is easy for applications to consume. It will provide a C library and also expose its functionality through D-Bus, an interprocess communication system that is widely used on Linux.
Gtk+ map rendering widget libchamplain and the recent Empathy-GeoClue XEP-0080 integration announcement are also mentioned. In the KDE/Qt end, Marble would provide similar visualization features.
Technorati Tags: geoclue, gnome, kde, libchamplain, marble
The second version of the Fremantle alpha SDK has just been released, see the announcement and go get it now.
The Maemo community is organizing a dinner during Fosdem (probably Saturday night), if you have plans to attend Fosdem conference, feel free to add your name to the attendees table, and let us know if your are interested in the Maemo dinner and what are your prefered night(s).
We also need some help of people from Brussels or nearby, in order to find a central place with fair prices to host the Maemo dinner, suggestions ?? All the help is appreciated :) .
Searching for audio files on an NFS share from maemo from Ben Martin on Vimeo.
The n810 only has one memory slot. With an 8gb card in there you might fit 1,000 ogg files onto your storage. That was quite boaring, so I instead indexed an NFS share that is over 10x larger ;) I'm using one of the libferris inverted file backends for the index, which is more targeted at the desktop machine assumptions of having a faster CPU and expensive disk head seeks. Needless to say, I'm hacking on a custom index implementation for maemo which will be more oriented at a slower CPU with much much less expensive disk seeks for flash based storage.
Note that the time after I run ferris-music-search to when the first message appears on the console "Using index..." is fairly much all wasted in dynamic linking. A major slowdown that I've yet to sweep away for running apps on maemo.
The artist and title info is taken from the ID3 tags in the audio files. Indexing time is roughly 3 to 10 milliseconds per file when performed on the desktop. The inverted file index format is portable from desktop to maemo device. I plan to make the new explicit maemo format portable too, so you can make indexes on powerful machines and rsync them over to the maemo device. Assuming you are indexing stuff that is stored on your file server, not the maemo device.
During the typing for the first search on title, possible completions are shown by taking your input as a substring of the title you seek. This is more effective if you keep it in mind because you can choose just a few keys in a substring of the title. All searches are performed using regex matching on strings, which is much slower than direct equality because of the huge complications it introduces for indexing. But it is interesting, even with modestly 10x the number of files you can cram onto an n810, using nasty slow regex searching, the performance is acceptable for much of the time. There are a few cases that I'll improve, particularly regex searching on whole URLs.
Notice that the name and URL are shown as columns, so you can easily "group by" when you click on the appropriate header. I need to also include the artist, title etc ID3 fields into the results,. Oh, and have the ability to click on a few files and see the whole ID3 and metadata of those files "side-by-side" so you do not have to try to read it from the results list.
So now when I see a CD in the shops, I wont have to wonder how many of those Mozart tracks I have already, I can know for sure :-p
I have come to the conclusion I should be writing more frequently here. I need to improve my English skills and this could be a way and a fun one.
I am a bit busy with the finals at the moment but I could write some lighter stuff in these times. It’ll become a more personal blog and specially with more stuff about Chemistry, and not only about Maemo.
Pimsleur Guy: Pretend you’re in the lobby of an hotel and you meet someone. How do you say hello ?
Me: NANDAYO!!!
Pimsleur Guy: And how do you ask if he understands english ?
Me: NANDAYO!!! NANDAYO!!!