Skip to main content

a silhouette of a person's head and shoulders, used as a default avatar

No Sound in Flash?


I've upgraded my openSUSE 11.1 64bit using esound to 11.2 64bit recently and the result was no sound in flash (e.g., YouTube and other streamed video) but everywhere else it worked. I've googled around a bit but didn't find anything that would work for me. So I tried to switch to pulseaudio but the result was still the same.

It took me some time but finally I found out that flash-player was installed in 32bit version but there were no 32bit libraries for pulseaudio installed. After I installed them and did the windows-like reboot, sound in flash suddenly started working.

the avatar of Sandy Armstrong

One-click install for Banshee Telepathy Sharing Extension 0.1.1

Over the course of the summer, you may have read Neil Loknath's various blog posts about his Summer of Code project that lets you share your Banshee music library with your Telepathy contacts.



Well, it's pretty cool stuff, and now that he's started making releases, it's a great opportunity for people to try it out and give him feedback.

If you're using openSUSE 11.2, you can get version 0.1.1 of his extension through this handy one-click install link.

Note that my little repository includes upgrades to telepathy-gabble, telepathy-mission-control, and gnutls. You'll need to log out/in or kill all telepathy/empathy/mission-control processes before the changes take affect.

If you're like me and prefer to build Banshee from source and Neil's extension from source but don't want to reinstall your entire Telepathy stack from source, just install telepathy-gabble and telepathy-mission-control from my repository (this will cause a few gnutls packages to upgrade as well), and you'll be good to go.



Let me know if you have any issues, but let's consider these packages officially unsupported, could break your Empathy, impregnate your cat, etc.

the avatar of Joe Shaw

Real-time MBTA bus location + Google Maps mashup

This weekend I read that the MBTA and Massachusetts Department of Transportation had released a trial real-time data feed for the positioning of vehicles on five of its bus routes. This is very important data to have, and while obviously everyone would like to see more routes added, it’s a start.

I decided to hack together a mashup of this data with Google Maps, to see how easy it would be. In the end it took me a few hours on Saturday to get the site up and running, and a couple more on Sunday adding features like the drawing of routes on the map, colorizing markers for inbound vs. outbound buses, and adding reverse geocoding of the buses themselves.

MBTA Real-time bus info

To do this I used three technologies (Google App Engine, JQuery, Google Maps) and two data sources (the real-time XML feed and the MBTA Google Transit Feed Specification files).

Google App Engine

App Engine is so perfectly suited for smaller, playtime hacks like this that it’s hard to imagine how anyone got anything done before it existed. The tedious, up-front bootstrapping that is required in so many programming projects has been enough to completely turn me off to small, spare-time hacking projects on occasion in the past. The brilliance behind a hosted software environment is obvious, but the amount of work to build a safe, hosted system with a fairly comprehensive set of APIs seems to be such a mountain of work that in many ways I find it surprising that anyone – even, perhaps especially, Google – built it at all.

I chose the Python SDK and the programming was straightforward and easy. It takes some elements from Django, with which I am familiar from work.

JQuery

A no-brainer. Hands down the best JavaScript toolkit available. Making the AJAX calls to get route and vehicle location information was a breeze, and the transparent handling of the XML data of the real-time feed prevents me from losing the will to live – a common feeling when dealing with XML.

My only complaint is with the documentation. While the API reference is good for any given piece of the API, the examples are a little light and there is absolutely zero cross-referencing to other parts, especially ones not a part of JQuery itself. It was not obvious, for example, how to deal with the XML document returned by the AJAX call. It sounds like the docs are getting some work, though, so this will hopefully improve.

Google Maps

This was my first endeavor with the Maps API, and it’s good. It’s not the best API in the world, but it’s hardly the worst either. Adding markers of different colors is annoying, but not so onerous as to make it tedious. The breadth of functionality provided is impressive, but then again it has been around for a few years at this point. Markers are easy to add, drawing the route map is absolutely trivial with a KML file, and even the reverse geocoding – which gives you a street address given a latitude/longitude pair – is straightforward.

The docs suck, though. There’s no indication that a size or anchor position is required when creating an icon for a custom marker – required for colors other than red – and due to the minified JS files tracking down that error took longer than any other task in the project. Reverse geocoding mentions that a Placemark object will be returned, but that class doesn’t appear anywhere in the reference documentation.

Real-time data feed

Lots to like. Straightforward, easy to parse. It’d be nice if I didn’t have to do the reverse geocoding to figure out what the street address is, but it’s not a dealbreaker. Main downside is that it’s XML as opposed to JSON. And of course, it’s only 5 bus routes and zero subway and commuter rail routes.

MBTA Google Transit Feed Specification files

A comprehensive set of data describing every transit route, every stop, and every route in the MBTA system. An impressive set of data encoded in a format designed for Google Transit. There is a set of example tools to view and manipulate this data, and one of those translates this data into a KML file for use with Google Maps. I should have tweaked the tools to output only the KML for the routes I cared about, but I did this by hand instead… not a big deal for only 5 bus lines. These KML files are fed into the Google Maps API to display the route as a blue line on the map when selected.

POKE 47196, 201

This is what a lot of programming is like now, for better and for worse.

On the one hand it is the perfect example of high-level component-oriented programming. Data is formatted in easily parseable interchange formats and plugged into well-defined interfaces. These interfaces plug into other interfaces. The result is a zoomable, pannable map with real-time bus location information that updates every 15 seconds. The lines-of-code count is around 100 including both Python and JavaScript. With a few hours work, I built something modestly useful out of nothing. I stand on the shoulders of giants.

On the other hand I didn’t really build anything. This is just assembly line programming. It was not a particularly creative endeavor, and it wasn’t challenging intellectually. Anybody could have done it. It’s cool, but there is little sense of accomplishment in the end product. It feels a little hollow.

Which is not to say that I didn’t enjoy it, or that it wasn’t worth the effort. I learned new technology, I played with software and data that I hadn’t had the opportunity to before. I broadened my horizons, however slightly. And it got me to write this blog post.

a silhouette of a person's head and shoulders, used as a default avatar

the avatar of Gabriel Burt

PDF Mod 0.8

Contributors
Robert Dyer, Andreu Correa Casablanca, Bertrand Lorentz, Gabriel Burt

Features
  • Add * to beginning of window title when unsaved
  • Can select more than one file in Open dialog
  • shift-ctrl-z now also works for Redo
  • Online docs now hosted on library.gnome.org
  • Add Invert Selection action
Bugs Fixed
  • Launching with relative filepaths in args works
New Translations
Bengali, Czech, Japanese, Russian

Translators
Alexandre Prokoudine, Daniel Nylander, Jorge González, Kris Thomsen, Łukasz Jernaś, Marek Černocký, Mario Blättermann, Og B. Maciel, Petr Kovar, Runa Bhattacharjee, Sankarshan Mukhopadhyay, Takeshi AIHANA

More Info
See the website for links to tarballs, git, packages, the mailing list, irc, bugzilla, and more.

the avatar of Rupert Horstkötter

openSUSE 11.2 Persistent LiveUSB Setup

openSUSE 11.2 is out the door and it looks great – be sure to get your copy while it’s hot! One of the really great features of 11.2 is the opportunity to deploy the live media to USB in no time. Thanks to hybrid iso and clicfs you can carry around your persistent openSUSE 11.2 and use it wherever you are. What does persistence mean? Changes you do to the live media are preserved across reboots and you have a real operating system in a pocket without any restrictions. Isn’t that easy?

The setup is a breeze:

1. Download the 11.2 hybrid live media

2. Byte-copy the hybrid iso to your USB stick /dev/sdX
dd if=openSUSE-11.2-KDE4-LiveCD-i686.iso of=/dev/sdX bs=32kBe aware that dd will erase all vital data from your flash media! Thus double-check that /dev/sdX actually is your USB stick.

3. Utilize fdisk to prepare an empty 0x83 partition for persistence from the remaining space on /dev/sdX, i.e. /dev/sdX2 (you should have at least a 2GB USB stick to be able to do this). The 0x83 partition /dev/sdX2 doesn’t need to be formatted with any filesystem – Kiwi will take care of this on first boot fully automatically.

That’s it! More detailed information about persistent 11.2 LiveUSB setup can be found on the wiki

Have a lot of fun!

Additional Hint: If you happen to have an installed version of openSUSE 11.2 already and prefer a GUI method to deploy the hybrid iso to USB flash media, you also may use kiwi-tools-imagewriter instead of dd.

a silhouette of a person's head and shoulders, used as a default avatar

Leadership in de-centralized communities

After speaking to various people within open source communities, one thing that is lacking, or would rather be avoided, is responsibility for leading projects and/or movements. Institutions within society in which we are trying to sell the benefits of open source to are looking for legitimate communities which offer proven sustainable results no matter how large or small they might be.

So much momentum has been gathered over the years through the development of communities and their product of innovation that it has produced projects yielded by "leaderless" communities. These communities work within circular networks which are often driven by shear idealist interest rather than practical goals.

Adversely, Traditional institutions are measured though a result based approach that is highly focused on either top-down or semi-flat management structures where the goals are defined by management.

Here is a good comparison of both aspects


I believe there is a spot in societies for both beliefs and their followers, but the future might bring more of a hybrid concept where one concept builds off the other. It will be interesting to see, but overall we need to start thinking more dynamically no matter what school of thought we subscribe to, and unfortunately I do not think we have quite made it there yet.

One day................A day after tomorrow.

a silhouette of a person's head and shoulders, used as a default avatar

OpenSUSE without the mess

I've just learned out, that openSUSE zypp has wery useful configuration file /etc/zypp/zypp.conf, which contains crucial option solver.onlyRequires. If you set it to True, only really needed dependencies will be installed (of course you can install other packages manually).

This should be also possible to set during the installation. Just need to set the value from console before the libzypp is initialize - during first few screens of installation. But don't forget that it must be set after reboot/kexec as well so it is also valid for 2nd stage of installation and installed system.

the avatar of Michael Löffler

openSUSE launch party in Nürnberg, Nov 12

opensuse

We’ll do a launch party in our Nürnberg office on Thursday Nov 12, 7-10pm CET. We’ll try to attract people from the Nürnberg area and show them what’s new in openSUSE 11.2, hand out some media and show openSUSE 11.2 in action. Additional we’ll have a number of outstanding openSUSE folks from SUSE attending and looking forward having interesting discussion. With openSUSE 11.1 we opened up for the first time the “internal” release party to the public. This time we’d like to go one step further and having the launch party just for people interested in openSUSE. We appreciate and invite of course any buddies interested in openSUSE from the Nürnberg office.

What about doing a launch party in your area and share openSUSE 11.2 with others? Just add your party to the list of openSUSE launch parties.

a silhouette of a person's head and shoulders, used as a default avatar

Multiple branches and translations

Fellow Package Maintainers,

How are you dealing with this ?

I guess f-spot is not the only project maintaining multiple parallel branches, a STABLE one, from which the releases and bugfix releases are created, and a master, open for business, new stuffs, and experimentations.

When we need to correct something on the STABLE branch, we push a new commit over there, then merge the STABLE back to master so it gets the same fixes. That works fine.

But it gets harder with translation commits. Most of the (awesome) translators (well, all except of one) translates the master and commits right there. Then, when it's time to release, I either ignore those translations (and that's seriously annoying for translators who pushed soem work in the .po), or I blindly backport (cherry-pick) the translations back to the STABLE branch and hope that no strings was removed in master's code. Then I merge the STABLE back to master. Both solutions are seriously suboptimal. Really.

I know how this problem is "solved" in most of the GNOME projects by putting deadlines and code freezes, and string freezes, but I guess we're not the only project around with this kind of issue.

The ideal workflow would be to have the translators (hey guys) aware of the STABLE branch, make them translate that branch, have them merge it back to master, and then, optionally, translate the missing/changed strings and commit that to master. I said ideal, cause I'm NOT gonna ask any translator to understand and follow this, be able to maually merge if something goes wrong, etc...

Translators (did I say thanks for your job lately) are already doing an ant job, most of them with no tools but a text editor, and we can't really add any pain to the process.

So, what are you doing in that case. How could we improve the process ?

Comments are open.