Developer Blog

Grant Goodale Wins Music Hack Day Prize, JuxBux Team Pwns

This past weekend Idan and I represented Boxee at Music Hack Day in San Francisco, a rad hackathon event focused on music technologists of every stripe. We met some very enthusiastic Boxee users, met some top notch engineering talent, and saw some singular hacks over the course of the weekend.

Winning our top prize for bringing the electronic music community BeatPort to Boxee with a soon-to-be-released Boxee app was Grant Goodale (@ggodale)! Called BeatBox, the app allows users to flip through the top 100 most popular and recently released tracks as well as browse by genre through BeatPort’s huge catalog of electro tunes. Grant put together the killer hack in 18 total hours of development time with no previous Python experience. Grant had this to say about the experience:

I’m impressed at how easy it is to build great apps for Boxee.

In addition to meeting Grant, we got to get some quality hack time in with a pair of developers to work on our own hack called JuxBux. Joined by Noah Zoschke (@nzoschke) from Heroku and Antoine Margurie (@antoinem) from Fairtilizer, we produced a social music jukebox game for Boxee.

The scenario stems from a frustration common to many New York startups: space. With the limited office space in Manhattan, most startups can only reasonably have one set of speakers going at one time, leading to a natural conflict of musical tastes. JuxBux turns that conflict into a social game by creating a jukebox controlled by the crowdsourced selection of those present in the office. Users can submit tracks to the queue, vote on the current playing track, and expend the points they earn on instant plays and vetoes. We’re planning on continuing development on this hack and doing a public release soon.

Many thanks to Noah and Antoine for lending their extensive talent to the project - it was great working with you!

Got a developer event you think Boxee should represent at? Talk to Idan at idan [at] boxee [dot] tv!

Your Friend JIRA - A Quick Guide To Bug Squashing With Boxee

Like most developers, my day begins and ends with opening my bug tracking software. It is the secretary for the coding set; the clutch organizational tool all hackers use to stay organized and keep on top of their apps.

Boxee joins many other open source projects by relying on JIRA as our bug tracking software of choice. A best-of-breed dbase for keeping track of your app’s issues and features, our JIRA implementation is available to you the Boxee developer free of charge as you release your apps on the platform.

As you get started using your JIRA account on Boxee, you may wonder how the developer community defines many of the fields in your bugs. What does “resolved” really mean? How is that different from “Closed?”

Well worry no longer with this helpful guide to using our JIRA dbase to make your app better.

Status

  • Open: The issue is open and ready for the assignee to start work on it.
    When an issue is opened in Application project. it is automatically assigned to the Component owner.
  • In Progress: This issue is being actively worked on at the moment by the assignee.
  • Reopened: This issue was once resolved, but the resolution was deemed incorrect. From here issues are either marked assigned or resolved.
  • Resolved: A resolution has been taken, and it is awaiting verification by reporter. From here issues are either reopened, or closed.
  • Closed: The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.

Resolution

  • Fixed (Default): A fix for this issue is checked into the source control and tested.
  • Won’t Fix: The problem described is an issue which will never be fixed. Or This behavior is by design.
  • Duplicate: The problem is a duplicate of an existing issue.
  • Incomplete: The problem is not completely described.
  • Cannot Reproduce: All attempts at reproducing this issue failed, or not enough information was available to reproduce the issue. Reading the code produces no clues as to why this behavior would occur. If more information appears later, please reopen the issue.
May 13, 2010 at 8:05 pm

Giving Away a Boxee Box at Music Hack Day

Part of what I love about my home theatre rig is playing music through Boxee. Whether it’s my music library or streaming apps like Pandora and Last.fm, Boxee’s gorgeous interface is the first listening experience I’ve used that feels native to a living room. Music apps continue to be strongly represented in our Top 25 apps each week and with this month’s Music Tech Summit in San Francisco, we see a prime opportunity to up that count even more.SF Music Hack Day Logo

Idan and I will be attending this year’s Music Hack Day to connect with the brightest developers in the music industry and we’re bringing a sack of goodies along. On hand to help hackers bring music services to the television, we’re holding another friendly hacker face-off with a serious prize up for grabs: a Boxee Box as soon as it is available.

This 15-16 May, we’ll be awarding the hotly anticipated hardware from our partners at D-Link to the best music app to be completed at the weekend codefest. And, if that wasn’t enough, we’ll have a Boxee T-shirt for every hacker that completes a Boxee app during the fest.

All you need to win is to get on the waitlist for the event, show up ready to hack, and produce an app that is ear-popping, face-melting, brain-blistering wholesale-monkey-rodeo awesome.

Well, maybe not this awesome…

star-wars-awesome

…but something close.

May 5, 2010 at 3:28 pm

Play Video Without Losing Your User With PlayInBackground()

Some of my favorite experiences on Boxee feature a “picture-in-application” display where the video that is playing is presented next to rich app functionality. To curb the corporate talk, I love it when I can work in an app without interrupting my viewing experience. From simple implementations like the videowindow control in eGuiders to the realtime conversation experience provided by Cliqset, offering your users the ability to interact with your application while they watch video is one of the great experiences the Boxee platform can create.

Up until now, maintaining application focus while playing a ListItem has been somewhat problematic. Developers who want to play a video, but also keep the focus of the user on the application have had to use some threading gymnastics in order to create the experience they want.

Fortunately, with Boxee’s latest release 0.9.21, developers now create that experience with one API call. PlayInBackground() is a new, appropriately titled method in Boxee’s Python API that works just like the tried and true Play() developers have come to know and love, with one big difference. Instead of directing the user to Boxee’s video player, the media is played “in the background” without changing the user’s focus in the application.

Just like Play(), PlayInBackground() accepts a ListItem object as an argument. Consider the following code in an onclick event for a list container with id “100.”

# Instantiate Player object
myPlayer = mc.Player()
 
# Retrieve ListItem object from list container
items = mc.GetActiveWindow().GetList(100).GetItems()
n = mc.GetActiveWindow().GetList(100).GetFocusedItem()
listitem = items[n]
 
# Play!
myPlayer.PlayInBackground( listitem )

The video can then be displayed to in your app with a simple videowindow control. This GUI control allows the developer to surface the playing video in his/her app with positioning and dimensioning just like an image control.

Consider the following XML:

<control type="videowindow">
	<posx>15</posx>
	<posy>207</posy>
	<width>520</width>
	<height>293</height>
</control>

And just like that, your app has “picture-in-application” support! The uses for this new method are bounded only by imagination, a resource I’ve learned is in abundant supply in this community. Enjoy!

April 30, 2010 at 8:48 pm

Hug JIRA with Boxee On Monday

Next Monday, the May installment of what is becoming a favorite Boxee tradition - JIRA Hug Day! “JIRA Hug Day” is our internal name for taking one day when everyone in the company - even non-technical folks - jump into our bug tracking software and squash as many bugs as possible. The result of previous Hug Days can be found evident in the notes of our last release, increasing the overall stability of the experience and enriching our user experience.

This time around, our engineers would like to invite you the Boxee application developer to participate for our marathon squash fest. Your apps are the crown jewels of the Boxee experience and we’d like to take a day to polish them with you.

Here’s how you can participate:

1) Get on JIRA

You can sign up for a JIRA account here. This will allow you to create your own filters for your apps, comment on bugs, and watch the issues that are important to you.

2) Make Sure Your App Is A JIRA Component

A JIRA component is created for the boxee-apps project for every app in our main app repo, however JIRA is great for tracking the bugs of apps distributed in third party repositories too. Your app does not need to be in the App Library to be on JIRA. If you don’t see your app listed, be sure to email me at rob [at] boxee [dot] tv to get a new one.

3) Grab Some Bugs!

Use this guide to find the bugs that are important to your apps and get to squashing!

My goal for the development community this Monday is to turn the summary for the boxee-apps project upside down, meaning we resolve more bugs than we took in for the month of April.

Hop on JIRA, get plugged in on the forums and on #boxee on irc.freenode.org, and show JIRA, and your users, some springtime love.

April 27, 2010 at 4:26 pm