[02:04] I think my goal this year is to go to UDS [02:04] since it's in the states. [02:16] gonna join canonical? [02:23] Heh [02:23] WOuldn't that e grand [02:28] snap-l: you're awesome enough [03:15] https://twitter.com/#!/coffeejoulies interesting [03:28] God, sometimes Python drives me insane [03:30] Trying to see if something exists in a database [03:30] running a query, and then checking it with .one to see if one result was returned [03:30] Returns: [03:30] sqlalchemy.orm.exc.NoResultFound: No row was found for one() [03:31] if it didn't find anything [03:31] But I'll be fucked if I can maky a try / except that will catch that. [03:35] heh [03:36] ok, so the easy check is to use .first() [03:36] that will return None if no value found [03:36] and you can just do if res is not None: [03:36] for try/except you need to import the exteption from sqlalchemy [03:36] from sqlalchemy.orm.exc import NoResultFound [03:37] and then try: do .one [03:37] yeah [03:37] catch NoResultFound, exc: [03:37] it's kind of a hassle [03:37] right, which is why people tend to do a .first() and check for none [03:37] or better yet, make sure that is all wrapped in a Mgr function [03:38] It would also be nice if it would allow me access to the colum it retrieved easily. [03:38] This IS in a manager function [03:38] you're getting a model object back, not a columN? [03:38] paste your code [03:38] grr [03:40] http://paste.mitechie.com/show/364/ [03:40] I'm starting to think that sqlalchemy is making this more difficult than what I want [03:40] I want something that's essentiall a queue object and a show object [03:41] instead I'm getting these manager classes that don't do 100% of what I want [03:41] Line 94 is where I test the URL [03:42] Line 140 is where I test to see if it exists already. [03:43] right, so I'm missing the purpose of the queue part. Why is it persistant? In case the script dies mid-stream or someting? [03:43] Yes [03:44] It needs to be persistent because the queue handles if the show has been downloaded or not [03:44] once downloaded, it sets the downloaded flag to true [03:44] otherwise, you'd re-download everything [03:45] right, gotcha [03:45] SO as it's posted, it works [03:45] but I'm wondering if there's a better way to do this [03:47] yea, sec, I'd go about this differently tbh [03:47] working on some sample stuff [03:47] will take a sec [03:47] tx [03:48] I intially did this differently... I did it in Perl. ;) [03:55] https://gist.github.com/1088511 [03:55] is a base run of the idea [03:55] don't store the queue, but store a log of your runs through the shows [03:55] if you restart, then it'll go back through all the shows [03:55] but it checks the log to see if it's been run in the last 2hrs [03:55] and if so skips it [03:55] else processes the show through a queue that only lives through the livetime of the script [03:56] but the queue is auto adding "this was added" [03:56] Um, I think that misses the point. :) [03:56] Check lococast.net's feed sometime. ;) [03:57] thought the point was go through the list of shows, get their feeds, and process them [03:57] but if you had to restart it wouldn't rerun the ones that have already run [03:57] Right, but you'd download all of the shows still [03:57] I just pull them from the db [03:57] and shove them into the queue [03:57] but the code that pulls from the queue is the smart bit [03:58] checks the run_or_skipped to get the last time it was actually downloaded from the log (ShowTracker) [03:58] meh, yea, this isn't 100% through since you're actually adding ot the queue even though it's been run recently. [03:58] so guess move gthe last_run check up to be before the q.put(show) [03:59] that way you don't put it in the queue if it's been run in the last 2hrs [03:59] and then you'dneed to update that run_or_skipped in the code that actually calls the url and fetches the content [03:59] I'm not surethis is much better than what I currently have. [04:00] Since what I have will put in the shows from the feed, and then proceed to chunk through and download them [04:00] they'll still show up in the feed, but they'll be compared to see if some action was taken at some point [04:00] and if so, it's ignored [04:00] if not, it's added with a downloaded flad of false. [04:00] well the point I'm saying is to not db store the queue [04:00] but store the successful processing [04:01] and check that vs everything going into the db [04:01] then make the queue smart to know how to check the log to determine "does this go into my work queue or not" [04:01] Hmm... [04:01] so instead of storing it in the DB, it's on the filesystem [04:01] in memory, the queue part is [04:02] which means it's in two places then. ;) [04:02] if you restart the script, the queue starts back up [04:02] no, nothing on disk [04:02] it repulls the show list and goes through the feeds checking when the last time this feed was successfully processed [04:02] where is the log stored? [04:02] log is in db [04:02] the ShowTracker() [04:02] Hmm... I'll need to think about this [04:03] meh, I'm not following everything I guess. [04:03] maybe we can chat at CHC or something [04:03] IN any event, laptop is about to die [04:03] Thanks for looking into it, though [04:03] Yeah, I think that might be best [04:03] I think we're talking about somewhat similar things. [04:03] but there's some implementation differences. [04:04] Hope you have a great night! [04:04] you too [04:06] oh dude, this should be show has many episdoes [04:06] and then you just do a query join and check that show.episode[0] != the latest from the feed [04:18] ok, not tested, but start of it: http://paste.mitechie.com/show/365/ [04:19] check out: http://www.sqlalchemy.org/docs/orm/collections.html?highlight=attribute_mapped_collection#sqlalchemy.orm.collections.attribute_mapped_collection [04:19] I use for the relation so you can do the check if url in show.episodes [04:19] very easily [11:38] Morning [11:43] Good morning [11:53] rick_h_: Ah, that makes more sense to do it that way [11:53] since it technically is a list of episodes, not a queue [12:01] rick_h_ _stink_ the Detroit Science Center is frickin awesome [12:02] brousch: Compared with... ? [12:03] i don't know. it is by far the most awesome place like that i've been to [12:03] it's like the GR children's museum * 50 [12:07] We were there for 4 hours and saw maybe 50% of it [12:15] Hmm, maybe I need to head back there sometime [12:15] last time wasn't that impressive [12:16] but that was a while ago [12:16] it's huge [12:16] 4 floors of stuff [12:16] imax movies, planetarium [12:16] i wouldn't go without a kid [12:17] snap-l: cool, yea and the mapped attribute makes sure when the relation builds it indexes on the url so it's easy to check if it's already been loaded/not [12:20] rick_h_: https://github.com/craigmaloney/Piddlepodder-Python/blob/master/shows.py [12:21] Traceback (most recent call last): [12:21] File "shows.py", line 62, in [12:21] class Episode(Base): [12:21] File "shows.py", line 72, in Episode [12:21] order_by=Episode.id.desc()) [12:21] NameError: name 'Episode' is not defined [12:22] brousch: awesome re the DSC [12:25] snap-l: yea, sorry. Can't define episode before it's been defined [12:25] change that to the string "tablename.id" [12:25] where tablename is your choice of table for episodes [12:26] OK, cool [12:26] Wasn't sure if it was something I did to goof it up [12:27] tablename being the name of the table, right? ;) [12:29] snap-l: right [12:37] Hmm, now I'm getting AttributeError: 'Table' object has no attribute 'id' [12:38] there's an id column right? [12:38] si [12:38] sorry, just getting going this morning from last night and don't have the windows up still [12:38] https://github.com/craigmaloney/Piddlepodder-Python/commit/64bfb4c9aa57662ea734d94fa0487d37fcc1ae45 [12:38] No worries [12:39] I appreciate you taking the time last night to look at this [12:39] no problem, couldn't sleep. Sorry it took me a bit to understand what was up. [12:39] the queue thing threw me off, though it was the queue for the work of url fetching [12:41] yeah, I have a bad habit of mis-naming things [12:42] Was a hold-over from the Perl code as well [12:42] so maybe try it as the object name vs the table [12:42] I don't often do the sort by in the relation [12:42] Frankly I don't care re: the sort [12:42] or better yet, move Episode up to the top of the file [12:42] oh right, since we dict-index it you don't need the sort [12:43] I was thinking you'd want to check your latest 10 episodes on your side vs the feed side [12:43] but there's no datetime, so I tacked on the dict index [12:43] Yeah [12:43] Actually, I should put in a date / time that it was discovered [12:45] Also should be able to find the date / time that the show was posted. [12:46] but anyway, I'd move the Episode class first [12:46] then put the relation on the show class instead [12:46] and you can reference the existing Episode class from above everywhere without doing string matches/etc [12:46] Yeah, that makes sense. [12:46] Thanks! [12:47] Though what's curious is I was referencing the episode class in the episode class [12:47] and that was screwing it up. :-/ [12:47] right, but until it processed the whole class to build the definitino [12:47] it doesn't exist yet [12:47] Ah [12:47] so you're in a catch 22 inside there [12:47] tricksy python [12:47] so was trying to recall the string based work-around [12:48] but don't do that a whole lot [12:50] Heh, and now Show is undefined. [12:50] right [12:50] need to move the relation to the show object [12:50] https://github.com/mitechie/Bookie/blob/master/bookie/models/__init__.py#L122 [12:50] the foreign key can be a string like ^^ [12:52] I need to read up on these [12:53] yea, welcome to my talk material :) [12:53] heh [12:53] worked on that some this weekend finally [12:53] Nice! [12:53] well, all laid up all weekend pretty much [12:53] did more netflix than anything lol [12:56] I'm using tonight's grpug meeting to test out half of my presentation [12:59] smart === ptenhoopen__ is now known as ptenhoopen [13:22] http://www.youtube.com/watch?v=zvep1WaUmOM [13:22] ok, so that's kind of cool [13:26] Yeah, that was pretty sweet [13:39] Ho boy [13:39] My new boss is very new [13:39] uh oh [13:39] she's asking me how I'm being billed to the customer [13:39] and that concerns me [13:39] thoroughly? [13:40] because that's at a level that frankly I don't know [13:40] but, if you ever want to make one of your subordinates worry, this is a great way to start [13:41] ugh [13:45] jrwren: Do you know if C#'s SOAP supports WSSE? [13:50] <_stink_> brousch: awesome, glad you had fun [13:52] lol, python hoooo! http://www.youtube.com/watch?v=FJ7QsEytQq4&feature=youtu.be [13:52] NSFW language-wise [13:54] heh [13:57] OK, that was awesome. :) [14:03] Too bad Squeezebox doesn't support media keys [14:03] I think it would be the perfect media player for me if it did. ;) [14:03] brousch: Did you see an IMAX show while at the DSC or did you just go to the museum part? [14:03] media keys? [14:04] we saw a movie in the planetarium and in the imax theater [14:04] OK [14:04] rick_h_: Never you mind. ;) [14:05] well now I'm curious [14:05] rick_h_: It's those special keys on the keyboard for rewind, play, fast-forward. [14:05] ah! run! [14:06] I'm sure you have special [CTRL][ALT][SHIFT][hjkl] for that. ;) [14:06] no, actually I just go over to the app and move it [14:06] using amazon web player usually [14:06] You mouse over to the app? :) [14:06] Horrors. [14:43] I guess technically it survived. It's just damaged to the point of almost total uselessness. http://www.cnn.com/2011/TECH/mobile/07/18/iphone.skydive/index.html [14:49] http://tirania.org/blog/archive/2011/Jul-18.html [14:49] Novell/Xamarin Partnership around Mono [14:49] yea, interesting [14:49] I think it's just cirling the wagons, personally [14:50] since it's still Miguel in charge. [14:52] Man, I'm not liking the direction of Tracks again [14:52] and I keep waffling between Tracks and Todo.sh [14:52] lol [14:52] and if I wait for my ass to write something new, I'll be GTND [14:53] Getting Things Never Done [15:17] heh, snap-l [15:17] good blog post, btw, about CDs [15:21] Thanks [15:23] you're welcome. i posted a comment, but i'm not sure if it's very coherent... [15:23] this heat is making me stupid. [15:23] yeah, thanks for the heads up. i bought a dozen susan boyle cds to hand out next xmas. you saved me a ton of cash [15:24] to your enemies, brousch? [15:24] aka my loved ones [15:24] heh [15:28] oh, did anyone get spotify? [15:28] yea, this heat can shove it [15:28] i did. can't use it unless i use wine [15:28] naw, lack of interest here [15:28] this heat can go back to effing Florida. [15:28] anyway, i wanted to try it out and they have a linux version [15:28] but it's only for paying customers. [15:28] nice. [15:28] yea, I don't think they have a linux version [15:28] though someone got it running in wine or something (on one of the ubuntu planets or something) [15:29] http://gamerchick02.posterous.com/i-got-a-free-spotify-account [15:29] they do. it's beta [15:29] ah, ok cool [15:29] if they have better categories than pandora, i'd be all about it [15:30] like, Gene Kelly. I put Gene Kelly into pandora, I get no Gene Kelly music. [15:30] it's like WTF? [15:31] last.fm at least plays GK's music, but one can only listen to SITR so many times. [15:31] :-/ [15:35] brousch: You're welcome [15:35] I aim to please. [16:14] What's the world record for earliest part of the day before wanting to give up on the human race as a whole? [16:15] not sure I have a record-beater, but I think it's pretty close. [16:22] I'm pretty sure the record is somewhere near "the instant the alarm clock goes off" [16:22] Heh [16:23] What I love too is that I'm in a discussion with a developer that claims that our sandbox changed somehow to require something for authentication [16:23] when my understanding is that it should have required this all along [16:29] Also love that because .Net doesn't support it, we shouldn't be using it. [16:31] ugh, snap-l. [16:36] OK, I'm going to break down and finally ask... WTF is Spotify? (I know, I could look it up, but I'm stubborn that way) [16:36] there seems to be too much buzz about it, and no substance [16:37] Wolfger: I've not used it, but it appears to be another Rdio / Pandoa music service [16:39] Hmm. So... why does the world seem to care? [16:39] Apparently CDs are heavy [16:39] LOL. And bulky. [16:39] And nobody likes to pay for music [16:40] So this gives you a (curated?) stream of music [16:41] see, that's where I'm confused. I gather that it's a subscription service.... and not platform independent... and still in beta... and not unlike Pandora which is free, platform-independent, and stable. So why the fuss? Why is spotify making (obscure, uninformative) headlines? [16:41] Do they just have an awesome press-release writer? [16:42] I think they have a way to get it ad-free [16:42] Outside of that, I don't know [16:42] Perhaps it's the unicorn DJs they have? [16:43] each song is hand-delivered to your ear via fairy? [16:43] I have NFC [16:43] ok [16:44] I can neither confirm nor dey the use of fairies or unicorns for Spotify. [16:45] Spotify is a music service like pandora, wolfger [16:45] it's new and people are having hard-ons for it [16:45] it's one of the few that was never available in the US. [16:46] ah, ok [16:46] Count me grumpy if I can't use it on my preferred OS. [16:46] so it's previously-forbidden fruit [16:46] yeah [16:46] it's the whole "i want it cuz i can't have it" thing [16:47] i wanted to give it a go and see what it was all about... see if they have more Gene Kelly music and stations related to Old Hollywood. Pandora does, but they're polluted by stuff like Jason Mraz. [16:48] Gene Kelly; Jason Mraz.... I can see the similarities. ;-) [16:48] That's the big problem with these services [16:49] Just because I like Michael Brecker doesn't mean I love free jazz [16:49] Just because I like Einsturzende Neubauten doesn't mean I love Sonic Youth [17:01] no no no. Gene Kelly is not like Jason Mraz. Jason has some merits, but he ain't classic hollywood yo. [17:01] good point, snap-l [17:02] i like a wide range of music, but if i'm in the mood to listen to something, i want that something. not random pop hits along the way. [17:11] ha love it, "Head advisory expires 8am" [17:12] then I look, that's 8am the 20th [17:12] 2 days from now [17:12] Yes [17:12] Hope you didn't want to get gas in the car. [17:14] Really? It ends that soon? [17:14] * Wolfger also wants to know if "head advisory" is a Freudian slip... [17:17] I was just glad they extended it since I didn't notice any this morning [17:17] head advisory? what? [17:17] heat! heat! [17:18] well that's less exciting [17:21] this channel has been really random today. [17:21] i like it. [17:21] we get like that :) [17:25] I heard on the radio this heat is expected until Sunday [17:25] so not sure why the advisory expires sooner, but I'm hopeful [17:26] current forecast on WeatherSpark shows the current temp persisting for 2 more days, then it gets *hotter* [17:26] Wow, and here's where the News of the World Hacking story gets ugly: http://www.guardian.co.uk/media/2011/jul/18/news-of-the-world-sean-hoare [17:28] My first thought: what an unfortunate last name. [17:29] I can just imagine if he had any siblings, the other kids would be like, "He come the Hoares!" [17:29] s/He/Here/ [17:31] * Wolfger really needs to stop broadcasting inappropriate thoughts on the basis he may or may not get a laugh... [17:35] ;) [17:35] Wow [17:35] CPU Temperature: +120.2°F (high = +149.0°F, crit = +203.0°F) [17:35] MB Temperature: +145.4°F (high = +113.0°F, crit = +203.0°F) [17:36] ouch, that's a bit toasty man [17:38] LOL @ Wolfger [17:38] holy cow, snap-l, what are you doing? [17:38] advanced rendering or something? [17:41] gamerchick02: It's called "My office is 91F" [17:41] ugh. [17:41] sorry to hear that [17:41] and there's no good ventilation in there. [17:41] Yeah, no worries. [17:41] * gamerchick02 sends fans [17:42] I'm in the bedroom where we at least have some AC [17:42] it's 89 F here. [17:42] but not in the house. AC is a gift from the gods... of science. [17:43] Yes, most assuredly [17:43] Unfortunately we're not gifted with Central Ac, which is truly the gift [17:44] There goes gamerchick02, reinforcing my behavior by rewarding it with laughter... [17:45] I was watching Daniel Tosh the other day, and I was really rather astounded at the realization that he's just up there saying more and more offensive things until barely anybody is laughing anymore, then he changes topics. [17:45] and he points this out to the audience, but then he keeps the pattern up. [17:46] and I'm thinking... I can do that job! :-D [17:46] except I hate public speaking. I'll be the worlds first chat-room-only standup comedian. [17:46] :-D [17:47] (yeah, like IRC isn't full of people who think they're funny) [17:47] i like your behavior [17:47] * gamerchick02 sends money to wolfger. for your IRC comedy album! [17:47] I think there's something wrong with me that when I hear news of some tragedy, I usually find (or look for) something that amuses me about it. [17:48] nah. [17:49] OT: I love leftover veggie trays. Just sayin [17:56] I'm not familiar with Tosh, but his promos really turn me off [17:56] Anybody got the inside info to answer http://askubuntu.com/questions/53468/which-new-features-and-changes-are-planned-for-unity-in-11-10 ? [17:56] Daniel Tosh? he's kind of just usual "lol i said something non-pc" humor, but now and then, makes me laugh [17:57] I'v never heard of him [17:57] i like actual funny people though. [17:57] See, I don't find that funny [17:57] snap-l: This was one of his concerts, not his "Tosh 2.0" TV show... I kept going back and forth between laughing out loud and meh. [17:57] I found it annoying and repugnant in Don Rickles. [17:57] hurr-durr lol BUTTS isn't funny anymore [18:02] Tosh seems really quick witted, which I think is part of why he's appealing. I think he would be good on a 'roast', but yeah it's usually shock humor. [18:03] shock humor doesn't do anything for me. [18:03] like i said above, lol BUTTS isn't funny anymore. [18:04] agree there, but a witty "BUTTS" can be funny [18:04] <_stink_> BUTTS [18:04] I have to be in the mood for it, but now and then [18:04] see? not witty [18:04] _stink_ stinks [18:04] <_stink_> hmm [18:04] <_stink_> my timing must be off [18:05] <_stink_> i'll try again later [18:05] i'm just saying... the shock humor isn't funny to me anymore [18:14] George Carlin, FTW [18:14] or Robin Williams [18:15] Carlin and Williams are funny. I just have to be in the right mood to listen to them [18:15] the new names (Black, Tosh, whatisname) are all only good in moderate amounts [18:15] it's that way with most comedy [18:17] I like Lewis black [18:17] just watched a documentary on him this past weekend [18:25] When I first heard him, I thought he was hilarious. Then I saw the show he recorded in Detroit and... meh [18:48] Yeah, he reminds me of a shock jock [18:48] You have to keep pushing the bar further and further or you stop being funny [18:49] I don't know, a lot of comedy guys you have to be 'in the mood' for [18:50] sometimes I enjoy it and others I'd go meh [18:50] Yeah, comedy is quite subjective [18:50] yay, conference call is done [18:51] nice thing about having a conference call in the bedroon: finally put away the clothes that were on the dresser. ;) [18:51] <_stink_> and, if it were me, wearing only underwear. [18:51] you assume I'm wearing pants [18:52] Louis CK is my new god comedian, I think everything he does is funny [18:53] I've been enjoying the Daily Show's comedians [18:56] Daily Show has been good for a very long time now [18:56] lol at snap-l re pants [19:01] I think the Berkely weather sation for Wunderground is full of shit [19:01] 79F my ass. [19:01] lol, someone's hosing it down with the hose [19:02] Or it's in someone's living room [19:02] JoDee's at the mall with my mom. She sent me a picture of a drum table and asked me what it was [19:02] <_stink_> "A TROPICAL AIRMASS IS IN PLACE ACROSS SOUTHEASTERN MICHIGAN" [19:03] <_stink_> thanks National Weather Service! [19:03] I asked her why it wasn't in our living room [19:03] _stink_: I think we need to get Canada to aim their fans south to push down the arctic air [19:04] <_stink_> yes, i like it. everyone call all of your Canadian friends [19:04] <_stink_> and if they live in Windsor, forget it [19:04] They can still help [19:21] tropical airmass? [19:22] nice. [19:22] +1 snap-l [19:55] buckle up for some storms [19:55] yea, nice and dark here [19:55] should help cool a bit [19:55] DOn't think so, unfortunately. [20:19] it says it's 71 here right now, so it did cool things off... [20:23] Getting some heavy winds over here [20:24] OK, computer going offline. [21:20] I want to know why it's always hot in this damn room. [21:20] Got the windows open, 75F outside [21:20] and still 92F on here. [21:20] Grr. [21:30] OK, maybe this will work [21:30] Have the vornado in the hallway pumping air into this room, and another fan in the window pumping air out [21:33] Heh, gotta love this [21:33] Comcast sent out a flyer with "Scan here with your smart phone to learn more about our ..." [21:33] so I scanned it with my iPhone and Google [21:33] and it identifies that it's a Microsoft Tag [21:34] Doesn't tell me more about whatever is encoded, just "that's what that is. I'm done" [21:34] wow. nice. [22:33] Well, so long Borders. [22:33] Off to liquidation-ville [22:33] FML [22:34] http://www.ft.com/cms/s/0/ba1cefde-b185-11e0-af96-00144feab49a.html?ftcamp=rss#axzz1SV05aH2g [22:35] jesus h christ: [22:35] If you've logged into YouTube recently, you've probably noticed that [22:35] they're pushing their Rental service pretty hard. YouTube Rentals [22:35] brings full-length independent movies to YouTube, at a price -- the [22:35] videos come with Digital Restrictions Management (DRM). This [22:35] about-face goes against exactly what made YouTube useful in the first [22:35] place -- the unencumbered sharing of video. [22:36] this crap is what makes people not pay attention to the EFF [22:36] i unsubed from their stupidass emails [22:38] Was that the EFF or the FSF? [22:38] I think you have the EFF confused with the FSF [22:38] Defective by Design is FSF [22:38] * If you watch YouTube videos, help send a message against DRM by [22:38] refusing to "rent." [22:39] * If you share videos on YouTube, add this to your profile page: [22:39] "Thanks for checking out my videos. Please note: I don't use YouTube Rentals, and I hope you won't either. Here's one reason why: http://defectivebydesign.org/youtube-rentals" [22:39] * If you notice someone in the tri-county area renting a Youtube video, run over to their house and scream at the top of your lungs "DRM is bad. God hates DRM" [22:40] FSF [22:40] yeah [22:40] sorry [22:40] it's renting the goddamned video. i'm sure they have issues with netflix too because it's not "free" [22:41] and spotify. and pandora. and last.fm [22:41] do they hate radio too? and TV? and anything that's not totally "free" software? [22:41] * If you notice that Youtube is renting pornos, immediately hop onto BitTorrent and download every single porno movie by that actor / actress / studio, and announce on IRC that you're doing so. Tell them you're sending a message to the Man. A long, sensual message. [22:42] Also announce when you're finished. Downloading. [22:43] haha, snap-l [22:43] (And make sure to keep your client up, you fucking leech) [22:43] i'll put them all up on mediafire too. [22:46] or is that wrong because it's not FREE as in FREEDOM? [22:46] FSF pisses me off sometimes. they're just as bad as those funeral picketers. >_< [22:47] Eh, I wouldn't go that far [22:48] I don't think they would picket a funeral [22:48] and if they did, they'd lose all credibility [22:48] I'm just not a fan of the "holier than thou" attitude [22:49] It's one thing to promote freedom [22:49] it's quite another to be obnoxious about it [22:49] "Look at me. I'M leading a pious life" [22:51] nobody leads a pious life. [22:51] at one time or another, you'll cave and listen to an mp3. [22:51] or break down and get netflix.