Plex Media Center for OS X Leopard

Archive for the 'Status' Category

State of the Release

Just over 24 hours since the release, and this has been an extremely exciting time for all of us. We simply can’t tell you how much we appreciate the outpouring of positive feedback on the release. Over Twitter, Facebook, email, and in the forums, the number of positive comments were astounding to us, and definitely made all the hard work worthwhile. We all want to say, collectively: Thank You.

A few salient things about the release:
  • The demand on our server was completely unprecedented. The OS load went over 30 for long periods of time, and there were HTTP and database issues. Isaac jumped in and quickly and skillfully spread our services out over a few spare slices and was able to return things to normal. Isaac, you rock.
  • Our mirrors (a big thanks to them!) were hammered badly as tens of thousands of downloaders tried to get the latest release, so in the morning we moved the main download site to S3 to ease of the pressure on the mirrors and get the app into people’s hands faster.
  • At this point, all services should be performing well, and we’re continuing to monitor and make adjustments as needed.

We are also tracking at this point a number of issues with the release (nobody’s perfect, right?), and we wanted to give you a quick summary of the more common issues, along with workarounds or resolutions whenever possible. Note that these are not the only issues, just the ones at the top of the list at the moment:

  • CRASHES ON STARTUP: We’re tracking these here. The most common reason (fixed in the next release), is if your computer doesn’t have a name. You can easily workaround this by going to System Preferences > Sharing > Computer Name and put in a clever, well thought out name like “Macadamia”. There’s also a crash we’re seeing on Leopard, which will also be fixed in the next release. Please post your crash reports in that thread.
  • SCANNERS: First and foremost, we’d like to help you get all your media into the library. There were issues with M4V files stopping a scan, an issue parsing date-base episodes, and an issue with .AppleDouble folder which we weren’t ignoring. We’ve pushed bug-fixes for these issues, and your Plex Media Server should update automatically the scanners within the hour. The good news is that you simply have to do another scan (assuming you don’t already have it set to automatically scan). You might be asleep at this point, and you might wake up with a bunch of missing episodes tucked comfortable into your library, and that, my friends, is magic. MAGIC! (If you’d like to track the progress on the scanners, you can follow our Github repository here.)
  • TV SHOW METADATA: Slightly less about magic, and more about laws of large numbers, I’m sorry to report that we, um, melted down TheTVDB today. My sincere apologies to them, and my apologies to you all, as we’ll be without metadata from them until we figure out how to reduce the load. We are working with them as we speak, and hopefully will be able to bring that back online shortly. The good news is that the Alexandria library system has been architected for this exact scenario, and you’ll still be able to scan your episodes into the library, and play them, there just won’t be show and season posters or summary data (until the next time you’re sleeping, when we’ll silently push another update and you’ll wake up with lots of posters). We really like magic, have I mentioned that?
  • LOCAL MEDIA AGENT: This is the one that picks up existing thumbs and fanart and such. There were a few bugs in it, and we think we’ve fixed them, but we need to test more. If you’d like to take the new agent for a spin and know what you’re doing, feel free to check it out here. (Note that you’ll need to remove and add the section to get the new art to “stick”, expect improvements here.)
  • AFP SHARE ISSUE: There seems to be an issue adding folders which live on a remote NAS. A bit baffling, but we’re looking into it.

There are of course other issues, but these are the ones we’d like to get resolved as soon as possible. So, how can you help? Why, I’m glad you asked. If you’re having trouble getting your media into the library, please post in the forum with your exact directory and file layout (screenshot or ls -lR from the terminal).

A few other tips:

  • If you’re seeing pausing when playing video in the iOS app, there are a few simple things you can do. Don’t select “auto” quality setting, and make sure you select a quality that’s appropriate to your network speed. Also, make sure you’re not trying to play 720p content (highest quality) to an iPad/iPhone4 if you have a slow server (less than 2.2GHz). Use this as an excuse to upgrade (“Honey, but don’t you want to watch So You Think You Can Dance without a pause ever time she does a pirouette?”). And finally, if you take the wireless router and tape it to your chest while using the iOS app, this improves reception.
  • If you have a huge library, you might want to let the Media Server take a bit of “alone time” while scanning for the first time. I mean, come on, it’s walking through all your files, computing hashes, extracting thumbnails, generating automatic fanart, analyzing the media, getting it all into the database, talking to the Internet for metadata, downloading that metadata and getting it associated with your media. Multiple agents are working together to contribute data. There are hamsters running around everywhere. So just sit back, work on your golf swing or water the garden or something. Lotus position and staring at the Plex Media Manager works well.
  • A positive review on the App Store directly contributes to Barkley’s diet. Like every time we get a five star review, I walk into the kitchen, get him a delicious venison jerky treat and feed it to him. Literally. Just remember, only YOU can make Barkley gain 10 pounds.

And now, I really need some sleep.

99 comments

One More Thing

We have a confession to make.

There’s something we haven’t shared with you yet.

We’ve been working on it for quite some time.

We hope you like it…

(Click on the image to find out what it is)

One more thing 9-10.jpg

161 comments

Continuing the Conversation

So I’d like to hear a bit more about these scanners. That wasn’t a question, but sure. They are little snippets of Python code that are invoked by the Plex Media Server when scanning a library section. They are passed a list of files, and a list of subdirectories, and return a list of media objects. They look at the list of files, convert ones they recognize into media objects, and are also allowed to remove any subdirectories they don’t want to recurse into. Also, they can be “stacked” or “pipelined”, so the Movie scanner first calls the “Video Files” scanner to eliminate all the non-video files, and ends by calling the “Stack” scanner which stacks those pesky CD1/CD2 files, for example. Modular, extensible, and flexible.

That meant absolutely nothing to me, can you tell me something cool from the end-user perspective? Sure. As written, the TV scanner and the Movie scanner both take advantage of each other so that I can actually add the same “Incoming” directory to both my Movie and TV library sections, and they each pick out just the media that they’re supposed to. It’s not perfect, but it works pretty well.

Wait, but what happens when I move my media from my Incoming directory into its final resting place? Alexandria uses “turbo hashes” to keep track of files, so it’ll detect the fact that you moved the file, and you really won’t notice, it’ll just work.

OK, riddle me this! What if I have media on an external drive, unplug it, and then scan. Surely all hell will break loose and the Media Server will crash, choke, or delete my content, right? Right?! You mistake us for amateurs, kid. We just note that the location is offline and don’t whack anything.

So I have to keep updating my library manually? Only if you want to. You can update each section manually, hit a URL (if you’re the scripting type), have the library update periodically (every hour, say), or even enable “fs_events”, which auto-magically scans your library when something changes. Doesn’t work perfectly yet, but it’s pretty magical when it does.

I made a movie section, watched some stuff, rated some stuff, and then I accidentally deleted my section, or maybe I didn’t have it configured right, or maybe I just felt like recreating and scanning from scratch. Somehow, all my view status, ratings, and even position in the file wasn’t lost. Is this magic? Yes.

But I even renamed some movies in the process. And moved them elsewhere. How the @#$%@ does that work? Magic.

I’m really not sold on this centralized server thing. A bunch of my movies are located on my “server” machine, but I also have a bunch on the machine where I have Plex. Isn’t that horrible inefficient? As long as the paths are the same on both machines, Plex will simply use the local path for media when it’s available. We call this “optimal media routing”. (It’s actually the only way that VIDEO_TS movies work now, but that’s an aside.)

But I’m a UNIX hacker and I have Chinese food in my beard. Command lines FTW! The Plex Media Scanner can actually be run from the command line and do a variety of things like scan, refresh, list sections, add new sections, etc.

What’s your favorite metadata agent? It would have to be the IMDB agent written by the brilliant and handsome Scott. It’s not perfect, but it’s almost frighteningly good. An anecdote from a recent tester explains it better than I ever possibly could: “I had a big pile of old Danish movies, some which contain certain 18+ content….Plex/Eight recognized them all as this one weird English documentary program with an innocent icon. Plex/Nine recognizes and identifies it correctly – exposing rather explicitly that I had this old and forgotten folder of movies….AMAZING“.

But when the site changes, it’ll break and I’ll complain. The new agents auto-update just like the plug-ins, so as soon as we fix it, everyone will instantly benefit.

Well, this all sounds too good to be true. Can you explain some of the rough edges? Sure! Like I said, VIDEO_TS movies need to be accessible via the local filesystem, they don’t work over HTTP yet. VIDEO_TS files don’t scan properly for TV shows yet (due to my personal hatred for the format?). Let’s see, what else? You can’t specify DVD order vs aired order at the moment. The Music Scanner is pretty slow. I’m sure there’s more, but you’ll tell us about it soon enough.

What about date-based shows? Well, I’m sure it’s not perfect, but this folder of junk scanned in perfectly. And if you haven’t seen the 2005-01-25 episode, I highly recommend it, Rob Cordry at his absolute best.

The Daily Show.jpg

So I added some sections, and now I’m totally mesmerized watching the Media Manager. Can you explain what it’s doing? Yes, the Core Animation viewer is quite fun to watch. Obviously, the starting point is the gray Plex icon. When it starts looking for a match, it gets an “atom” icon overlaid. If it finds a match, it goes dark while the metadata loads, which can actually take a while. After it’s loaded, it flips over with the poster. Also, since the media analysis happens in parallel, sometimes the gray icon turns into a thumb before the metadata is loaded as well, just depends on the order in which things happen. This image below shows the three stages.

Plex Media Manager.png

It takes forever! I’m impatient! The posters don’t show up in Plex! WTF? BBQ! There’s an easy solution for this one. Get a nice cold microbrew, put on some good music, and watch the Media Manager, while sitting in Lotus position. Watch it. Become one with it.

It doesn’t do movie collections yet! I can’t edit the metadata manually! I’m pissed off. I want my money back. Remember what I said about this being the ground floor level of the building? Give us a chance to add a few more floors, you won’t be disappointed.

I’ll leave you with Barkley, enjoying a lilikoi. Namaste.

Aperture-1.jpg

46 comments

Showing a bit of skin…

One of the other frequently asked questions we get is “what is the status of skins for Plex/Nine?” The answer, which I’m going to illustrate with a bunch of screenshots is “excellent!”.

A number of months ago, we invited the very talented Alexander (reddragon220) and Brian (maverick214) to take the early releases of Plex/Nine for a spin. They gave us great feedback on skin-related changes we were in the process of making, such as the media flagging, and together we made sure that the new features were skinner-friendly. They were then kind enough to work with our design master Jay on an evolution of the MediaStream skin, parts of which you’ve seen in the screencasts. I can’t tell you how much we appreciate the hard work and dedication from these guys, thank you so much for all the help!

As if helping us with MediaStream wasn’t enough, they also have their hands in their own skins as well as Plex ports of other skins, such as the popular PlexAeon. Also adding to the skinning talent is Marc (El Massman) who is, by his own description, “getting a load of bad-ass skins ready for Plex 9″. Because we’ve worked so closely with the skinners, porting over skins to Plex isn’t that hard at all, and advanced features such as the media flagging is trivial to add.

All three of these great guys took some time to send me sexy screenshots from the skins they’re readying (or already have finished) for Plex/Nine, and without further ado, here you have them (not bad, right?):

 

NewImage.jpg

NewImage.jpg

rapier_actor.jpg

rapier_plugins.jpg

refocus_recent_episodes.jpg

post-503-12808649820711.jpg

refocus_home_sections.jpg

alaska_movies.jpg

alaska_home.jpg

screenshot20100826at102.png.jpg

screenshot20100826at955.png.jpg

confluence_redux_movies.jpg

32 comments

The Road to Plex/Nine

It’s been a long time in development, and we’re finally putting the finishing touches on the first public release. An incredible amount of effort has been spent developing this new version, and I’d like to take a bit of time introducing you to it. I’ll start by answering a few frequently asked questions:

Are you guys being bought by Apple? If you pay attention to how previous acquisitions have gone, you’ll already know the answer to this one. An Apple acquisition is usually followed by immediate disappearance of the service/product in question, sequestered away no doubt to a secret sub-basement in Cupertino. The fact that we’re still here talking and the website is still running is a sure sign that we have not been acquired by Apple. (The date is entirely coincidental, we went “one week out” and ended up there.)

Will my favorite new feature/bug be added/fixed in this release? Probably not. We’ve been uniquely focused (much to the surprise of some, who think we’ve just been playing Angry Birds) on getting the Alexandria library up and running. The only new feature in this release is the official inclusion of Ryan’s hardware-accelerated video decoding.

Can I run the new version alongside the old version? The answer is “mostly”. When you install Plex/Nine it will set aside your old Application Support directories so as not to step on anything. If you hate it and want to go back to Plex/Eight, you can just rename the directories, whack Plex/Nine, and crawl back into that comfortable old pair of Plex/Eight jeans.

Is this new release completely bug free? Um, no. This is the first release of a massive from-scratch rewrite of the library, and it’s safe to say there will be bugs, and even things that used to work that don’t work yet with the new version. However, we hope some of the cool new stuff coming your way will more than make up for it. This release has been through 17 (really!) builds which have gone out to our elite group of super-testers, but there are certainly lots of bugs. Remember what your mom told you: “Hope for the best, expect the worst, and take what comes with a smile.”

Why the @$%#%$ did you guys have to rewrite all that stuff? I’m really glad you asked. Our vision for the future of Plex is a distributed architecture, as opposed to one giant monolithic program. A simple picture might help here:

Untitled.png

In order to realize this vision, we had to effectively do two things: (1) rip out massive amounts of code in the client and make it into a “thin client” (essentially just player and skin), and (2) design and build the Alexandria library system into the Plex Media Server.

We consider these major changes to be fundamentally important to the future of Plex. We’re building the foundation for some truly incredible things, and building a strong foundation takes a lot of time and work. Continuing the metaphor, the first release really only shows you the foundation and perhaps a few ground-level floors. However, once you see the speed at which we can add amazing new features, you’ll better understand why we had to take so much time to get this right.

Can you walk me through an example of how this new library is so much better than the old one? One thing I really like is the decoupling of the scanning from the metadata. The scanners are responsible for looking for media, usually on disk, and performing “structural identification” (e.g. Lost, season 3 episode 14″). Media analysis is also performed to get the resolution of the file, pull out a thumbnail, etc. The media is added to Alexandria right at the start of scanning. Note that at no point yet has TVDB or any other Internet site been required. So you can scan new episodes into your library even if the site is down, and see them next to other episodes. What’s more, you can write a custom scanner in a few lines of Python code, which you might want to do if you have a custom filesystem layout for your media. Flexible!

Untitled-1.png

Now the agents, in my opinion, is where things get incredibly cool. They elegantly solve the problem of “how do I bring metadata from the Internet and connect it with my media?”. The agent functionality, along with the other parts of the new plug-in Framework coming in Plex/Nine was designed by James, and I have to be honest, he’s kicked some serious ass.

Plex/Eight used the XBMC scrapers to accomplish that task, and if you’ve ever tried to write one (or even modify an existing one), you’ll know that it’s not an easy task. As Jamie Zawinski once said: “Some people, when confronted with a problem, think ‘I know, I’ll use regular expressions.’ Now they have two problems.” (The only thing worse than regular expressions, mind you, is regular expressions encoded in XML.)

Plex/Nine’s metadata agents use the same (well, an enhanced) version of the Plex Plug-in Framework you’ve come to know and love. This means that powerful XPATH, Unicode, and HTTP functions are available in an easy-to-use manner, and you can write an agent in as little as a few dozen lines of code.

One of the other fundamentally neat things about agents is that multiple agents can contribute to a piece of media. I might want to get my ratings from Rotten Tomatoes and my descriptions from IMDB, for example. The other day Scott said “the movie descriptions on Wikipedia are really good!” and an hour later, this is what my own configuration looked like after I dropped his new agent in:

Info Provider Settings.png

The “Local Media Assets” agent is the one responsible for finding posters, banners, fanart and such sitting around next to your media. The Wikipedia one is the next highest priority agent, which means that the metadata combiner will prefer its summaries over others.

I think I fell asleep during that last answer. Yeah, I don’t blame you.

How open and extensible is this awesome new library? Well, you tell me. The database is stored in SQLite format, and there is a really nice REST-ish HTTP/XML interface for all areas of the library (which is what the Plex client uses). Want to build a dashboard widget which displays your recently added movies? Easy! Fun! And given that the Alexandria scanners are completely written in Python and support custom-written ones, this new library is much more easily customizable and user-tweakable than the old one. We’re really excited to see what interesting agents and scanners you come up with!

I think I’m out of questions. Good, because I need to get back to Angry Birds.

54 comments

A Quick Update

Wait is Over 9-10.jpg

88 comments

A Sneak Peek At Alexandria

I know, it’s been a bit longer than we had hoped (sorry!), but we are super excited to finally be able to share a first look at what we have been building. Our good friend Raindancing (known around here as “Señora Awesome”) was kind enough to put together a great introductory screencast . Yes, there’s a lot more to show (tip of the iceberg!), and yes, you’ll have many questions, but hey, this is a good start, right?

Hope you all are having a great Wednesday (or Thursday)!

 

For those of you having trouble seeing the video (or visiting on your iPad, the direct link to the video on Vimeo is here: http://vimeo.com/11880867

290 comments

Hardware Accelerated H.264 Decoding on Plex

It’s been just a few days since Apple finally released their Video Decode Acceleration Framework Reference, but Ryan has been working hard and we have some exciting news to share with you. He has managed to get Plex integrated with the framework, and for the first time, your GPU is used to decode H.264 video. The results are incredibly impressive, with 720p and 1080p video decoding smoothly with much reduced CPU utilization.

If you have a NVidia 9400M (or the new GT320/330M chipsets), and are running Snow Leopard 10.6.3, take it for a spin! As with the last post, download the binary [try the new binary below] and install it into Plex.app/Contents/MacOS. Once we get a sense of how well it’s working, we’ll spin an official release.

And yes, Al, this build does include the sleep fixes as well.

NOTE: Just to reiterate, only NVidia 9400M/GT320M/GT330M chipsets benefit from this. No support for ATI, nor for cards like the NVidia 8800 GT. This is a limitation of the framework provided by Apple (and many thanks for providing it, guys!) and may be addressed in future updates (but don’t get your hopes up). Also, Snow Leopard is required.

UPDATE: Try this new binary, which should fix the crashes. Thanks to Ryan for the quick fixes.

274 comments

An Inconvenient Bug (or two)

So I’m sitting there coding the other day, and the phone rings. I pick up absentmindedly, because really, only Anna calls me. “Hello”, says the voice on the other end of the line, in an easy quasi-drawl “this is Al Gore”. My brow furrows, because I don’t believe it at first. “The Al Gore who invented the Internet?” I ask suspiciously. “One and the same”, he says.

“I called to ask for a favor”, he continues. “You see, I run Plex on my three monitors, and I noticed that when I set the display sleep timer, my monitors still wake up after a few seconds.”

I suddenly have a bad feeling. Barkley can sense it too, I think, because he opens one eye for a second, and then falls back asleep.

“So I ran the numbers”, Al Gore continues, “and, well, with all your users, this bug is going to result in a 3 inch rise in sea-levels over the next hundred years. Son, do you know what this means?”

“Well”, I say, somewhat uncomfortably, “I saw your film”. I leave out the part about feeling really sleepy about half-way through and waking up with drool on the couch. “I thought you were really good.”

“This is no joking matter”, he says all serious, “fix this bug, and save the planet and the people of Tuvalu in the process.”

Needless to say, I fixed the bug.

I’d love it if you could give it a try for me before I send it over. You can find the binary here (replace the one inside Plex.app/Contents/MacOS). It fixes two issues and adds a new feature.

  • Display sleep bug fixed.
  • Double sleep bug fixed.
  • Ryan W kindly added support for MP4 subtitles (apparently Gore hates MKV and has all his media in MP4 format).

If it works well, I’ll spin another full release with the fixes.

Here’s Barkley, with a ball for each fix.

IMG_8936 (1).jpg
49 comments

The Road to Alexandria (part 1): Introduction

(First of all, a sincere apology for not writing sooner. Communication is important, and I’ve sorely lapsed in my communication with the Plex community. This may have appeared as a lack of progress on Plex, but let me assure you, it’s entirely the opposite. We have some amazing things to share with you this year, and we’re only getting started.)

As most of you know, for the last year we’ve been working hard on best-in-class support for online media. Since we released the first version of the Plex Media Server with support for plug-ins, there have been hundreds of plug-ins written, and more than 1.4 million plug-ins downloaded from our store. We strongly believe that our platform is the easiest way on the planet to get media from a website to your living room TV.

On the other hand, many people who first see Plex are impressed most by how it handles your local media. To see a file on your hard drive spring to life with posters, fan art, and rich metadata is a wondrous thing indeed. Navigating through your library in various ways, seeing what episodes of a TV Show you haven’t watched, browsing through movie summaries and ratings, these things are all magical compared with browsing a lifeless Finder window.

The success of our platform for online media, coupled with our passion for building the best possible product, led us to focus our attention and energy in the last months on local content. Now as you may know, the library in Plex/Eight is based almost entirely on XBMC code. The XBMC library is quite possibly the best in the world, especially compared with other pieces of media center software. So the first question was: enhance or rewrite? At the end, we decided, just like with our plug-in framework, to throw out the existing code and rewrite it from scratch.

The ground up rewrite not only results in an extremely powerful library for personal content, but also sets the stage for providing many benefits beyond just the library itself. The latest major revision of the Plex Media Server, which incorporates the library, provides many other new capabilities under the hood that will allow us and developers to build some seriously cool new things.

This first post will serve as an attempt to explain the high-level features. Of course, the most important thing of all is its name. We decided to name the Plex Library after the Royal Library of Alexandria, the most famous library of the ancient world. (Naysayers may point out that the library was eventually destroyed, but hey, it lasted for hundreds of years!)

Here are some of the features of the new library:

  • Decentralized: This was very important to us. The XBMC library is coupled to the media center itself. In Alexandria, the Plex Media Server stores all the data, and serves it out via an HTTP/XML interface. In this way, multiple Plex applications can share a library, or multiple libraries. You can do cool things like stop watching a movie on one client and resume on another.
  • Flexible: As opposed to the XBMC library with its limiting Movies and TV areas, Alexandria allows a library to have unlimited sections. For example, you might have a “Documentaries” section, a “Home Movies” section, an “Anime” section, and a “Foreign Films” section, all configured to suit the media.
  • Open: As mentioned before, the data from the library is available via an HTTP interface to the Plex Media Server. In addition, a new class of plug-ins called Metadata Agents have been developed, which are responsible for finding and retrieving information about your media from the Internet. Agents already exist for IMDB, TheMovieDB, TheTVDB, and others. Agents can retrieve any sort of data, such as TV theme music, subtitles, and song lyrics. The agents can be combined and arranged so that the resulting information is a customizable amalgam. We’ve also added a new class of entities called Scanners, which are responsible for identifying media on your drives. This means that even if you have a completely different file system structure to your media, you can write a few lines of Python code and integrate it with Alexandria.
  • Unified: In Alexandria, even if a movie has no entry on IMDB (for example), it still sits alongside those movies that do. There is no more “file mode” and “library mode”. Everything in a library section, regardless of how much metadata it has, is a first class citizen of the library. This also allows content like home movies to live in the library, have their own fan art, posters, summaries, and other metadata.
  • Robust: One of the problems with the old library is that a change to the IMDB site, for example, could cripple the scraper and prevent new content from being added. Since the metadata agents and scanners live in Plex plug-in bundles, they are auto-updated from our site, so we can quickly push a fix. Additionally, Alexandria is flexible enough such that even if a metadata provider like TheTVDB is down, new episodes are still added (and somewhat magically, may even get full metadata!)
  • Developer friendly: The old scrapers were an enormous pain to develop, maintain, and even understand. We’ve built the new agents on top of our proven plug-in framework, which relies on modern features like XPath to make it easier than ever to bring metadata to your media.
  • User friendly: There are a number of features which make Alexandria a pleasure for users. The library management is centered around the Plex Media Manager built into the Plex Media Server, which makes it easy to add library sections. Once added, these sections show up instantly on all Plex clients in the house. The Media Manager makes it easy to maintain your media, correct matches, tweak the metadata, customize the artwork, and more.

This, in summary, is Alexandria. I’m sure the first question will be “When can I have it?” We are quite far along with development, and we have released early builds to a select group of testers, who have been extremely helpful with their feedback and help. I’m using it full-time on my Mini, and used it to watch the latest episode of Lost last night. There are, of course, many things to clean up, fix, and add, but it won’t be too long now before we open up the testing to more people.

Thanks again for your patience. I’ll write more soon, and cover lots more of the details of Alexandria. Until then, I’ll leave you with some quotes from the first group of testers:

“Setting up sources is MUCH MUCH MUCH easier!!”

“NIIIIICEEEEE!!!!”

“This is going to be soooo good!!”

“ho-ly sh*t! I can read and understand this!”

“PC users are going to want a Mac. This is way ahead of XBMC now”

“This is just … WOW!!!”

“That is fantastic! Exactly what we need.”

“This looks amazing…exactly what is missing”

“You guys, this is f**king amazing”

“Whacking sources before used to be such a pain in the ass. Now it’s no big deal.”

“Wow, this is really nice”

161 comments

Next Page »