User:Which Linden/Office Hours/2009 Oct 1

From Second Life Wiki
Jump to navigation Jump to search
  • [11:00] Morgaine Dinova: Hi peeps
  • [11:00] Which Linden: what is up my rabbits
  • [11:00] Morgaine Dinova: Hiya Which!
  • [11:00] Latif Khalifa: hello
  • [11:00] Which Linden: ok that was a pretty lame pun off of "peeps" there
  • [11:00] Which Linden: let's pretend that didn't happen
  • [11:00] Latif Khalifa: hehe
  • [11:01] Morgaine Dinova: LOL, so bad I still haven't figured it out :P
  • [11:01] Which Linden: ha ha, how are y'all?
  • [11:01] Enkidu Linden: hi guys
  • [11:01] Morgaine Dinova: Fine tnx, you?
  • [11:01] Latif Khalifa: hey Enkidu
  • [11:01] Morgaine Dinova: Hi Enkidu! New Linden?
  • [11:01] Enkidu Linden: newish!
  • [11:02] Which Linden: heh I think he's almost a year old!
  • [11:02] Morgaine Dinova: Oh, nearly a year old, hehe. Well nice to see you in Which's OH :-)
  • [11:02] Enkidu Linden: 11 months on saturday
  • [11:02] Latif Khalifa: what do you at the lab enkidu?
  • [11:02] Enkidu Linden: thanks! i'll be judging for style
  • [11:03] Which Linden: what on earth is up with your av? Do I need some sculptie textures downloaded?
  • [11:03] Twisted Laws: ^^ i have no style :p
  • [11:03] Morgaine Dinova: I don't do "form", just "function" :-)
  • [11:03] Enkidu Linden: i do lots of webby stuff
  • [11:03] Latif Khalifa: ah i see
  • [11:03] Morgaine Dinova: Ew
  • [11:03] Morgaine Dinova: Commiserations ^_^
  • [11:04] Latif Khalifa: spent 10 years doing webby stuff lol
  • [11:04] Phantom Ninetails: Thought those sculpts would never load
  • [11:05] Which Linden: heh there we go
  • [11:05] Which Linden: so...yeah, did you all want to talk webby stuff?
  • [11:05] Which Linden: you may recall that last week we talked about the transactions history page
  • [11:05] Morgaine Dinova: So annoying having to fetch this grass every week. We're here regularly, clearly the 1GB cache is inadequate or non-functional.
  • [11:06] Elbereth Witte: or he updaqtes the grass texture every week to psych you out :-)
  • [11:06] Which Linden: I change one pixel each time :-)
  • [11:06] Latif Khalifa: haha
  • [11:06] Phantom Ninetails: lol
  • [11:07] Saijanai Kuhn: randomizes the UUIDs from a pool of identifical textures
  • [11:07] Morgaine Dinova: I sometimes wonder if the cache never gets any love because Lindens have high-bandwidth access to the grid, so they don't see the non-working cache as a problem.
  • [11:07] Elbereth Witte: bandwidth does have value, wether they say so or not, and they mostly likely know that
  • [11:07] Which Linden: technically the QA team does stuff through DSL
  • [11:08] Which Linden: and also don't forget we have offices all over the world
  • [11:08] Morgaine Dinova: I would dedicate a 1TB drive to the cache .... if it let me.
  • [11:08] Latif Khalifa: yeah and M's been in Amsterdam on "business" ;)
  • [11:09] Which Linden: heh heh
  • [11:09] Latif Khalifa: haha
  • [11:09] Which Linden: ain't no business like show business!
  • [11:09] Latif Khalifa: especially in amsterdam ;)
  • [11:09] Phantom Ninetails: [1]
  • [11:09] Morgaine Dinova: Anyway, transactions ...
  • [11:09] Which Linden: yeah, so, some conversation continues on WEB-1321
  • [11:09] JIRA-helper: http//jira.secondlife.com/browse/WEB-1321:
  • [#WEB-1321] Transaction History,: the transaction number should remain a sequential number, not a UID
  • [11:10] Which Linden: loves that jirahelper
  • [11:10] Latif Khalifa: yeah, and sql sequences ;)
  • [11:10] Which Linden: I'm still assuming that the major problem with uuids is that they are too long
  • [11:10] Which Linden: and that simply chopping off the trunk will suffice to improve the situation
  • [11:11] Latif Khalifa: resedents often need to compare transaction ids
  • [11:11] Which Linden: there will be a slight chance of collision with just a prefix, but it's really low
  • [11:11] Latif Khalifa: using uuid for this purpose is suboptimal
  • [11:12] Enkidu Linden: why is that, latif?
  • [11:12] Morgaine Dinova: I think the Jira opener merely wants UUIDs hidden. Technically, you can't replace UUIDs with an incrementing count without adding a Single Point of Failure and a barrier to scalability.
  • [11:12] Saijanai Kuhn: what happens if you run a UUID through MD5?
  • [11:12] Latif Khalifa: transaction IDs are not something hidden, something residents don't see
  • [11:12] Latif Khalifa: they are used in everyday workflow
  • [11:12] Latif Khalifa: using uuids is not very user friendly
  • [11:13] Saijanai Kuhn: was thinking more in terms of compression possibilities, though MD5 probably wouldn't compress
  • [11:13] Latif Khalifa: i understand the technical difficultyy you might have getting numerical IDs
  • [11:13] Which Linden: saijanai: this is the md5 of a uuid: "30dde8348ce93f890ea863847920eee0"
  • [11:13] Latif Khalifa: but the problem has been solved gazillion times in applications that use user exposed transaction ids
  • [11:13] Elbereth Witte: a cryptographic hash that compresses well is a failed hash IMO
  • [11:14] Latif Khalifa: SQL construsct of sequence has been invented for this purpose specificially
  • [11:14] Morgaine Dinova: It doesn't matter to code whether a transaction identifier is user-friendly or not. User-friendliness should never compromise functionality. If UUIDs are not user-friendly, just hide them behind a local view or something.
  • [11:14] Morgaine Dinova: Elbereth++
  • [11:14] Latif Khalifa: using hashes is also not good
  • [11:15] Which Linden: so just as a point of reference, here is a paypal transaction id: 7KY79262PN385345U
  • [11:15] Latif Khalifa: i need to be able to go to which and complain about system stealing 150k from my accouint and give him transaction number
  • [11:15] Which Linden: it looks like paypal is using base 36
  • [11:15] Morgaine Dinova: This is a case of what's good for the function being bad for manual use and visbility. So keep them separate.
  • [11:15] Latif Khalifa: if i was hashed he would not be able to know which uuid was it
  • [11:16] Latif Khalifa: i deal daily with customers sending me transaction details
  • [11:17] Latif Khalifa: i know how an ordinary resident reacts when he sees that now its an uuid
  • [11:17] Latif Khalifa: the reaction is WTF ;)
  • [11:17] Which Linden: ok but any change will elicit that reaction
  • [11:17] Latif Khalifa: oh well ;)
  • [11:17] Which Linden: we need concrete reasons beyond "change is bad"
  • [11:17] Which Linden:  :-)
  • [11:18] Elbereth Witte: good chang isn't all that bad
  • [11:18] Latif Khalifa: i said using uuids was suboptimal, not a deal breaker
  • [11:19] Which Linden: so yeah it looks like paypal is using 88-bit transaction ids, that's a little shorter than 128 bits, and the base-36 compresses its length
  • [11:19] Which Linden: maybe we should consider base-36 for our ids
  • [11:19] Which Linden: would make it annoying internally though
  • [11:19] Enkidu Linden: i'm curious, what is it about a numeric id that is intrinsically better than something in hex?
  • [11:19] Which Linden: part of the other win of converting to uuids is that those are what we use internally too
  • [11:20] Latif Khalifa: Enkidu, nothing for me, but i am a software engineeer
  • [11:20] Latif Khalifa:  ;)
  • [11:21] Which Linden: ha ha ha, this seems like a case of the customer not knowing what they want
  • [11:21] Which Linden: so just as an example I converted a uuid to base36
  • [11:21] Which Linden: uuid: 22d4dcdbaebb47fab925a871cc75ee48 base36: 228hqxz4jcask4cck0o8ggw0k
  • [11:21] Latif Khalifa: Which, if you went with i system that does not use sequences, bite the bullet and stick with UUIDs, it would just make it event workse trying to "fix" it with base36, hashes or whatever
  • [11:22] Twisted Laws: i think some people think uuid's are weak because they hear all the time that theres no reason to hide uuid's of avatars, etc... this would make them think transactions may also be more open then they'd like (only in their minds, obviously)
  • [11:22] Which Linden: I think I agree, Latif
  • [11:22] Which Linden: so... the other smart thing that Paypal does, is they deemphasize the transaction id
  • [11:22] Which Linden: it's in small text and you have to know what you're looking for to find it
  • [11:22] Which Linden: the emphasized data is: date/time, other party, amount, type
  • [11:23] Ardy Lay: Some people see hexadecimal and think they have found the key to the city.
  • [11:23] Enkidu Linden: that's a very interesting observation, twisted
  • [11:23] Which Linden: so the clear intent is that the transaction id is only used if these other fields are not adequate
  • [11:24] Which Linden: yeah I agree -- that is interesting
  • [11:24] Enkidu Linden: especially considering sequential integers are actually predictable
  • [11:24] Which Linden: uh.....I guess if we had an API that allowed you to get any person's transaction by id, we'd have an issue (but we don't)
  • [11:25] Which Linden: heh also good point enkidu
  • [11:26] Latif Khalifa: of course the real solution would be to make transactions more reliable so i and my customers don't need to compare transaction IDs daily ;)
  • [11:26] Morgaine Dinova: lol
  • [11:26] Which Linden: true dat
  • [11:28] Which Linden: yeah...but that's a big problem that may require a refactoring to solve
  • [11:28] Which Linden: we gotta save the central database first :-)
  • [11:28] Latif Khalifa: two main problems with in-world commerce related to transactions
  • [11:29] Latif Khalifa: Right click -> pay object is no guaratnee that object's money() event will fire
  • [11:29] Latif Khalifa: and secodn, there is no way to tell if inventory offer was successful or not
  • [11:30] Latif Khalifa: object -> agent inventory offer that is
  • [11:30] Which Linden: yes, definitely agreed that that situation is complete crap
  • [11:31] Which Linden: though the money() event one is somewhat more challenging to solve
  • [11:31] Latif Khalifa: so daily i have "i haved payed your vendor but did not receive the produce" kind of situation
  • [11:31] Latif Khalifa: product*
  • [11:31] Which Linden: if your product is produce.... :-)
  • [11:31] Latif Khalifa: hehe
  • [11:31] Elbereth Witte: I'm surprised to hear money() is harder than an inventroy give feedback thingy
  • [11:32] Latif Khalifa: griefers sure liek this place lol
  • [11:32] Which Linden: oh hey poppy, didn't see ya till now
  • [11:32] Which Linden: poppy probably brought the greifers with him
  • [11:33] Latif Khalifa: hehe
  • [11:33] Morgaine Dinova: Hiya Poppy :-)
  • [11:33] Latif Khalifa: he's away
  • [11:33] Twisted Laws: i like the base 36 encoding of the uuid, myself
  • [11:34] Phantom Ninetails: They look pretty similar
  • [11:34] Which Linden: Enkidu: actually you're right to be skeptical, I don't really know what goes into either and am just guessing
  • [11:35] Which Linden: Yeah, I think the base36 is slightly better, but not enough better that it's worth the delta between what we use internally
  • [11:35] Which Linden: actually internally for support purposes we don't use transactions ids at all
  • [11:35] Which Linden: the UI doesn't even show 'em
  • [11:35] Latif Khalifa: heh
  • [11:36] Latif Khalifa: how do you deal with a situation that happen to be that transaction took 150k out of an account just because it felt like it? ;)
  • [11:36] Which Linden: we use date/time and amount
  • [11:37] Latif Khalifa: but amount can be fsced up as you know
  • [11:37] Which Linden: it is rare that there are multiple transactions in a second
  • [11:37] Enkidu Linden: heh, i forget what i was skeptical about
  • [11:37] Morgaine Dinova: Just give peeps a front end to transaction Ids based on time, disambiguating identical times with a suffix, plus a link to the actual UUID, and job done. They'll be happy.
  • [11:37] Which Linden: Latif: well actually the amount is always correct; it is the end balances that are sent to the viewer which is sometimes incorrect
  • [11:38] Latif Khalifa: and in the transaction history
  • [11:38] Which Linden: Morgaine: I like that idea
  • [11:38] Which Linden: Latif: yeah, and in the history; but end balance only
  • [11:38] Enkidu Linden: i've been thinking about transaction web search too
  • [11:38] Morgaine Dinova: It avoids the non-scalable trap of monotonic counters.
  • [11:38] Which Linden: yup, and then there's no big scary id unless you go looking for it
  • [11:39] Latif Khalifa: eh
  • [11:39] Latif Khalifa: that would be worst of all solutions, to me
  • [11:40] Which Linden: orly? why's that?
  • [11:41] Latif Khalifa: i need to know some unique transaction id, date time is not good enough
  • [11:41] Enkidu Linden: what if you could search on any of the transaction details?
  • [11:42] Latif Khalifa: we have cases where customer pays once, and system charges them twice, i need to see those two transactions that occur within few ms of one another
  • [11:42] Which Linden: I agree we should not nuke the id altogether, but making it subsidiary to the other details seems reasonable to me
  • [11:42] Latif Khalifa: eh
  • [11:42] Morgaine Dinova: Latif: you would still get the UUID by dereferencing the nice friendly identifier
  • [11:42] Which Linden: so i.e. they'd have the same time but they'd have two different suffixes
  • [11:42] Morgaine Dinova: Yep
  • [11:43] Latif Khalifa: you know that you can have two identitac transactiosn at almost the sime time, second one being a system error, right?
  • [11:43] Which Linden: yup
  • [11:43] Which Linden: so, time + unique
  • [11:43] Which Linden: unique disambiguates if time is the same
  • [11:43] Latif Khalifa: i tell you from my personal experience, and i deal with this daily
  • [11:43] Latif Khalifa: sounds like a really bad idea to me
  • [11:43] Morgaine Dinova: 20091001.<time-order>.<disambiguating-suffix>
  • [11:44] Latif Khalifa: yeah why make it simple when you can obfuscate it to hell
  • [11:44] Morgaine Dinova: Latif: if you think it's bad, then say why. :-)
  • [11:44] Morgaine Dinova: We can only deal with technical objections, not with "I don't like it" :-)
  • [11:44] Elbereth Witte: the date thing sounds fluffy, I prefer raw debugability, but from the LL supprot millions perspective, sounds okay
  • [11:45] Latif Khalifa: oh well you guys who never deal with custoemrs seem to have it all under control ;)
  • [11:45] Which Linden: dang it, we're trying to listen to you, don't get all emo on us!
  • [11:45] Morgaine Dinova: Latif: that's still not a technical objection
  • [11:45] Which Linden:  :-)
  • [11:46] Which Linden: ok maybe a better way to phrase it would be: other than sequence numbers, what would be the ideal way for transactions to be formatted?
  • [11:47] Which Linden: to handle this customer use case?
  • [11:47] Morgaine Dinova: Personally I'm fine with UUIDs, but if people want something friendlier, then this is a way of achieving it, without adding a non-scalable monotonic counter.
  • [11:47] Latif Khalifa: how would you construst this disambiguation methot? do you really want to make it any slower than it already is.
  • [11:47] Which Linden: I think the disambiguation method would just be (some subset of) the uuid
  • [11:47] Which Linden: basically it would be a UI thing more than a technical thing
  • [11:48] Latif Khalifa: does the system guaranty that the same transaction has the exect same timestamp on both ends?
  • [11:49] Morgaine Dinova: Nah, its very simple. When the code retrieves a transaction set, the transactions are sorted into time order, and all those with identical timestamps are given separate suffixes in arbitrary order. Extremely simple, and can't break.
  • [11:49] Which Linden: currently, yes -- but that is actually a great point, that it may not hold true forever
  • [11:49] Elbereth Witte: even when something is going wrong? :-
  • [11:49] Elbereth Witte: )
  • [11:49] Morgaine Dinova: It doesn't even break when you have a UUID clash, haha
  • [11:49] Latif Khalifa: you are adding a level of complexit in ensuring that obfuscated id is same for both me and my customer
  • [11:50] Which Linden: Morgaine: agh actually new identifiers, while simple algoorithmically, are not ideal for database-y reasons
  • [11:50] Morgaine Dinova: Which: they're not in the database. Only UUIDs in the database.
  • [11:50] Morgaine Dinova: It's just a customer view
  • [11:50] Which Linden: I'm also not a fan of showing something to Residents that requires an inverse transform to get back to what's in the database though
  • [11:51] Morgaine Dinova: Fine, live with the problem then. One can only take a horse to water .... :P
  • [11:51] Which Linden: Heh :-) It's a complicated problem
  • [11:51] Latif Khalifa: heh
  • [11:52] Which Linden: I think I am coming around to the notion that timestamps can't really save us
  • [11:52] Morgaine Dinova: Nah, of all the problems before us, that qualifies as the easiest :P
  • [11:52] Which Linden: It's a problem that involves subjective opinion, therefore it's really complicated for engineers :-)
  • [11:53] Morgaine Dinova: Yeah well, that's nothing new, that the customer doesn't know what he wants :P
  • [11:54] Which Linden: So as another example from the rest of the world, ING uses short integers for transaction ids that appear to be sequence numbers associated with the account
  • [11:54] Latif Khalifa: as i said, the problem has been dealt with gazillion of times, tradiotionally using database construct called sequences. if you have decided to abondon this traditional model and go with uuids, stick with it, and display them as transaction ids
  • [11:54] Which Linden: So your first transaction on ING is transaction 1; so there's no way to correlate transactions between accounts
  • [11:55] Which Linden: Would you be so kind as to point me at another company/site that does transactions and gives out identifiers that are intended for two customers to compare with each other?
  • [11:55] Ardy Lay: I still hear people whining about having to dial 10 digit telephone numbers instead of 7. My response is that when I was a kid I only had to dial 5, so deal with it. I do and I have dyslexia.
  • [11:55] Which Linden: Paypal was one that I could think of, but I couldn't think of another
  • [11:55] Which Linden: Ardy: only 5??? crazy
  • [11:55] Poppy Linden: Sounds like you're saying account_id.seuence_id is unique
  • [11:56] Morgaine Dinova: Well we're trying to take a global view because of the massive scalability needed up ahead, so making UUIDs makes sense. The rest is just a matter of presentation. The tail shouldn't wag the dog.
  • [11:56] Ardy Lay: Which, yes. It was a mechanical telephone switch and we had rotary dials.
  • [11:56] Morgaine Dinova: using* UUIDs
  • [11:56] Phantom Ninetails: Which: Eventually you'll be hearing "only 10??? crazy"
  • [11:56] Which Linden: heh!
  • [11:56] Phantom Ninetails: :P
  • [11:57] Enkidu Linden: i'm hearing: "let's change phone numbers to uuids!"
  • [11:57] Elbereth Witte: I hate having to use the Mars prefix!
  • [11:57] Which Linden: hopefully by that point people will be saying "you had to remember a number?? crazy"
  • [11:57] Phantom Ninetails: lol
  • [11:57] Latif Khalifa: Which, i already say that lol
  • [11:57] Latif Khalifa: hasn't dialed actal number in ages
  • [11:57] Phantom Ninetails: Maybe in the future we'll be memorizing IPv6 addresses.
  • [11:58] Morgaine Dinova: Funny how the Git community is full of people asking that the tail should wag the dog too. They don't get "decentralized".
  • [11:58] Latif Khalifa: i still remember some dns ip's in case i need to look up
  • [11:58] Latif Khalifa: like 4.2.2.4 if you ever need one in a hurry ;)
  • [11:58] Phantom Ninetails: lol
  • [11:58] Which Linden: yeah it always makes you look more competent to type that in there in an emergecny
  • [11:59] Which Linden: that's a good one, I will remember that
  • [11:59] Which Linden: really useful to debug dns issues
  • [11:59] Latif Khalifa: yeah
  • [12:00] Latif Khalifa: actually all from 4.2.2.2 - 4.2.2.6 are valid name servers that let anybody use them
  • [12:00] Which Linden: tries not to DOS them
  • [12:00] Which Linden: ok well, it's getting around time to wrap this up, I think we had some interesting ideas here
  • [12:00] Phantom Ninetails: There's also 4.0.0.1 and 4.0.0.2
  • [12:00] Enkidu Linden: me too
  • [12:00] Enkidu Linden: this was neat
  • [12:01] Morgaine Dinova: dig -x 4.2.2.4 | grep PTR.
  • 4.2.2.4.in-addr.arpa. 86400 IN PTR vnsc-pri-dsl.genuity.net.
  • [12:01] Which Linden: Hopefully one of the UI specialists will get some time to wokr on the page pretty soon and then --- radness will ensue :-)
  • [12:01] Morgaine Dinova: Those are handy, cheers
  • [12:01] Twisted Laws:  :)
  • [12:02] Latif Khalifa: hehe :)
  • [12:02] Which Linden: awesome folks
  • [12:02] Enkidu Linden: i'm heading out. thanks you guys!
  • [12:02] Which Linden: thanks again for coming by and being awesome
  • [12:02] Phantom Ninetails: Fare well everyone
  • [12:02] Latif Khalifa: thanks for hosting ;)
  • [12:02] Twisted Laws: have a good day
  • [12:02] Which Linden: will see you next week