Tag Archives: PulseCaster

PulseCaster 0.1.10 released!

Today I released PulseCaster 0.1.10 with some under the hood improvements:

  • Switch from GConf to GSettings, and include schema file
  • Providing appdata for GNOME Software
  • Provide hidden “audiorate” key for 44.1/48 kHz selection
  • Complete GObject introspection switchover, eliminating excess dependencies and fixing bugs (RHBZ #1045717)
  • Automatically provide .ogg filename extension in standard mode
  • Additional translations

I’m planning some UI improvements for this little podcasting utility. I’m also hoping to do significant code refactoring for 0.2, tentatively scheduled for late spring/early summer. I’m also thinking about moving the central development repo to GitHub, since that’s where a lot of other Fedora incubated projects have migrated.

Of course, updated packages are coming shortly for Fedora 20.

PulseCaster lets you record interviews with simplicity. It pulls audio from two sources via PulseAudio, then mixes them into an Ogg Vorbis file for you. There’s also an expert mode that allows you to lossless audio in WAV format, and mix the audio yourself with post processing. For example, you could interview someone via a Voice-over-IP (VoIP) application, then include the interview in your podcast.

I used a little time between sessions (and during one session where I was completely in over my head) to push this out. It was nice to work on some free software of my own at a conference for developers! Hope you enjoy the new PulseCaster release.

PulseCaster 0.1.9 is released!

Yup, 0.1.9 has finally made it out the door. Here’s the tarball and the git repo. There are also updated packages coming shortly in Fedora 17, 18, and Rawhide. If you want to help test those to get them out sooner, look here for the package for your Fedora release.

Plus, did you know there’s a Facebook page for PulseCaster? Visit it, like it, and feel the love.

PulseCaster 0.1.9: The gruesome details

I have no witty release name attached to any of the releases, so let’s call this “The One Where We Figured Out How to Give People an Expert Option and Translations, Too.” Some of the secret features you’ll find in this release:

  • An expert option
  • Translations

OK, I’m being a bit snarky here. Mainly I’m trying to play all nonchalant about how long it actually took me to get around to working on another release. Here’s a better listing of new stuff in 0.1.9:

  • PulseCaster now uses GTK+ 3.0.
  • PulseCaster also now uses PyGObject and GObject introspection for most stuff. The GStreamer bits are still a bit rough in the gir code. Specifically I found it difficult to get at messages on the bus. I’ll keep working on that, possibly for 0.2.
  • There’s now an expert option that writes the recorded streams to two separate files in lossless FLAC format, so you can mix your own recording later. The default mode still writes a single Ogg Vorbis file, which suffices for most people. (The code here’s more than a bit hacky and needs to be cleaned up in 0.2.)
  • Using the excellent Transifex service, translations are now part of PulseCaster! Many thanks to the wonderful volunteer translators around the world who contributed translations to the release, and to the Transifex folks for their great service.

Future work

Some of the features on the current roadmap:

  • Clean up messy separate-stream code (see above)
  • Provide a recording pause button
  • Do some volume leveling and/or compression to help recordings sound better
  • Provide more helpful information on disk space available/used

As always, you can find the PulseCaster site at http://pulsecaster.org — bugs and enhancement requests are welcome. Input from users helped to drive (eventually!) the work for this release, so a tip of the hat to them for participating!

A fun day… for some hacking.

Over the course of the day, I:

  • Tweaked the package complement on my workstation where last night I did an installation of the Fedora 15 pre-release tree
  • Identified some weirdness in my local Eclipse environment and got things in better shape for later work
  • Got a good start on some user documentation for PulseCaster
  • Took my daughter to the skate rink, and managed to skate for at least a little while before realizing I was having a rough time because my kingpin bolts are just way too freakin’ tight
  • Figured out how to adjust said kingpin bolts and made a note to take care of that before next week
  • Took my son out for some errands and lunch — a nice trip and a good chance to exercise my patience muscles
  • As a reward, bought some beer and a couple decent malbecs
  • After returning home, cleared out some obsolete packages hanging around in Bodhi and begging for death
  • Built and pushed a new update of PulseCaster to fix some bugs
  • Built and pushed a refreshed upstream version of xmlstarlet
  • Played with the dog
  • Came back and turned up a French trance station I got into recently (for some reason, monotonous, non-vocal electronica seems to help me work more efficiently… probably since there are few lyrics to listen to and digest mentally)
  • Went through some email to reduce backlog for Monday
  • Triaged a crummy gnome-system-monitor bug affecting people with more than 4 CPU cores (like me)
  • Had dinner with the family (Eleya made a fabulous corned beef, first timer but it was pretty much perfect!)
  • Came back to the desk to find that the superhuman Matthias Clasen had fixed the gnome-system-monitor bug in question, and built and pushed an update out
  • Installed said update with many thanks to Matthias, tested, and provided feedback

So of course, my definition of hacking is not nearly what some of my colleagues manage daily. But I feel like attacking some of this stuff on weekends and working on my own GNOME-ish projects are starting to give me a better fundamental understanding of some of the plumbing at work in the desktop. And of course, it gives me a wh0le new appreciation for it as well. I’m now rocking GNOME 3.0 pre-releases on both my main systems here at home, my laptop and my big workstation, and loving it.

I’ve contributed a few bug reports and to a small portion of the GNOME 3.0 user documentation for this release. It was lots of fun and made me feel connected with the release process for something I use every day that will be an intrinsic part of Fedora 15 when it arrives. It’s a great feeling to be just cranking on some little bits to help others, and just as much as ever, I know that if everyone does the same, free software has a future that is even brighter than the (already well-lit) present.

PulseCaster released!

Yup, a new release of PulseCaster is finally out with some real improvements. Iffy design? You betcha. Ugly code? Don’t even get me started. Pernicious bugs lurking? Bring it on. But I’m still happy, and you know why?

Working VU meters. That’s right, it took me forever to find the answer that was right under my nose all the time: the GStreamer “level” element. Why build a bunch of bindings to PulseAudio, even if I love it, when I can just set up a GStreamer pipeline with a couple quick Python commands? It seemed to me I pored over the GStreamer docs constantly when I started working on this project, but somehow I just kept missing “level,” when it was all I needed.

The recording guts haven’t changed at all — PulseCaster is currently designed to do just one thing, which is allow you to record two sides of an audio conversation supported by a PulseAudio server to an Ogg Vorbis file you can immediately publish. So if you want to interview someone using a SIP application, you just dial them up, run PulseCaster and set the inputs, and hit the record button.

That being said, this is a 0.1.x series and is nowhere near what I want the interface to look like eventually. I have plans for that, <evil_laugh>mwahahaha</evil_laugh>. But it’s at least the teeny-tiniest bit useful as is, and because it’s Python, it’s eminently hackable if you have the inclination. Just wear shades when you read the code so you’re not blinded by the horror.

The git repo has a TODO list currently, but I’m going to make an effort to transfer its contents soon to Trac tickets at the upstream site, and do a better job at release management. You know, in my copious spare time.


Presents for everyone!

Even though I’m on vacation, I had some fun catching up with some geeky Fedora work, like handling bugs and package maintenance over the last few days. It only took me a few minutes at a time to do something useful for (hopefully) many other users. Along the way I was helped by other contributors, like Kevin Fenzi, who did a package review for me, or bug reporters who tested a package update.Β Among the things I got done:

  • Took over maintenance of the notify-python package, and fixed a missing documentation problem
  • Produced some testing updates for the stable 2.0 branch of blogtk
  • Fixed a missing icon problem in the nautilus-open-terminal package
  • Packaged and issued push requests for the new package python-babel-BabelGladeExtractor
  • Went over my pending package reviews and pushed each one forward in some way

Some of these things had been on my “to-do” list for a few weeks, but I didn’t have time for them during busy workdays. Since my evenings and weekends have been pretty full this was a great opportunity to scratch some of these things off my list.

I also got to work more on my PulseCaster project, although I haven’t yet made the sweeping interface changes that I’d like for the next version. I also bought the pulsecaster.org domain for it, in the hopes that will spur me to work even more on it over the next few months. I fixed a couple workflow issues in the interface and was able to remove a little code with some “create on demand” dialogs rather than putting them in the Glade file.

I’m still hung up on needing some additional and more complicated Python pieces, like querying the volume level of a source or sink so I can introduce a VU-meter like control as part of the interface changes. But in the meantime, I’ve started to get much better and faster at implementing ideas in PyGTK. I’m not sure my coding style is as good as it should be, but my understanding of concepts has gotten fairly good, so I can translate PyGTK API docs into the ability to do something. I gave a couple conference speeches over the past year on PyGTK that I hoped would give other people in similar shoes — people who can write scripts but aren’t familiar with GUI programming — a primer that allows them to “cross the bridge” into exciting new territory.

Lest my family oriented friends think I’ve been shirking my domestic obligations, or failing to use my PTO to rest and rejuvenate, I also did a lot of relaxing personal and family things over the last few days. Some of these things were responsibilities even if they were fun, or a nice change from work or geeky stuff. The funny thing is, most days since I went on PTO I’ve been getting up at about 7:00 or 7:30am so as not to waste the whole morning. For me that’s at least somewhat a luxury, since I normally get up at 6:00am for work. Here’s some of the things that extra time allowed me to get done, even if I threw in an hour or two of work on geek stuff each day:

  • Attended piano recitals for both my kids
  • Went to the elementary school chorus performance for my daughter and the super-fun singalong that followed
  • Volunteered at the school library by shelving books with my wife
  • Handled the remainder of the Christmas shopping
  • Did some “Santa errands” like going to the skate rink to get some sweet, fast bearings installed on one of my daughter’s Christmas presents (new quad skates)
  • Went grocery shopping so my wife could be at the school to help as a classroom volunteer
  • Had a new door to our deck installed — a more energy efficient slider with low-E glass and integral blinds (OK, this mostly consisted of checking progress and signing paperwork)
  • Played some games with my kids

I also got to do some completely selfish leisure stuff, like trying the new Sam Adams Infinium (I give it a 90 on the beverage scale), playing our new piano and some guitar, and hanging out with our dog Dixie — the world’s greatest pound puppy!

Speaking of pound puppies, a quick step up onto the soapbox here: If you are looking for a pet this holiday season, or whenever, please adopt one from a local shelter. I’ll write more about this in another post later, but I wanted to throw that plug in here in case you’re one of the numerous people who might get a pet during or after the holidays.

We did a little share of unhappiness thrown into vacation, though. First, my ’00 Accord ended up needing a new transmission, which is going to be rather expensive. However, we’re very fortunate to be able to handle it without any real financial discomfort. Not everyone these days is as lucky, so I try not to take that for granted. My brilliant and dedicated colleagues and coworkers at Red Hat have made that sort of security possible, and I’m very thankful for all their hard work! This vacation time in part allows me to hit the ground running in 2011, so I can continue to do likewise by them. πŸ™‚

The other disappointment is that my mom took ill yesterday, and is feeling really crummy today. That means she and her hubby won’t be coming to Christmas Eve dinner this year as they usually do. Eleya has put together a really scrumptious menu for us, and certainly we’ll still enjoy it, but it’s too bad it’ll just be us, with no company to share it with. But then again, we’re really fortunate to have each other and a bountiful meal to celebrate the holiday — and tomorrow we get to visit my sister where we’ll see the rest of the family.

Anyway, that’s a big update on all my doings of late. Wherever you are, and however you choose to celebrate the season, I hope you have a fantastic time and that you get to spend it with friends and loved ones.

FUDCon Toronto report.

There have already been plenty of posts about all the good stuff that happened at FUDCon Toronto 2009, so just repeating the same details would seem like gilding the lily. Easily over 200 attendees as of Day 1, and we had other people showing up over the weekend, and students stopping in on Day 3, asking questions and sharing stories. A great facility at Seneca, thanks to Chris Tyler and crew. Lackluster broadband at the hotel, but a great hack suite experience nonetheless. Questionable pub surroundings, very little sleep, loads of fun, and a marvelous event overall.

OK, that sums up everyone else’s posts, so how about what I accomplished, other than teaming up with Mel Chua and Chris Tyler behind the scenes as the Indefatigable FUDCon Ninja Trio?

Day 0: Not much other than checking in with the hotel to make sure they were ready for the bus. Dinner with Greg DeKoenigsberg, Howard Johnson, David Huff, Yaakov Nemoy, and many other Fedorans at the infamous “Irish Pub.” Arrived a bit late for the actual FUDBus landing, but got to greet almost everyone arriving at the hotel. Then realized everyone was going to the pub again and cursed the fact that I hadn’t had a healthy snack to get me through for a late night dinner.

Day 1: Realized we just broke BarCamp — at least as a “do everything the day of” event. In the future, we’ll need to have a night event for our scheduling. The consolation prize, of course, is our “embarrassment of riches” when it comes to talks: more than we can fit in the schedule, to be sure. Thanks to Yaakov and an intrepid crew of volunteers, we also had almost every talk logged on IRC so that remote contributors could “listen in,” ask questions, and participate from afar.

In between event troubleshooting and hallway conversations, I caught part or all of:

There’s kind of a trend there, since I’m keenly interested in the experience of Fedora and how we might all bring our individual skills to making it better. I also gave my own wacky commentary on Fedora and some ideas on thinking beyond our subjectivity to broaden Fedora’s reach, widen its appeal, and attract more contributors to what I think is ultimately a more sustainable approach to working in the free software community.

On a semi-related note, there’s a saying you’ll find on my blog site. You won’t see it in RSS readers of course. It reads, “Esse quam videri,” which means “To be and not to seem to be.”* The free software distribution that we enjoy comes to us thanks to the efforts of thousands of people upstream from Fedora that write some of the code we use, and one of the things we need to do over the next year is redouble our efforts to support them. In addition, we need to recognize all the Fedora contributors who are vital parts of upstream communities, and support them as well. And in doing that, we need to be true to our FOSS philosophy and practices — walking the walk, not just talking the talk.

I drew a brief metaphor in my FUDCon closing comments on Day 1 to $FAST_FOOD.** Leaving aside all my veggiesaurus friends for the sake of argument, the success of $FAST_FOOD implies that a great number of people find $FAST_FOOD’s goods to be tasty and affordable. And the advertising and marketing of $FAST_FOOD sure tends to reinforce that — even going so far as to imply their food good is for you, and high-quality.

But unfortunately, the widepsread, negative side effects worldwide, from obesity (yes, I’m looking at you, mirror) to agricultural nightmares to economic problems, tend to say otherwise. There are better ways to produce nourishing food, and promote healthier and more sustainable lives. And in the same way, there are better ways to produce free and open source software that don’t sacrifice freedom or choices for users, and promote “healthy” upstream collaboration and cultivation.

And that’s what Fedora represents to me: being this sustainable force, not simply appearing to be so.

So, back to my FUDCon tale: Following the technical sessions in BarCamp, of course there was the world-famous FUDPub event, dominated by snicky-snacks and pool sharks. I also got to meet, live and in person, previously virtual-only friends like Adam Miller and Karlie Robinson. I also tried to troll Max Spevack, but was too earnest to carry that off properly, and failed miserably (sorry Matt, I tried). Max is a master at this so maybe I need to take some lessons! Or alternately, in the future I’ll just stick to wearing my heart on my sleeve, which apparently suits me better.

Day 2-3: We moved to a different building where the hackfests would be more effective, putting people together in small rooms or around workgroup-sized tables for better face-to-face exchanges.

To start off the day, I gave an introductory talk on PyGTK development, aimed at people who were in the position I was last year — understanding the basics of Python, and knowing how to write basic programs, but not understanding how to build a GUI around it. I explained things in rudimentary terms, such as how events work with GTK, the inheritance model for objects, and how to look up properties and functions using system resources like DevHelp when writing code. These were the things that were so difficult for me to wrap my head around as a liberal artsy non-programmer, every time I sat down and tried to bridge this gap, and I think I hit the sweet spot for a bunch of the attendees. And fortunately, there were a couple experts in the room too, who I could rely on to tell me if I was Getting It Wrong, or offer additional advice to the attendees.

A bunch of people took this information and started thinking about cool ways we could extend and, to some extent, universalize PulseCaster to meet more of our media origination needs. We did some brainstorming about use cases and also interface design to support them; that’s hard work but very worthwhile, and also incredibly important to me because I want a tool that meets the GNOME HIG and remains simple, slick, and usable by non-technical people. I’m really keen on working on this more over the next few weeks, especially during my vacation time when I can set my own agenda.

During the rest of these days I had a number of meetings with different people to understand issues, listen to ideas, give feedback where it was wanted, and facilitate everyone else’s FUDCon experience:

  • Watched Mairin Duffy and the FOSS usability lab in action, although I didn’t get a chance to participate myself as a tester (surprise!).
  • Sat in on part of a conversation between Fedora contributors that ranged widely from PackageKit to team dynamics. Unfortunately, I had to leave partway through to handle some hotel logistics.
  • Talked to Pam Chestek from Red Hat Legal, who attended the whole conference and not only gave a planned talk on trademarks on Saturday, but made herself generally available all weekend for people to walk up and ask questions. She let me know she very much enjoyed FUDCon and I hope that she’ll return for the next one.
  • Discussed EMEA events and community with Jeroen.
  • Had a chat with Christopher Aillon and Jon McCann about their Fedora install/update talk and related issues, and thanked them for the work they’ve been doing to improve communication between members of the Desktop team and the overall Fedora community.
  • Had lots of ad-hoc meetings with Mel Chua where we tried to make sure all of our financial i’s were dotted and t’s crossed.
  • Handled a couple of urgent Fedora issues on the side, but generally failed to keep up with my email and RSS (and paid the price this week!). πŸ™‚

Day 2 ended with a nice dinner with Max, Matt Domsch, Dennis Gilmore, and some other Fedora folks at the Ice Cream Patio. Christopher Aillon and I split a nice bottle of valpolicella, although I think that I probably got the better part of a 60/40 split, and the food was very good, especially the dessert (my amaretto trufata was excellent, and if Dennis wasn’t so imposing a figure, his raspberry crepe would have been in danger too if I could have distracted him somehow!). We talked a lot about disasters for some reason, and hearing what Matt and Christopher had both experienced in the way of real estate catastrophes, I felt completely humbled about my stupid and trivial basement leaks.

Day 3 ended quite differently, with dozens of Fedorans crammed into our hospitality/hack suite at the hotel for hors d’oeuvres and fun conversation. For the most part, people set their laptops aside and wound down from an action-packed weekend. My manager, Tim Burke, VP of Linux Development at Red Hat, was there too.Β  I do have to say that it is incredibly empowering and supportive for one’s manager to show up at the most important regional event as a participant — and at the risk of sounding like a suck-up I think that’s one of the things I really like about working with Tim. Maybe I’d better say something negative to balance it out — we wish he’d brought beer! πŸ˜€

In general, this FUDCon was one of the most exciting events I think we’ve ever had. It was certainly one of the, and maybe the single, largest ever. I’m really grateful to all our contributors who made it such a success, bringing their talent, their knowledge, their passion, and their willingness to help others contribute to free software through Fedora.

Coming up to this event, I’d been struggling a bit with some mental and spiritual exhaustion. This event helped me get Fedora back into perspective and reminded me what a beautiful thing it is to be surrounded by wonderful, smart people — and how much we can accomplish when we bring our ideas together and compare them constructively to find the best way forward. Thank you to every single one of you who participated either on-site or remotely, for the gift of renewal.

See you at the next FUDCon!

* The original Cicero quote is also worth knowing: “Few are those who wish to be endowed with virtue rather than to seem to be so.”

** I’m not naming one here to avoid the obvious legal entanglements. πŸ˜‰

UPDATE: Apologies to Colin for absent-mindedly fubar-ing his last name.

FUDCon, Day 2 and 3.

Sorry this comes late. I took a couple of days off after the Goodwill Tour o’ Doom to unwind with family and my blogging suffered as a result. FUDCon Day 2 was our BarCamp, which we organized the evening of Day 1. Day 3 was a continuation of some hackfests from Day 1, along with a couple additional sessions.

  • One of the hallmarks of FUDCon is the BarCamp segment and this FUDCon definitely didn’t disappoint. We had a great variety of talks on Day 2, from Ambassador development and equipment, to a UI design clinic, to getting started hacking on wireless, to an array of system administration topics. It was a great variety and there was practically no way you could show up and not find something to appeal to you for most or all of the day.
  • I didn’t see many talks myself, between working on organization, having one-on-one conversations with some of the attendees, and just helping Max make sure everything was ship-shape for the other folks there.
  • I did get to hold a session based on my little PulseCaster app. Unfortunately there weren’t many attendees, but the upshot was that I got a private design clinic with Mairin Duffy. She helped me find some excellent ways to improve the interface for the next version, which I’ll probably work on later this weekend if I have time. I did get some interest from a couple of the podcasting folks who were around, including the Linux Outlaws, who now have a show available in which they interviewed me and Max.
  • Max has already written some of the post mortem stuff we talked about at the event, so it’s worth checking out that post if you haven’t done so already.
  • Sometimes you simply can’t please all the people all the time. We seem to get conflicting feedback at every event about how the next event should go, and those changes inevitably lead to many people asking for the event to be planned the way it went originally. While that can be frustrating from the organizers’ standpoint, it’s very important to us to keep those channels open and always try to be improving these events, while realizing that it’s impossible to have one perfect event for everyone.
  • When traveling, always make sure you leave a venue with every personal item you carried in. ‘Nuff said.
  • The photos from the event are incredible, especially the one that led to the FUDCon Berlin 2009 poster. Thank you to Nicu Buculei and many others who did such a wonderful job showing how much fun and friendship we have in the Fedora community. (Hmm, maybe the fifth foundation is actually “Fun”!)
  • Day 3 was a little light, but one of the highlights was Chitlesh Goorah’s talk on the Fedora Electronics Lab, where a number of attendees gathered in the main hall to hear about the revolutionary inroads he’s been making with the EDA and manufacturing business community, showing off the wide expanse of open source tools available in Fedora.
  • I think the best part of FUDCon for me was seeing and catching up in person with Max, with whom I talk fairly regularly but don’t get a chance to see often since he moved to Europe. Great job on FUDCon, my friend!

I flew home Monday (with another slightly-too-long layover in the hell of Heathrow) exhausted but very, very happy with the state of the European community and the excellent work being done by so many Fedorans there. Many thanks to Gerold Kassube, Joerg Simon, Fabian Affolter, Jens Kuehnel, Jeroen van Meeuwen, Christoph Wickert, Thomas Woerner, and so many others for making this a fantastic event. Also special thanks to the Red Hat security team, including Mark Cox, Josh Bressers, Murray McAllister, and many more, for making a roosting place at FUDCon, and also for making themselves available for our community to ask questions and discuss issues.

There was a lot of talk about where to hold the next FUDCon EMEA — I think most people agree that we should do somewhere other than Berlin, to spread the FUDCon joy around the continent, just as we are going to try to do with the North American FUDCon later this year by having it somewhere other than Boston. Wherever we hold it, I am certain we’ll be graced with some of the brightest, most energetic, and friendliest FOSS lovers from around the globe. Thanks to all of you, for making our community such an amazing place to work and play every day.

Credit due.

I didn’t realize until very recently that our yum-presto plugin and DeltaRPM leverage a good bit of work done over in the openSUSE community — and that work is AWESOME. If you check out one of our recent podcasts for Fedora 11, you’ll hear Jon Dieter talking about this feature and the work he did to enable DeltaRPMs in Fedora. The fact that open source made it possible for us to bring this openSUSE work to our community is a true testament to the power of sharing.

Recently I had another reminder of how cool it is to work in free software — while working on my PulseCaster project, I was in serious need of some Python bindings for PulseAudio. Unfortunately, they don’t exist as such in the upstream code, but the Python “ctypes” module allows you to wrap any arbitrary C library, as long as you’re willing to spend the time defining for Python the appropriate functions’ expectations for memory structures. I found a project in which someone had done this work for PulseAudio sinks — but I needed sources. Well, it turned out to be no problem, because by reading the other code and comparing it to the generous PulseAudio developer documentation (produced by Doxygen), I was able to create that code myself — and then send it back to the other project!

The feeling of both having my work cut in half (or more), and then being able to share my work back with someone else for their benefit, felt so good. It made me recallthat underlying all this talk about Distro X or Distro Y is the fundamental goodness of sharing code from one developer to another. Superb!

So thanks, openSUSE, for the DeltaRPM goodness. We are making good use of it here in Fedora too, and we appreciate your contribution to our distribution — our users just know they’re having a better experience, and we’re happy to share that love too.