**** BEGIN LOGGING AT Wed Feb 18 02:59:57 2009 Feb 18 03:00:15 hehe Feb 18 03:00:30 Unless you are wanting to read the android source code, the xml based shapes will be static. Feb 18 03:00:40 once drawn, you are done. Feb 18 03:00:55 with View.onDraw(Canvas) you can use an invalidate loop to get basic updates. Feb 18 03:00:56 i still haven't figured out service creation and aidl communcation ... i've learned everything about android and caught up on java from a 5 year hiatus in 3 weeks Feb 18 03:01:14 hmm .. Feb 18 03:01:23 alright looks like i will have to dig in deeper on this Feb 18 03:01:43 DJTachyon, lots of samples at anddev.org Feb 18 03:01:51 all i want to do is create a fairly simple shape (a couple quadrangles) and change the colors at high speed based on sensor input Feb 18 03:02:05 i figured out the sensor input, i just need to dig into drawing/rendering Feb 18 03:02:33 joakime: did you see my silly LED/Sensor Demo app? Feb 18 03:02:40 i figured that out today :P Feb 18 03:02:41 that was you!? Feb 18 03:02:46 hehe Feb 18 03:02:51 the RaveLED Feb 18 03:02:52 hmm. i should change my review ... Feb 18 03:03:07 i post silly demos just to test feedback and demographics Feb 18 03:03:12 lol uh oh Feb 18 03:03:28 i got a TON of feedback from people on this stuff .. I found my demographic niche .. Feb 18 03:03:48 did you rip into me? :P Feb 18 03:05:16 nah. Feb 18 03:05:21 1 word i think. Feb 18 03:05:25 heh Feb 18 03:05:27 my app -> http://www.cyrket.com/package/com.iversecomics.comic.viewer.hexed.one Feb 18 03:05:40 hehe sweet Feb 18 03:05:48 did you see that app from flygirl today? Feb 18 03:05:56 god .. talk about demographic targeting Feb 18 03:06:28 has urban/graffiti backgrounds .. you input a phrase and it turns it into ebonics for you Feb 18 03:06:29 ugh Feb 18 03:06:33 anyway Feb 18 03:06:37 ill dig into this tomorrow Feb 18 03:06:40 thanks for the input Feb 18 03:09:37 joakime: wow. impressively consistent reviews Feb 18 03:09:50 donpdonp, thanks. Feb 18 03:10:03 working on a bunch of bug fixes and improvements based on the reviews. Feb 18 03:10:17 once the paid apps start showing up, there will be more. Feb 18 03:23:14 in my PreferenceActivity, i do onResume() { local_preference.setSummary(preference_value) }, yet when the preference is changed via the dialog box, the activity's onResume is not called again so the summary is out of date. how to fix? Feb 18 03:27:05 I'm going to submit a patch to the Eclipse project to accept the spelling of "Android" Feb 18 03:42:40 How do I remove my app from the emulator? Feb 18 03:43:02 My app uses a DB and its upset about the DB versions changing Feb 18 03:45:38 mfisch: adb unistall your.package.name Feb 18 03:45:42 uninstall, even. Feb 18 03:46:05 donpdonp: is that doable in eclipse or just command line Feb 18 03:49:02 mfisch: you can design your code to gracefully upgrade database tables as well. this way, your users will not need to uninstall/reinstall your app. Feb 18 03:49:10 and will not need to repopulate the database again Feb 18 03:49:15 jasta: I will do that, yes Feb 18 03:49:25 see DatabaseOpenHelper or something like that Feb 18 03:49:29 jasta: I'm just starting out by messing with the notepad app Feb 18 03:59:24 um. two people just purchased my $1 app. Feb 18 03:59:42 i think paid apps are online in some capacity Feb 18 04:00:22 donpdonp, beta testers, last I heard Feb 18 04:00:34 ah Feb 18 04:00:53 that explains why i cant see the app in the market on the phone Feb 18 04:01:01 I need to make another app (which I can sell) Feb 18 04:09:01 interns Feb 18 04:09:03 to be exact Feb 18 04:09:13 I googled the guy that bought mine :P Feb 18 04:09:24 i'm creepy Feb 18 04:19:52 * donpdonp shivers Feb 18 05:06:11 You can actually see who buys your applications? Feb 18 05:07:16 yeah Feb 18 05:07:22 kinda scary actually - lots o details Feb 18 05:28:57 is there a way to set a ContentObserver that is active even while your program is closed? Feb 18 05:29:16 what's the point if your program is not running? Feb 18 05:31:09 makes it easier to watch a database for changes, especially since if I didn't implement the database, I can't just watch the isDirty column to see if it has changed because I don't control when it is set and unset Feb 18 05:32:36 so if I know each time something changes, I can keep my own isDirty for each row Feb 18 05:33:32 well, let me think about it some more Feb 18 05:34:59 you can wake up to check the database... Feb 18 05:35:16 yes, I know that Feb 18 05:35:53 I wanted to know changes when they happen, but I guess running on a battery, that might not be a good thing Feb 18 05:56:55 do ContentProviders block processes in the same way SQL does? Feb 18 05:59:44 nevermind, found a doc on it Feb 18 06:32:21 Is imageView.setImageBitmap(null) not supposed to set a null Drawable for the view? I know I can do imageView.setImageDrawable(null), but I wanted to see if this is known or on accident Feb 18 06:36:27 it's expected Feb 18 06:38:47 kk Feb 18 07:21:49 I have tried to set onClick listeners in the adapter but romain told me that this is the wrong way and I should do it in the onListItemClick Feb 18 07:22:16 But I don't get how to differentiate the items that got clicked it the right way in my situation :) Feb 18 07:22:51 anno^da_: differentiate them with the adapter and the information provided by the onlistitemclick callback Feb 18 07:23:26 Should I add IDs to the rows ? Feb 18 07:23:33 i think its actually called onitemclicklistener tho Feb 18 07:23:39 in to each row Feb 18 07:23:46 onListItemClick(ListView l, View v, int position, long id) Feb 18 07:23:46 that is not necessary Feb 18 07:23:51 you are given the position in the list as well. Feb 18 07:24:05 if you cant work out what your data is given the position and the id, then your design needs work :) Feb 18 07:24:39 Hmm well. :) Feb 18 07:26:39 I have just reused the SeperatedList adapter but well that doesnt helpe me since I get for ID and POS the same value Feb 18 07:27:56 bbl Feb 18 08:05:00 How do I load images into a list sequentially without making the list slow down a bunch? I was trying to do it in a handler, one by one, but it refreshes all the views at the end of each handleMessage Feb 18 08:05:29 which slows it down a bit Feb 18 08:07:23 the marketplace seems to have no issues with it Feb 18 08:09:28 so, it looks like the marketplace is using a image pool, but for me, it seems to be the handler slows it down a whole bunch Feb 18 08:10:33 I'm not using a pool yet, I wanted to make sure the loading isn't too slow in the first place Feb 18 08:14:46 what I'm doing is moving to the first item displayed in the list, starting a thread to load its images, once the thread finishes, it calls a handler in the main thread to load the images to the item then moves to the next item....this is very inefficient for some reason and scrolling is no longer smooth Feb 18 08:21:07 jasta: Got it working now. :) Feb 18 12:59:22 ahh stupid reviewers :) Feb 18 13:54:22 Hi, I am trying to use the 'gallery' widget to scroll things horizontally, but text inside the widget is turning a dark color and hard to read. Feb 18 15:37:34 lazerdye: when is it turning a dark color? Feb 18 15:38:13 herriojr: Hi, when the app first starts up the text is a dark color, when I drag the item left or right it changes to a lighter color and stays like that. Feb 18 15:40:48 that's interesting, do you set the font text programatically? Feb 18 15:40:57 or in the layout? Feb 18 15:41:05 I mean text color Feb 18 15:42:01 not font text Feb 18 15:44:59 Hey, is there stuff in the SDK to help with minimizing GC for bitmaps (I'm sticking bitmaps in a list) Feb 18 15:45:13 is=are Feb 18 15:45:17 or whatever Feb 18 15:45:19 herriojr: I tried setting the text color manually, using color, textColorHighlight, textColorHint, and textColorLink, but the colors stay the same. Feb 18 15:45:28 It also turns dark when selected/clicked on. Feb 18 15:45:51 lazerdye: this is a total shot in the dark, but could it possibly be something like this: http://android-developers.blogspot.com/2009/01/why-is-my-list-black-android.html ? Feb 18 15:46:05 haven't used gallery myself Feb 18 15:47:14 marklar: thanks, I'll try some suggestions from that page. Feb 18 15:47:25 lazerdye: I don't think it's the same issue Feb 18 15:47:32 lazerdye: but that's just my opinion Feb 18 15:47:39 it may be related.... Feb 18 15:47:49 yeah, I really don't know either, just wanted to throw it out there :) Feb 18 15:48:57 Yeah, cacheColorHint doesn't make a difference, either on the gallery or on the text. Feb 18 15:48:57 are there tools to reuse bitmap memory Feb 18 15:48:58 ? Feb 18 15:49:44 I think there's a bitmap API to recycle the underlying memory when you're done using it. I might be wrong. Feb 18 15:55:30 I hope there is Feb 18 15:55:58 trying to display images in a list gets pretty ugly pretty quick for scrolling Feb 18 15:56:40 does someone know the Regex pattern that passes patterns like this: 100,100,3324,234,20,123 (-> figure,figure,figure...) Feb 18 15:56:40 I noticed the market uses some type of image pool, but when it writes the images to the view, there's almost no lag Feb 18 15:57:57 anno^da_: maybe something like [0-9]+(,[0-9]+)* Feb 18 15:58:16 Ugh. Is there any way to query a MediaPlayer to see what its current state is? Feb 18 15:58:40 jbq: that looks prettier than what I was going to suggest :) Feb 18 15:58:40 state mismatch exceptions are a pain in the butt, especially if you're not synchronizing everything. Feb 18 15:59:11 herriojr: prettiness doesn't guarantee correctness, though. Feb 18 15:59:40 anno^da_, Or, to capture the numbers (?:(\d+),?)+ Feb 18 15:59:45 true :) Although, when I looked at it, I thought he wanted 3 characters per number...I'm already too tired to think today :) Feb 18 16:01:56 herriojr: well, you'd replace [0-9]+ by [0-9][0-9][0-9] (or whatever shortcuts your regex format might allow for that) Feb 18 16:02:53 yes, that's what I was doing :) Feb 18 16:03:30 Say, ain't paid apps supposed to show up in the Market any minute now? Feb 18 16:03:57 Thanks to jbq and CardinalFang :) Feb 18 16:04:04 I will try them Feb 18 16:05:39 how do I enable heap updates for the client (so ddms can grab them?) Feb 18 16:17:10 figured it out Feb 18 16:35:25 Does someone know why a Dialog doesnt get reopened when I change the screen orientation? I have opened the Dialog which is opened from a Activity which is placed in a TabActivity. Feb 18 16:36:17 anno^da_, when you change the screen orientation, the Activity is torn down and recreated Feb 18 16:36:22 anno^da_: I think that is something you have to handle yourself. I don't remember why but when I did it I had to recreate it on orientation change. Feb 18 16:36:26 you have to save the state and rebuild it Feb 18 16:36:53 romainguy has a pretty good writeup here: http://www.curious-creature.org/2009/02/16/faster-screen-orientation-change-with-android/ Feb 18 16:37:23 well yeah I know that Feb 18 16:37:25 but Feb 18 16:37:45 when you open a dialog from a Activity without putting it into a TabAc... it gets recreated automatically Feb 18 16:37:53 Just thought that I missed sth. :) Feb 18 16:39:02 anno^da_: really? its been a while but I seem to remember that mine weren't being recreated in a normal activity Feb 18 17:18:48 I want to insert calendar entries into the calendar database on the phone locally (NOT over the net!). As far as I understand it, there is no API for this in the SDK, right? Feb 18 17:19:19 Anyone know if there is a 3rd party API that handles the DB directly? Feb 18 17:20:04 you can access the Calendar as far as I know Feb 18 17:21:29 yeah, you can, just do a search for Calendar Feb 18 17:22:02 You'll be accessing the ContentProvider Feb 18 17:23:19 well, at least they're undocumented Feb 18 17:23:22 the provider is there Feb 18 17:23:35 ah, ok. I found nothing in the docs Feb 18 17:24:35 in the android source: ./packages/providers/CalendarProvider Feb 18 17:25:29 In the source I found it. But how do you access it in the SDK? Feb 18 17:25:45 you have to manually build the Uri Feb 18 17:26:07 and for the ContentValues, you need to use string constants you create Feb 18 17:26:34 Ok, so not an easy job at all Feb 18 17:27:06 not hard, you just need to copy the Calendars.java file which contains the columns, etc. Feb 18 17:27:23 and learn the organization of the interface Feb 18 17:27:57 Uris: Feb 18 17:28:05 instances/when/*/* Feb 18 17:28:07 events Feb 18 17:28:09 events/# Feb 18 17:28:13 calendars Feb 18 17:28:16 calendars/# Feb 18 17:28:21 deleted_events Feb 18 17:28:26 attendees Feb 18 17:28:29 I had a look at the database directly. Quite hard to create events like that Feb 18 17:28:29 attendees/# Feb 18 17:29:22 you just need the Events columns Feb 18 17:30:21 What about alerts and reminders? Feb 18 17:30:40 same thing Feb 18 17:31:50 Ok, I'll take a look. Haven't done anything with ContentProviders so far Feb 18 17:32:00 to see what matches there are, look at line 3755 of ./packages/providers/CalendarProvider/src/com/android/providers/calendar Feb 18 17:32:13 calendarprovider.java Feb 18 17:32:14 that is Feb 18 17:37:31 ./base/core/java/android/provider/Calendar.java Feb 18 17:37:37 contains all the columns, etc. Feb 18 17:37:47 including Uris Feb 18 17:41:37 Which version of the source are we talking about? And where did you get it? I'm currently using only the gitweb Feb 18 17:49:00 I can copy it and send it to you if you want Feb 18 17:49:13 I check it out via git, so maybe not everything displays for you Feb 18 17:49:37 That would be cool Feb 18 17:50:19 I'll just throw it on pastebin Feb 18 17:50:41 yeah, only see the kernel, platform and tools packages Feb 18 17:51:37 So, Calendarprovider is what I can see (several versions actually), but the Calendar.java is what is interesting Feb 18 17:54:18 yeah, I'll send it up to you Feb 18 17:59:10 ok, thanks. pastebin is just fine Feb 18 18:20:50 I'll have it up in just a sec for you Feb 18 18:22:49 here's calendar.java Feb 18 18:22:50 http://pastebin.ca/1341252 Feb 18 18:23:01 fknecht: hope that helps Feb 18 18:26:14 herriojr: Thanks! Can't test it today because of another "accident" I have to take care of ;-) Feb 18 18:28:39 some days it's just fighting one fire after another Feb 18 19:06:36 I'm using HttpURLConnection to download a file from a web server. The file is just a simple text file. Is there a simpler way to do this than using HttpURLConnection? Feb 18 19:08:34 vol, can't java.io.File() handle remote URLs? Feb 18 19:09:40 Can it? Feb 18 19:10:17 In any event, I was looking for an "I'm Lazy" class that will handle remote connection and downloading for me and hand me a nice little byte array as a result. Feb 18 19:13:33 use the URL class Feb 18 19:17:55 romainguy, can you give out a few pointers how i would be able to create a vnc like application for android ? Feb 18 19:18:01 if its possible Feb 18 19:18:17 without getting the data directly from the framebuffer Feb 18 19:19:43 ido-- look at droidex and ddms Feb 18 19:20:30 ido--: you can't Feb 18 19:20:43 hrm. Feb 18 19:21:16 how about displaying a cursor "mouse" and imitating clicks ? Feb 18 19:21:33 for remote control ? Feb 18 19:21:53 nope Feb 18 19:21:54 clicks = finger presses Feb 18 19:22:21 is imitating clicks possible ? Feb 18 19:22:37 no Feb 18 19:23:07 vol, ah, yeah, I meant the URL class. Thanks, romainguy_ Feb 18 19:23:32 how about recording audio and processing the raw data ? (not saving to a file) Feb 18 19:23:58 ido--, why do you need a cursor? the WinMo remote desktop viewer doesn't use one and it works just fine Feb 18 19:24:12 ido--, the API doesn't support raw audio stream yet, as far as I know Feb 18 19:25:39 anyway around raw audio stream ? Feb 18 19:25:54 afterall there are apps that are doing stuff with raw audio Feb 18 19:26:04 or so it seems. Feb 18 19:28:43 just a quick dumb question, I have to set an OnFocusChange listener for each item in the list if I want it to do something when it gains focus, right? Feb 18 19:29:08 I can't just set the onFocusChange listener for the list view Feb 18 19:29:42 nobody has to answer that, sometimes it helps for me to write things to people to make sure I understand things properly Feb 18 19:31:44 herriojr, you can probably do something with setting it on the Adapter instead of every item in the list Feb 18 19:31:49 I'm not positive, though Feb 18 19:32:46 items in a list don't get focus Feb 18 19:32:50 they become selected Feb 18 19:32:57 use OnListItemSelectedListener or something like that Feb 18 19:33:42 yup, ok Feb 18 19:34:58 what are people finding is the easiest/best way to parse xml? I'd like to parse xml into objects Feb 18 19:35:26 mpardo: depends on what you're talking about Feb 18 19:36:00 what do you mean? Feb 18 19:36:11 we use a SAX parser for some things Feb 18 19:36:30 like network communication Feb 18 19:36:37 for protocols Feb 18 19:36:44 like apis Feb 18 19:37:05 org.xml.sax.* Feb 18 19:37:15 it's built in Feb 18 19:37:55 does that help? Feb 18 19:38:01 with sax is it pretty easy to just pick out an element by name? Feb 18 19:39:09 extend DefaultHandler and override startDocument, endDocument, startElement, endElement Feb 18 19:39:43 sounds like a lot of work Feb 18 19:40:18 i was hoping there was something simpler, like in .net Feb 18 19:40:36 I'm not super-knowledgeable about java, so there might be something better Feb 18 19:40:48 you could always parse the xml into AttributeSets Feb 18 19:40:56 or not Feb 18 19:40:58 i think you may be right, because that's all i've seen so far Feb 18 19:41:00 since those are for attributes Feb 18 19:41:15 what exactly does .net do? Feb 18 19:41:21 that helps out Feb 18 19:41:36 or use xmlpull parser - http://developer.android.com/reference/org/xmlpull/v1/package-summary.html Feb 18 19:42:02 you load in xml to an xml object, then you can loop through elements creating element objects, getting values, etc Feb 18 19:44:05 I'm always wary about loading all the xml up, but I'm assuming you're not dealing with large amounts of data Feb 18 19:44:53 so it shouldn't be an issue Feb 18 19:45:03 right Feb 18 19:45:36 especially if it's not your own xml, but another site/service Feb 18 19:47:11 i'm actually just writing a tutorial on a SAX-based parser right now Feb 18 19:47:25 if you can hold on for a couple of hours Feb 18 19:47:42 I should write some tutorials Feb 18 19:48:05 it'll be up on http://android.ifies.org, and i'll post the source too to source.ifies.org Feb 18 19:48:11 digitalspaghetti: ah cool Feb 18 19:48:22 and I'd be writing it from an idiot's perspective Feb 18 19:48:35 herriojr: thats what i do :) Feb 18 19:48:35 well, that could be good or bad Feb 18 19:48:50 I have the luxury of being an idiot is what I mean :) Feb 18 19:48:51 also, i'm accepting tutorials on the site, i want to make it a good resource for people Feb 18 19:49:00 ok Feb 18 19:49:08 yeah, let me know if you want anything in particular Feb 18 19:49:25 nope, just what takes your fancy :) Feb 18 19:49:37 I do lots of varying things, so I have experience all over the place Feb 18 19:49:56 i did some xml parsing in an app i did, but i wasn't happy with it Feb 18 19:50:08 I was going to write one on extending views when I get around to it Feb 18 19:50:25 but right now, I'm working 12+hours a day Feb 18 19:50:31 so not going to happen Feb 18 20:01:22 so in java, is there a way to hide inherited public functions? Feb 18 20:01:29 sorry, it's probably a dumb question Feb 18 20:01:40 why would you want to? Feb 18 20:02:57 when extending a view, I want it to use a certain type of adapter, and instead of override setAdapter and doing a check in there, I wanted to put it in the argument so people using it could easily recognize they can't just use the regular ListAdapter Feb 18 20:04:10 You should probably just override it to take FooListAdapter Feb 18 20:04:52 so I can override setAdapter to take a different argument? Feb 18 20:05:03 or a subclassed argument? Feb 18 20:05:27 yes, as long as you super() the right class Feb 18 20:05:28 i think Feb 18 20:05:40 nah, it's complaining Feb 18 20:05:53 I'm just sticking with the check inside of setAdapter Feb 18 20:12:41 in java, is branch prediction handled via java, or by the processor? Feb 18 20:13:23 java Feb 18 20:13:40 the processer doesn't understand java bytecode Feb 18 20:13:53 yes, but javaVM executes on the processor Feb 18 20:13:56 unless its in jazelle mode (but its not) Feb 18 20:14:14 then the the cpu predicts the javaVM code.. Feb 18 20:14:28 hrm. i might be wrong here, since the javaVM can compile JIT Feb 18 20:14:38 and then it would branch predict Feb 18 20:14:48 but i think i read davlik does do that Feb 18 20:14:51 or something Feb 18 20:14:58 but I was wondering if JavaVM gives a hint to the processor for the prediction if branches are converted directly to asm Feb 18 20:15:49 anyways, I was just trying to figure out how to order some of my if statements Feb 18 20:16:05 asm ? or op codes ? Feb 18 20:16:05 and to do that, I needed to know the algorithm Feb 18 20:16:14 op codes I meant, but forgot the term Feb 18 20:16:48 wait till someone else who's more familiar with android answer you Feb 18 20:17:08 ok Feb 18 20:17:12 how about simply testing it? Feb 18 20:17:50 I'm just going to assume it just predicts most frequent branch Feb 18 20:18:34 "bytecode" Feb 18 20:19:03 a virtual machine (Dalvik in this case) is free to try to implement whatever branch-prediction policy it wants, including "none" Feb 18 20:19:30 ok Feb 18 20:31:41 in general branch prediction only matters when you have pipelined instruction fetch Feb 18 20:32:06 which tends to be a feature of silicon CPUs, not virtual ones Feb 18 20:38:42 yeah, I don't know enough about VMs to really know what all gets done at the CPU level Feb 18 20:39:04 I'm just used to programming in C Feb 18 20:39:10 that is largely the point of VM, not to care Feb 18 20:57:42 is it possible to find an xml element by path? ie: /items/item[id=0]/saleprice Feb 18 21:00:28 I'm curious, why was limit not added as part of the query function for ContentResolver? Feb 18 21:00:38 *as an argument for Feb 18 21:05:21 limits? we dont need more limits in android! Feb 18 21:06:57 I ended up putting in a hack where my ContentProvider can be passed the limit as part of the Uri Feb 18 21:40:42 so, invalidate() doesn't seem to be forcing the ListView to call bind() on the views again...is there a way I can force it to? Feb 18 21:42:31 herriojr: invalidate() is just for redraw Feb 18 21:42:39 you can call invalidateViews() but it's wasteful Feb 18 21:42:53 you should call notifyDataSetChanged() on your Adapter, if the data has changed Feb 18 21:43:01 or if the data has not changed call requestLayout() on ListView Feb 18 21:43:02 ah, didn't think about that Feb 18 21:43:25 is notifyDataSetChanged() or requestLayout() more efficient? Feb 18 21:43:38 requestLayout() Feb 18 21:43:45 but they don't have the same meaning Feb 18 21:44:15 yes, I understand Feb 18 21:44:49 will it keep the list at the same position? Feb 18 21:44:55 yes Feb 18 21:44:57 why wouldn't it? Feb 18 21:45:06 I don't know, was just making sure :) Feb 18 21:54:15 mpardo not round anymore? just posted my SAX RSS Parser tutorial Feb 19 02:04:35 romainguy_: i'm heading to France on Apr 14th :) Feb 19 02:13:07 nice :) Feb 19 02:13:18 I'm going April 1st Feb 19 02:13:31 nice too :) Feb 19 02:13:49 SanMehat: really? i'm flying to Dublin Apr 4th, France the next week :) Feb 19 02:13:54 hmm. Feb 19 02:13:55 doing a mini european tour Feb 19 02:14:31 we're going to be in dublin the 6 -> 8 Feb 19 02:16:09 that is bizarre. there is actually a chance i will see you :) Feb 19 02:18:17 i don't want to intrude on your honey moon, but if you're looking to hang out for dinner or something let me know Feb 19 02:18:21 nagaxen will be with me too, if you remember him Feb 19 02:18:27 (and 2 other friends of mine) Feb 19 02:56:57 what is the deal with the Home button not working in the latest builds? **** ENDING LOGGING AT Thu Feb 19 02:59:57 2009