tag:blogger.com,1999:blog-48137430254781064142024-03-13T08:31:17.181-07:00Rmz Lab LogA blog describing what I do, mostly professionally, but with elements of my private life thrown in where they overlap ;)Anonymoushttp://www.blogger.com/profile/11679728200748159560noreply@blogger.comBlogger79125tag:blogger.com,1999:blog-4813743025478106414.post-31414170503044380442013-03-31T12:54:00.001-07:002013-03-31T12:54:47.462-07:00Higher education has come a long way<div>
Overheard on the bus, two girls talking about college. One girl was very happy about the place where she planned to go, the other asked what she would have learned in the end, the answer was incredible: "You won't actually <i>be</i> anything afterwards, but you get to do surfing, kickboxing and yoga, and you get some course credits". To paraphrase Beavis & Butthead: Higher education has indeed come a long way.</div>
<div>
<br /></div>
Anonymoushttp://www.blogger.com/profile/11679728200748159560noreply@blogger.com0tag:blogger.com,1999:blog-4813743025478106414.post-17083454069770600862013-03-30T03:08:00.006-07:002013-03-31T12:51:28.378-07:00The steps of learning a new piece on the piano<br />
<br />
I decided to write down this little piece about how I practice, mostly to help myself so that I'm more explicit about what I think when I think about music.<br />
<br />
<ol>
<li><b>Find a piece I love</b>. I'll have to stay with the piece for a while, and for most of that time (or so it seems at least) it will sound bad. I have to like that piece of music a lot to stay with it through the bad times in hope of getting to good times sometime in the future. In my opinion it is more important to pick a piece I love than to pick something I know I can master, but I've written another blogpost about that so I won't elaborate here.</li>
<li><b>Struggle through sight-reading</b>. One bar at the time, then two bars at the time, then many bars, eventually most of the piece without having to stop to see what's going on. If you're as bad as sight-reading as I am, this will be painful. Reading melody and chords, translating to finger positions, compensating for various signs along the way is, at least for me, error prone tedious and boring. If I had better sight-reading skills that decoding process would be closer to real time defined by tempo the music should have in a performance. But I'm not that good, so it's a case of "read, decode, try to hit the right keys" in <i>far</i> less than performance tempo. Also I'm not capable of reading everything equally fast so some parts will be much more broken up than others.</li>
<li><b>Selective practice on hard-to-read parts. </b> This is where it gets both more boring and slightly less boring at the same time. In order to be able to "read" all the parts more or less equally fast, I selectively practice more on the parts that are hard to read. This is boring since it's very repetitive, but it's also quite rewarding since it usually don't take <i>that</i> much practice until I more or less memorize the hard parts, and then they seem much easier, and I feel much smarter and that's always good ;-)</li>
<li><b>/: Repetition:/.</b> Play, then play more, then play even more. Most of the time this is just about getting closer to real-time when playing, but also about working with fingering and in some cases also with musical content and interpretation. It' kind of hard to work with interpretation while I'm struggling with just getting the right keys down at more or less the right time, so it's limited how much of this it's possible to do but something is possible and it's fun. At some stage during this phase I notice that I look less and less at the music and play more and more from memory. When that time arrives I gradually go into the next phase:</li>
<li><b>Playing by memory. </b> In some sense all of the above is just about getting to this point. It takes way to long to get here to put it as a goal early on, but once I play mostly by memory anyway it's time to put the music sheet away and try as best I can to play everything without looking at it. Since by this time the music is almost memorised it doesn't take too long. There are a few interesting thing that happen during the "play by memory" phase so I'll mention them here: This is the time when I invariably notice "large scale structure" in the music that I haven't noticed before. For instance long progressions that stretch out over many bars, sometimes tens of bars but which ties the bars together not the individual notes in the bars. As an example, consider the <a href="http://library.musicaneo.com/sheetmusic/purchase/sm-25477_the_well-tempered_clavier_book_i_prelude_and_fugue_no_2_in_c_minor_ed_czerny_bwv.html?key=ZIPMGip7hsa296xcaUPRVxIIvVi321kq#25477">second prelude in the well tempered clavier (book I)</a>. In this piece the first part is first a progression going up along an Ab minor chord, and then stepping down melodically through the Eb major scale (after that there is a sequence of cadenzas that does something entirely different :-). This is of course completely obvious once it's pointed out, but I didn't notice it until I started playing that particular part by memory. The nice thing about playing by memory is that I <i>need</i> these kinds of large scale structure elements in order to remember the whole thing and the mind is very good at finding structure, so that is good. There are many kinds of structures, the one I mentioned above is purely harmonic, but there are others that tie more to the experience of playing, fingering patterns, how it feels when stretching fingers and arms etc. All of these things are fair game when looking for patterns. The other nice thing about these patterns is that they all offer offer opportunities for interpretation: Large scale structure gives low frequency patterns that can be used to tie the rest of the piece together, that is the very definition of interpretation. Of course polishing is necessary, but starting with an awareness is good :-)</li>
<li><b>Starting to work on playing the piece more than just muddling through the piece.</b> While all the parts above are rewarding (see pt. 1 above) it's actually only at this step that the music has a fair chance of starting to sound good. At this point I can play it more or less in tempo without having to stop every few bars to figure out what to do next. This means that I can pick parts to practice based on what's technically challenging, enhance some idea about interpretation etc. I can try out various ideas just to see how they sound, play fast, play slow, rubato, experiment with various legatos etc. All of this is possible since I can think many bars ahead and be <a href="http://en.wikipedia.org/wiki/Flow_(psychology)">in flow</a> when I try things out. In a very real sense it's like discovering the piece once more. This part easily takes as long as all the previous ones put together and in some sense never ends.</li>
<li><b>Finding something new. </b>At some stage it is is necessary to concentrate on something new. A point of diminishing returns is reached and it's better to start concentrating on a new piece to get new challenges. Harping on the same piece forever is not good.</li>
<li><b>Get back to it.</b> Doing something new doesn't mean forgetting what you've worked on forever. I am often surprised about how much fun it is to play something that I haven't worked on for a few days or even weeks.</li>
</ol>
<div>
That's it. That how I do it ;-)</div>
<div>
<br /></div>
<div>
<br /></div>
Anonymoushttp://www.blogger.com/profile/11679728200748159560noreply@blogger.com0tag:blogger.com,1999:blog-4813743025478106414.post-86703618560816849872012-12-10T14:55:00.002-08:002012-12-11T05:00:30.478-08:00Software entropyAt <a href="http://comoyo.github.com/">work</a> someone recently claimed that "<a class="external-link" href="http://en.wikipedia.org/wiki/Second_law_of_thermodynamics" rel="nofollow">entropy always increases,</a> and the same is often true for software systems", and was there anything we could do about that. <br />
<br />
This is of course a very interesting question so I started thinking. When I started to formulate an email in reply to him it turned out to be way too long and slightly off topic, so instead of replying by mail I morphed my reply into a couple of blogposts (this and another in our internal wiki).<br />
<br />
But getting back to the topic; actually
it's only true that entropy always increases if you study closed
systems (it says so right in the wikipedia definition linked to above). In an
open system you can move entropy out of the system and thus decrease
entropy, that's why refrigerators work.<br />
<br />
In <a href="http://www.youtube.com/watch?v=H1Zbp6__uNw">statistical mechanics</a>
entropy is basically defined as the number of states a system can be in
that is compatible with what you observe. Technically it's usually the
logarithm of the number of possible states that's used, but that's just a
technicality to avoid dealing with really large numbers all the time.
So a refrigerator will move entropy out of the refrigerator, and by
doing so will make the uncertainty related to the exact location of
the atoms inside the refrigerator less, so the number of possible
combinations of locations for the atoms will be smaller. See how it
all fits together? ;-)<br />
<br />
How do we bring the that metaphor back
the domain of software? Well, if we define "program entropy" as the
number of different things a human perceives a program to possibly being
capable of doing, then that number of things defines that program's
entropy. If you think the program can only do one thing it has an entropy of
zero (log(1) = 0). If instead you have some code that you can't wrap your
head round and it could do a gazillion things for all you know, then
log(gazillion) is the entropy of that piece of code. So then if you have
two implementations, functionally equivalent but one that has but has
fewer possible interpretations as interpreted by a human reader than the other, then
the less ambiguous code has lower entropy by this definition. Note that since this is about
perception of the programs by humans, not by computer it makes
sense to talk about a program having different entropies for different
people. Also it does make a difference if the program is short enough to
wrap a human mind around it. If you can't wrap your mind about it you
can't know what it does so its entropy will be high since it in theory
could do many things. Entropy jumps in large leaps when things get
incomprehensible but conversely also drops quickly when incomprehensible
pieces becomes comprehensible.<br />
<br />
The same kind of argument can be
applied to configurations of systems (essentially graphs and not necessarily not lines of code), so anything
that brings us clearer code or configurations will lower our entropy.<br />
<br />
Does this make sense to you? <br />
<br />
One topic I just thought of is what this definition of entropy does wrt. abstractions. By the definition above abstractions must have high entropy, or do they? Well, abstractions must have high entropy since they conceivably can do their things in many different ways, that's the very essence of abstraction. Let's take an ordered collection as an example: Ordered collections can can be implemented in a gazillion ways, but that doesn't matter since you're treating it only as an ordered collection and all those gazillion way are essentially equivalent. So perhaps it works the other way, an abstraction makes it unnecessary to think of all the different ways the program implements the abstraction, so instead of thinking of the many different implementation one things about only the abstraction, so the entropy is in fact lowered by using good abstractions.<br />
<br />
Actually I think both these perspectives are valid, but if we let an individual reader's subjective perspective be the most central one, then I think it makes the most sense to claim that good abstractions will lower a program's entropy. That is, it will be true if the reader is of the kind of person that thinks that one abstraction is less complex than a set of direct implementations, and I know by experience that not everyone is like that, so opinions may differ systematically depending on how well the reader is able to internalize abstractions.<br />
<br />Anonymoushttp://www.blogger.com/profile/11679728200748159560noreply@blogger.com0tag:blogger.com,1999:blog-4813743025478106414.post-39617751741056577222012-04-08T04:38:00.000-07:002012-04-08T05:41:03.435-07:00The Aria from Bachs Goldberg variations<br />
<div class="separator" style="clear: both; text-align: center;">
<object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://2.gvt0.com/vi/Gv94m_S3QDo/0.jpg" height="266" width="320"><param name="movie" value="http://www.youtube.com/v/Gv94m_S3QDo&fs=1&source=uds" />
<param name="bgcolor" value="#FFFFFF" />
<embed width="320" height="266" src="http://www.youtube.com/v/Gv94m_S3QDo&fs=1&source=uds" type="application/x-shockwave-flash"></embed></object></div>
<br />
<br />
The aria from the Goldberg variations is a beautiful piece of music. Perhaps one of the most beautiful pieces ever written. When Glenn Gould plays it (video clip above) is of course beautiful, it also sounds very simple. Like something anyone can play. Well. It even feels that way when you play the first few bars, but that's a deception! When playing this piece I feel like I'm trapped inside (a very beautiful) swiss watch: There are cogwheels everywhere, and they have to match up exactly or the whole thing just stops working. It's not that hard to put the fingers on the right place at almost the right time, but getting it exactly right is surprisingly difficult. But of course also rewarding. This is the kind of music it's worth spending time on. Every little bit of improved skill on my part pays itself back handsomely in musical experience (for myself, I don't dare let anyone else listen to this until I'm considerably more skilled :-)<br />
<br />
<br />Anonymoushttp://www.blogger.com/profile/11679728200748159560noreply@blogger.com0tag:blogger.com,1999:blog-4813743025478106414.post-22704887429684853122012-02-26T13:18:00.003-08:002012-02-27T00:24:06.233-08:00What to play when learning to playSo I'm learning to play the piano. It's a joy. It's fun. It's demanding. It's as engaging as playing video games, only better since it's a (somewhat) useful skill I'm learning. But it'a also challenging in many ways. On of the many ways is to chose what to play? I've spent a couple of months dialing in the selection of music and I think I have a mechanism that works now.<br /><br />The mathematician Hardy said "There is no permanent place in the world for ugly mathematics". That is so, but it's even more so for music. I've looked in a bunch of piano schools and unfortunately a lot of the pieces in them are just boring. The sad fact is that even if I had been able to play them perfectly (which I'm not), they would not sound good, because the pieces are bad. These schools are probably written with the best intentions e.g. being pedagogical or making money for the composer, but that simply doesn't matter. If I had spent time playing this music what I had been practicing most would be to be bored playing boring music that even when perfected would be boring . There is no permanent place in this world for ugly music and in particular there is not even a temporary place for it anywhere near my piano.<br /><br />So then, what do I play? The answer is: I play the good stuff. Bach, Chopin, Beethoven, Sæverud,..... whatever. But it <span style="font-style: italic;">has</span> to be good music. I've found that for me it's better to play good music one or even several notches above my current skill level and then struggle hard with it until it's (more) within my abilities than to suffer even a minute of something that's probably within my abilities, but intrinsically boring.<br /><br />Right now I'm working on the second prelude in the well tempered clavier by J.S. Bach. (BVW 847). It's hard. I'm not ready for it. However, It's also fun. I can get <span style="font-style: italic;">some</span> of it to sound good. I can think concretely about how to improve my playing. I can listen to an abundance of recordings of this piece and be inspired by them. I'm getting better every day and all every little improvement is so incredibly rewarding because the payback of even a little progress is immediate: Get those two bars in succession without missing a note and without having to pause between the bars to read the music to figure out where to put my fingers ... and *wham*: New cool "Bachy" progression unlocked, only several hundred more to go ;-) I know that there are at least two or three full layers of mechanical skill and musical interpretation I have to get through before I'm playing this piece with anywhere near the skill it deserves but that's ok :-) I'll happily play this piece for however long it takes and enjoy every second of it, even when I don't play it very well ;)<br /><br />So that's this blogpost's key insight: Don't play shitty music. It's a waste of time.Anonymoushttp://www.blogger.com/profile/11679728200748159560noreply@blogger.com1tag:blogger.com,1999:blog-4813743025478106414.post-89392327413243449522012-01-13T03:58:00.000-08:002012-01-13T04:00:13.181-08:00I couldn't resist sharing this little gem :-)A comment found in a piece of software I work on (with others, names have been removed to protect the innocent):<br /><br /><blockquote>// This class is like Jerry Seinfeldt in the TV series "Seinfeldt".<br />// It's fairly central, and at the core there is something, but<br />// almost everything you can see is just mindless maneuvering<br />// and observation of form in order to avoid utter embarresment,<br />// not always successful. In our case this is of course a consequence<br />// of using Java as a medium of expression, in Seinfeldts case<br />// I'm less sure of the root cause.</blockquote><br />*Giggle*Anonymoushttp://www.blogger.com/profile/11679728200748159560noreply@blogger.com0tag:blogger.com,1999:blog-4813743025478106414.post-19984750869934565012012-01-01T13:28:00.000-08:002012-01-01T13:46:05.191-08:00My new piano - some first impressionsI'm an adult. I've got four kids and I haven't played the piano since my early teens, when I quit because it was to boring. Since then I've played various percussion instruments for some decades, but lately I haven't had much time for that either. Kids and work take too much time. About a year ago I visited a friend, and he had a Yamaha digital piano. I sat down and tried to play some of the pieces he had lying around and found I could, kinda, sorta play the piano: Some of the motoric skills were still there and my music-reading skills were much better now than when I quit playing piano. I spent an afternoon playing on his piano, and I was hooked.<br /><br />I'm a somewhat obsessive and impulsive personality, so to avoid veering away in every direction I usually let my impulses mature until they are irresistible, or as some would say: Obsessive :). In this case I let the impulse to buy a piano mature for almost six months before starting to looking for a piano. I asked friends, looked at reviews, read<a href="http://www.ukpianos.co.uk/7-things-you-must-know-before-you-buy-a-digital-piano.html"> Graham's booklet </a>and went to the local music shops. Before christmas I had narrowed my search down to two pianos: The Kawai CN-33 and the Yamaha CLP-430. I can't claim that the final decision was wholly rational. Both of these pianos are as far as I can tell really good ones so I guess it came down to the shop offering a much better deal on the <a href="http://www.kawai.de/cn33_en.htm">CN-33</a>. I ended up getting some 30% off relative to the sticker price and that was pretty much that.<br /><br />After that, the matters have been mostly practical, so I'll run down how the first few days as a piano owner has been:<br /><br /><ul><li><span style="font-style: italic;">Transport</span>: The piano weights 53 Kg, the box it came in weighs in at 20Kg, so the whole thing weighs 73 Kgs. It's 150cm x 65 cm x something, and fits nicely in a station wagon, but you do need to be two fairly strong individuals to transport it safely.</li><li><span style="font-style: italic;">Unpacking</span>: No instructions for assembling the piano was included. At least none that Icould find. There was a small sheet of paper on the top of the stack of pieces saying thatassembly instructions could be found in the owner's manual. Well, first of all the owner's manual was at the bottom, under 53 kilos of piano pieces wrapped in plastic, and I didn't find that until after the entire piano was assembled. Secondly the owner's manual didn't say much of interest except the pretty much obvious things about not pooring liquids into an electrical piano etc. In particular, no assembly instructions could be found.</li><li><span style="font-style: italic;">Assembly</span>: Luckily assembly wasn't that hard: There are sixteen screws in a small bag. The four shiny ones are used to fasten the pedalboard to the sideboards. The four long black ones are used to fasten the back-panel to the side-panels. The four shorter black ones are used to fasten the back-panel to the pedalboard, and the four machine-screws are used to fasten the piano to the stand. Plug in the wire coming out of the pedals into the hole labeled "pedals", and the power cable into the hole saying "power", and you're done. The whole thing took about an hour and some thinking. It wasn't hard, it was just that in a situation like this you really <span style="font-style: italic;">really</span> don't want to do something wrong, so I had to stop and think a lot to make sure I didn't make any mistakes, and I think I didn't.</li><li><span style="font-style: italic;">Using it</span>: It is wonderful. It sounds ridiculously good. Really. It's unnatural :-) The CN-33 easily sounds better than any piano I've ever played on myself and most pianos I've heard other people play. Also It's just so much fun to play. Playing on the simulated ebony keyboard is just a sensuous experience. I won't compare it to touching human skin, since someone might take it the wrong way and be offended, but that's almost what it feels like. My kids have clicked on all the buttons and played with the piano for several days. They find it great fun. Myself, I've just used the piano sounds (no organs, no bass, no midi, no usb, no weirdness) and the recording feature. The recording feature and the metronome is actually extremely useful. The metronome for keeping pulse (as a percussionist I've played more duets with metronomes than anything and anyone else :-), and the recorder for immediately reviewing something, sometimes a full tune, sometimes just a few bars. I haven't done that with any instrument before, but I've found it extremely useful. <br /></li></ul><br />So that's that. So far I'm a happy CN-33 owner. Let's just hope I also one day can become a somewhat proficient pianist, but as of today I'm a happy one, and that that's also something ;-)Anonymoushttp://www.blogger.com/profile/11679728200748159560noreply@blogger.com0tag:blogger.com,1999:blog-4813743025478106414.post-49452549681986543862011-12-08T11:22:00.000-08:002011-12-10T08:47:35.082-08:00Ho ho ho, now I have a microscopeSanta Claus had a short pit-stop here today and dropped off a high powered microscope from Amscope :-) Unfortunately the 10 MP camera doesn't seem to work very well, which is a bummer and something I will have to fix. However, I'm still full of excitement about this :-)<br /><br />Update: The camera isn't dead on arrival. It seems to be alive and kicking when plugged into an old XP machine. My OSX box didn't recognize the camera at all. Amscope advertise that this camera should be useful both for windows and OSX, but either that information is incorrect or something is missing. <br /><br />My cellar office is definitely getting a "mad scientist" flavor now: That microscope is <span style="font-style: italic;">huge</span> and it stands right in the middle of my desk where I previously had a big flatscreen monitor so it's kind of hard to miss :-) Now I need to kick the tires a bit to get the imager up and running, set up some processing pipelines from the cellar office (where the XP box is located) up to the interclouds where the images will be stored. Also I now need to aquire some kit to make interesting preparates to look at. So far i've just looked at paper, which is interesting enough for an evening, but it gets a bit tiresome after a while even at 2000 times magnification :-)<br /><br />Update on the update: A quick email to amscope cleared things up a bit. The camera as shipped from amscope doesn't contain software for OSX, but they have software available for download here: <a href="http://www.amscope.com/download-ma" target="_blank">http://www.<span class="il">amscope</span>.com/<wbr>download-ma</a>. I haven't tested it yet so I don't know how good or bad it is, but this is progress :-)<br /><br />Update^3: I've now tested the osx software and basically, it sucks, but not so badly that it's unusable. The software from amscope is an application that seems to be reading directly from the USB connection and then allow images to be captured either as single frames or as movies. That's not so bad, but what's just stupid is that they haven't bothered to make an OSX driver for the camera, which means that all other imaging software for OSX is probably useless. That is stupid. It is possible to work around this, but it would have been much better not to.Anonymoushttp://www.blogger.com/profile/11679728200748159560noreply@blogger.com0tag:blogger.com,1999:blog-4813743025478106414.post-5721877202791786672011-11-15T00:06:00.000-08:002011-11-16T13:54:51.189-08:00Telenor Management - a view into my crystal ballI was thinking a bit about the future of the top management in Telenor the other day, and here are what I found. Mind you, I have no (absolutely no!) access to information that is private or confidential about these matters. Everything I say is based on a combination of open sources and wild guesses. Caveat reader. With these preliminaries out of the way, let's look at some cherry-picked facts listed in no particular order.<br /><ul><li><a href="http://no.wikipedia.org/wiki/Jan_Edvard_Thygesen">Jan Edvard Thygesen</a><a href="http://no.wikipedia.org/wiki/Jan_Edvard_Thygesen"> </a><a href="http://vimpelcom.com/pr/pr.wbp?id=9dfa60e2-80ca-4b91-8553-74d4db6ab8e8">jumps ship from Telenor to Vimpelcom</a>. Thygesen has been one of the most influential directors in Telenor during the last almost twenty years. He has been instrumental in particular with respect to the eastern european investments. As such, it is natural that he now joins Vimpelcom, one of the companies Telenor has had a considerable investment in. However, it also indicates another thing: He believes he has better opportunities in Vimpelcom than in Telenor.</li><li>The previous CEO of Telenor, Thormod Hermansen was CEO from 1991 to 2002. That is 11 years.</li><li>Before Hermansen Kjell Holler was CEO from 1980 to 1991, 11 years.<br /></li><li>This year the current CEO, <a href="http://no.wikipedia.org/wiki/Jon_Fredrik_Baksaas">Jon Fredrik Baksås</a> has been CEO for ten years. If history is any guide, he will step down next year. Nothing has been announced yet but that just makes it more interesting when we are playing the game: "Who's the next CEO of Telenor?"</li><li>Actually there is an obvious candidate: <a href="http://en.wikipedia.org/wiki/Kristin_Skogen_Lund">Kristin Skogen Lund</a>. Let me name the ways in which she is qualified: She's bright. She's an MBA (INSEAD) , she already works within Telenor (the Digital Services division, formerly chief of the Nordic division). Also she's the president of the <a href="http://en.wikipedia.org/wiki/Confederation_of_Norwegian_Enterprise">Confederation of Norwegian Enterprise</a> which in practice means she's got considerable political clout, something which is mandatory for any Telenor CEO, since it's a government owned company. Finally, she's a she. Of course it's not obvious that she'll be elected, but it wouldn't be at all surprising if she is.<br /></li></ul><p>So what do i see in my crystal ball? I see a CEO change sometime next year. I see Kristin Skogen Lund being the next CEO, and I see a significant portion of the current top management team coming the same conclusion as Thygesen; that their remaining years are better spent elsewhere than in Telenor. As a consequence of this there will be a considerable influx of new people in Telenor's top management. Some will be internal, and some will be external, and I couldn't possibly comment on who I think any of these people will be :-)</p><p><br /></p><p><br /></p>Anonymoushttp://www.blogger.com/profile/11679728200748159560noreply@blogger.com0tag:blogger.com,1999:blog-4813743025478106414.post-33459683213418992352011-10-17T22:29:00.000-07:002011-10-17T22:52:53.937-07:00Something to bite in ;-)Even though the machine learning homework was really simple, it was still fun to do. I clearly needed a refresher on Octave, and Professor Ng's Octave intro was very useful: Exactly the right mix of speed and clarity. Ng is a really impressive character. He is obviously an extremely good teacher: At first glance that's not so obvious since it seems like the things he explains are just so simple that anyone could have done as well as him. That's actually the hallmark of a good teacher: The lessons just seems obvious. It's only after a while, usually after struggling a bit, one recognizes that the lessons are not that obvious and the teacher is actually brilliant :-) A risk with teachers like that however is that one believes that the lessons is all one needs, that exercises are not needed. Luckily I've learned that particular lesson previously and I've got no need to repeat it.<br /><br />Another little but impressive detail is the octave code used to submit the exercises. Yes, you read that right: Octave itself does the upload. The submit script has its own SHA-1 implementation, talks with the ml-class server over the wire and handles the submit for you. Very elegant.<br /><br />I managed to get the main part of the exercises done on monday but the extra credit parts will have to wait a bit.<br /><br />The AI course seems a bit more clunky. Still worth the time but not the same level of style as machine learning. So far It's been a refresher course for me, but obviously one I need. Today's lecture was about probabilities and I discovered I had to think for several seconds (ok, even a few minutes) before I got the quiz questions right. That's surprising, after all I <span style="font-style: italic;">know</span> this stuff, right? This is a reminder that you don't really know something if you don't actually do it on a regular basis. This is true for maths, but it's also true for programming and probably most other tasks requiring some skill.<br /><br />Yet one pleasant surprise has been the discussion forum for the ai class and ml course on reddit. It's nice. People are polite, ask relevant questions, get good answers and are on topic and discuss academically interesting issues. It's a bit like being back on the internet before 1993 :-)<br /><br />For some reason I've managed to lose my notes for the first two modules. Sigh. Another sigh is the LaTeX preview in AquaEmacs: It's just not working on my laptop. It is working on another machine at work so I'll try a bit of "differential debugging" to see what's the cause of the malfunction. That kind of thing just freaks me out when it happens. I have to breathe slowly several times :-)<br /><br />However, all in all, it's good fun. I think I could benefit from explaining the stuff I'm learning to someone else; that's a really good way to enforce learning. I'll see if I can concoct some situation at work where it is appropriate to lecture on gradient descent, linear regression, bayesian networks or normal equations :-) Colleagues beware!Anonymoushttp://www.blogger.com/profile/11679728200748159560noreply@blogger.com0tag:blogger.com,1999:blog-4813743025478106414.post-24666455106044080582011-10-14T00:47:00.000-07:002011-10-14T00:50:12.100-07:00First AI homework done, Octave is nice... but I obviously need a refresher course to get the intuition for what's right up. Good thing that the machine learning homework is really simple. Hopefully I'll get it done by this sunday, one week before it's due. One can hope.Anonymoushttp://www.blogger.com/profile/11679728200748159560noreply@blogger.com0tag:blogger.com,1999:blog-4813743025478106414.post-32873382965935278692011-10-12T08:51:00.000-07:002011-10-12T09:02:19.152-07:00First day of real courseworkSo today was the first day of real coursework. I've been through module 1 and some of module 2 of the AI course and started on the machine learning videos. <br /><br />Both of these courses have in-video review questions, and that's in fact a good idea. In both of the classes the material so far is just repetition, but it's repetition of stuff I learned quite a few years back, so today's lesson is that this kind of repetition is something one should approach with some humility: I know this stuff, or at least so I believe, yet I've yet to score perfectly (on first attempt) on any (except one) of the review questions. I even managed to get most answers to the review-questions about tree and graph-search algorighms wrong. I didn't see that coming. However, I'm taking this in good spirits. This is fun, it's a bit more challenging than I thought it would be at this stage but that's ok :-)Anonymoushttp://www.blogger.com/profile/11679728200748159560noreply@blogger.com0tag:blogger.com,1999:blog-4813743025478106414.post-50047241281678449672011-10-10T23:20:00.000-07:002011-10-11T08:04:08.802-07:00It's the little things - Octave and Gnuplot on OSXI look forward to do some work on the machine learning and AI tasks, but right now I'm struggling with the basic tools. In particular the fact that I can't get plotting to work with Octave on OSX. I can get Octave to work, I can get Gnuplot to work, but not to use Gnuplot from within Octave. It's very frustrating. I will of course crack this one one way or another, but this is the kind of hurdle I get no pleasure from jumping over.<br /><br />Update: I found a solution on http://www.mac-forums.com/forums/os-x-apps-games/242997-plots-octave-dont-work.html.<br /><br />It's simply to put this:<br /><br /><pre class="alt2" dir="ltr" style="margin: 0px; padding: 8px; border: 1px inset; width: 640px; height: 50px; text-align: left; overflow: auto">## commands executed on startup<br />setenv("GNUTERM","X11")</pre><br />into an ~/.octaverc file. It works for octave, but not for QtOctave, but that's acceptable.<br /><br />Update 2: It even works for qtMatlab, now I only need to get the inferior octave thingy in AquaEmacs to work and I'm all set to work in perfect comfort :-)Anonymoushttp://www.blogger.com/profile/11679728200748159560noreply@blogger.com0tag:blogger.com,1999:blog-4813743025478106414.post-78366089738066295692011-10-10T11:48:00.000-07:002011-10-11T08:52:25.197-07:00Happy Happy Joy JoyThe joys of fatherhood: Yesterday I was helping my son to bed, talking a bit with him and reading from a book. He is six years old and has recently started in first grade at school. Two really nice things happened:<br /><ol><li>For some reason we were talking about numbers, and I asked him if the number eight was a prime. He waited a few seconds obviously thinking, then smiled and said "No, because it is an even number" . His math teacher is really cute too :-)</li><li>I've decided to feed him some antidote to children's television, so I'm reading Kiplings "Jungle Book" for him (not the Disney version). I haven't read that version myself before and it was a plesant surprise: It's very well written, witty and not very politically correct. Sometimes it's just plain brutal, but (except some blatantly racist parts that I quietly skipped when reading) it's also very tasteful. Hooray for old Rudyard ;-)</li></ol>Anonymoushttp://www.blogger.com/profile/11679728200748159560noreply@blogger.com0tag:blogger.com,1999:blog-4813743025478106414.post-84970046549112028022011-10-06T00:21:00.000-07:002011-10-06T00:26:50.126-07:00Stanford machine learning and AIIn other news: I've joined the experiment by participating in the <a href="http://www.ai-class.com/">AI</a> and <a href="http://www.ml-class.org/course/class/index">Machine Learning</a> classes at Stanford. I'll report sporadically on how it's going. So far it's going great, which isn't so strange since classes start on october 10, which is on next monday :-) <div><br /></div><div>The biggest question is if I will find time to do this on top of a full and busy schedule at work, and the inevitable full schedule in my private time (I've got four kids age twelve and younger). I'll try, but the classes will be among the first things to go if I find that there just isn't enough time.</div><div><br /></div><div>Anyway, I'm exited about this ;-)</div>Anonymoushttp://www.blogger.com/profile/11679728200748159560noreply@blogger.com0tag:blogger.com,1999:blog-4813743025478106414.post-56937865645342631712011-10-05T23:58:00.001-07:002011-10-05T23:59:17.465-07:00My power supply diedIt's a brand new one for my Apple laptop. I'm sure it did so in sympathy with its <a href="http://www.apple.com/stevejobs/">maker</a>.Anonymoushttp://www.blogger.com/profile/11679728200748159560noreply@blogger.com0tag:blogger.com,1999:blog-4813743025478106414.post-22976247369747458132011-05-16T06:48:00.000-07:002011-05-16T06:56:20.251-07:00How to fix bugs1. Figure out how to reproduce the bug, or failing that, get extensive logs from when the bug manifested.<div><br /><div>2. Locate where the bug most likely happens and start narrowing in:</div><div><ul><li>If possible, write a test that reproduces the bug.</li><li>If the code where you believe the code is located is badly written clean up the readability as much as possible without making any semantic changes. Sometimes the bug will then stand out clearly and will be easily fixed.</li><li>Figure out invariants, pre and postconditions in your code, and insert checks for them everywhere you can. If they fail, fix them, if that fixes your bug it's gone if not then you've just fixed a bug waiting to happen.</li></ul><div>3. If this doesn't work for a prolonged period of time. Fix the bug by rewriting the entire mess. Giving up is a very efficient, but also very expensive debugging technique.</div><div><br /></div><div>More later :-)</div><div><br /></div></div></div>Anonymoushttp://www.blogger.com/profile/11679728200748159560noreply@blogger.com0tag:blogger.com,1999:blog-4813743025478106414.post-24650258437724908962010-10-04T02:01:00.001-07:002010-10-04T02:01:38.988-07:00Hate driven developmentI hate writing tests. I hate not having tests even more. Therefore I write tests. Hate begets hate.Anonymoushttp://www.blogger.com/profile/11679728200748159560noreply@blogger.com2tag:blogger.com,1999:blog-4813743025478106414.post-31825999532612165962010-09-30T14:28:00.001-07:002010-09-30T14:35:39.812-07:00The Hygiene/Product/Relation model fo...<div style="text-align: left;"><span class="Apple-style-span"><b><span>This is a little something I wrote a year ago to clarify my thoughts on the future of telcos. It's still in a draft format, but it also may still be useful so I'm publishing it. sept 30 - 2010 - rmz</span></b></span></div><div style="text-align: left;"><span class="Apple-style-span"><b><span><br /></span></b></span></div><div style="text-align: left;"><span class="Apple-style-span"><b><span><br /></span></b></span></div><div style="text-align: center;"><span class="Apple-style-span"><b><span><br /></span></b></span></div><div style="text-align: center;"><span class="Apple-style-span"><b><span><br /></span></b></span></div><div style="text-align: center;"><span class="Apple-style-span"><b><span><br /></span></b></span></div><div style="text-align: center;"><br /><span><b>DRAFT<br /><br /><br /><br />A Hygiene/Product/Relationship model </b></span></div><div style="text-align: center;"><span><b>for communication products.</b></span></div><div style="text-align: center;"><span><b><br /><br /><br />by<br /><br /><br /><br />Bjørn Remseth</b></span></div><div style="text-align: center;"><span class="Apple-style-span"><b><span><br /></span></b></span></div><div style="text-align: center;"><span class="Apple-style-span"><b><span>October 2009<br /></span></b></span><br /><div style="text-align: left;"><br /></div><h4 style="text-align: left;">The basic idea</h4><div style="text-align: left;"><span>Communication products satisfy needs may conveniently be grouped into three groups: Hygiene, Product, and Relationship. The hygiene needs contains features fulfilling that absolutely positively needs to be in order for anyone to bother using a product. Product features are whatever is necessary to work with products: Names, brands, pricing, product identifiers etc. Relationships are the reason why communication takes place in the first place: They motivate the need for communication</span>.</div><div style="text-align: left;"><br /><h4>Motivation and inspiration</h4><span>The model is inspired by Maslow and Hertzberg's work.</span></div><div style="text-align: left;"><br /></div><div style="text-align: left;"><i><span>Maslow's studied successful people: </span></i></div><div style="text-align: left;"><span><br /></span></div><div style="text-align: left;"><span>Maslow based his model on studies of successful people (Einstein being one of them), so in a sense he worked "top down" to make some sort of sense of how successful people (self-realizers) behaved. In brief, what he found was</span></div><blockquote class="webkit-indent-blockquote" style="text-align: left; margin-right: 0px; margin-left: 40px;"><i><span>Maslow saw human beings' needs arranged like a ladder. The most basic<br />needs, at the bottom, were physical—air, water, food, sleep. Then came<br />safety needs—security, stability—followed by psychological, or social<br />needs—for belonging, love, acceptance. Then, came esteem needs—to feel<br />achievement, status, responsibility, and reputation. At the top of it<br />all were the self-actualizing needs—the need to fulfill oneself, to<br />become all that one is capable of becoming. </span></i></blockquote><blockquote class="webkit-indent-blockquote" style="border: medium none ; margin: 0pt 0pt 0pt 40px;"><blockquote class="webkit-indent-blockquote" style="border: medium none ; margin: 0pt 0pt 0pt 40px;"><div style="text-align: right;"><i><span>(source http://en.wikipedia.org/wiki/Abraham_Maslow)</span></i></div></blockquote></blockquote><div style="text-align: left;"><span>This is a useful model, since it means that all needs are not created equal. If you have no air, nothing is more important than air, but if you have enough air, even more air is not really of any concern. In my mind Maslow's layering ties in to the concept of </span><a id="acsf" href="http://en.wikipedia.org/wiki/Diminishing_returns" title="diminishing returns"><span>diminishing returns</span></a><span> but relates it to human motivation rather than economics. I find this important since motivation and tastes are highly important for human behavior, but economics says nothing about</span><span> them. </span></div><div style="text-align: left;"><br /></div><div style="text-align: left;"><br /></div><div style="text-align: left;"><i><span>Herzberg studied what motivated engineers and accounants at work:</span></i></div><div style="text-align: left;"><span><br /></span></div><div style="text-align: left;"><span>Herzberg interviewed a couple of hundred accountants and engineers in the Pittsburg area to try figuring out what motivated them for work. His findings are summarized (very briefly :-) in Wikipedia:</span></div><div style="text-align: left;"><blockquote class="webkit-indent-blockquote" style="border: medium none ; margin: 0pt 0pt 0pt 40px;"><p></p></blockquote><blockquote class="webkit-indent-blockquote" style="border: medium none ; margin: 0pt 0pt 0pt 40px;"><i><span>Two-factor theory distinguishes between:</span></i></blockquote><p></p></div><div style="text-align: left;"><br /><ul><br /><ul><li><b><a href="http://en.wikipedia.org/wiki/Motivation" title="Motivation"><i><span>Motivators</span></i></a></b><i><span><br />(e.g. challenging work, recognition, responsibility) which give<br />positive satisfaction, arising from intrinsic conditions of the job<br />itself, such as recognition, achievement, or personal growth</span></i><sup id="cite_ref-multiple_3-0" class="reference"><a href="http://en.wikipedia.org/wiki/Two-factor_theory#cite_note-multiple-3"><i><span>[4]</span></i></a></sup><i><span>, and</span></i></li></ul><br /></ul><br /><ul><br /><ul><li><b><a href="http://en.wikipedia.org/wiki/Hygiene_factors" title="Hygiene factors"><i><span>Hygiene factors</span></i></a></b><i><span> (e.g. status, </span></i><a href="http://en.wikipedia.org/wiki/Job_security" title="Job security"><i><span>job security</span></i></a><i><span>, </span></i><a href="http://en.wikipedia.org/wiki/Salary" title="Salary"><i><span>salary</span></i></a><i><span><br />and fringe benefits) which do not give positive satisfaction, although<br />dissatisfaction results from their absence. These are extrinsic to the<br />work itself, and include aspects such as company policies, supervisory<br />practices, or wages/salary</span></i><sup id="cite_ref-multiple_3-1" class="reference"><a href="http://en.wikipedia.org/wiki/Two-factor_theory#cite_note-multiple-3"><i><span>[4]</span></i></a></sup><i><span>.</span></i></li><li style="text-align: right;"><i><span>(Source: http://en.wikipedia.org/wiki/Two-factor_theory)</span></i></li></ul></ul></div></div><div><div><div><span><br /></span></div><div><span>That is the basic idea: Hygiene factors are those needs to be fulfilled otherwise you'll be irritated, motivators are what will keep you there even if you only have a slight chance of achieving those needs.</span></div><div><span class="Apple-style-span"><b><span class="Apple-style-span"><span style="font-weight: normal;"><span><br /></span></span></span></b></span></div><div><span>Both Maslow's and Herzberg's models are nice constructions for human behavior in general, or at least for the generally successful people Maslow studied and the engineers and accountants in the Pittsburgh area Herzberg interviewed. But how can I apply them to understanding communication products in a business setting? Actually it turns out not to be so hard :-)</span></div><div><div><div class="msg Nth"><span class="Apple-style-span"><b><br /></b></span></div><h4>A three layer model of communications products</h4><div><br /></div><div style="text-align: center;"><br /></div><div style="text-align: center;"><br /></div><div style="text-align: center;"><img src="http://docs.google.com/drawings/image?w=400&h=400&ac=1&id=sQozGvPoSKOXuyZOfYwzx4Q&rev=69" /><br /></div><div style="text-align: center;"><br /></div><div style="text-align: center;"><i><span>Product features seen as a set of Hygiene/Product/Relationship features.</span></i></div><div style="text-align: center;"><br /></div><div style="text-align: center;"><br /></div><div style="text-align: center;"><div style="text-align: left;"><span>I propose a model to describe communications products. The lowest level are the hygiene factors, the needs that has to be adequately addressed before anyone will even think about using the product on a regular basis. For speech telephony such factors will be sufficient basic geographic coverage, legal use of the service (as opposed to e.g. illegal radio telephony), adaquate voice quality, sufficient availability. Initially all of these factors will be basis for competition between companies, but as the industry matures it is to be expected that everyone who survives the competition will be adequate in these areas. It is probably fair to say that in a mature market all competitors have hygiene factors down cold, if not they wouldn't be competing. Over time exactly what constitutes a hygiene factor will probably change somewhat. Data communications and web browsing capabilities wasn't a hygiene factor when cellular phones were introduced, but it is arguably becoming one now.</span></div><div style="text-align: left;"><span><br /></span></div><div style="text-align: left;"><span>That takes us up one level to the differentiators. Products have a set of product-specific parameters: Phone numbers, customer identities, price plans, payment options, credit management, customer service, brands targeted at and communicating more efficiently against various segments etc. There is a whole industry built on tuning product parameters and pushing products using various different combinations of interesting graphics, beautiful people and catchy music. And of course pricing the products in ways that are competitive when compared with what the competitors come up with. Gaming product parameters is a fascinating endevour that can and do occupy several lifetimes worth of activity in major corporations. However, it is a mistake to believe that customers are primarily interested in products or tightly product-related features.</span></div><div style="text-align: left;"><span><br /></span></div><div style="text-align: left;"><span>Nobody is so interested in talking that they will regularly pick up a phone and start talking in it regardless if there is anyone in the other end of the conversation. Everyone I know who talks in the phone talks to </span><i><span>someone</span></i><span> for some </span><i><span>reason</span></i><span>. There is a wide range of needs that can be fulfilled by talking to someone, but I choose to group all of these reasons into one category: Managing relationships, and that is why I call the top level in the model the "Relationship layer".</span></div><div style="text-align: left;"><span><br /></span></div><div style="text-align: left;"><span>There are many relationships to be managed: Friends, family, colleagues, interest groups for this that and the other thing. At various times these needs to be (among other things) understood, coordinated, managed, convinced, impressed, seduced, coerced and bullied. All these needs are usually independent of any particular product that is used to fulfill the need. The product is a means to an end, not the other way round. But this doesn't mean that the product has no business in helping the customer to manage their relationships.</span></div><div style="text-align: left;"><br /></div><h4 style="text-align: left;">How is this model useful?</h4><div style="text-align: left;"><br /></div><div style="text-align: left;"><i><span>Perspective</span></i></div><div style="text-align: left;"><span>The immediate usefulness comes from the perspective it takes: It puts the users of the communication services (in our language, "the customer") and their needs at the top. Furthermore it imposes an ordering of the needs. Some needs are "hygienic", irritants if not met but otherwise not something one notices. Others are "motivators", and direct user behavior once hygienic needs are fulfilled. Product parameters are somewhere in the middle: To some extent they are hygienic, you don't want to think too much about it but become irritated when they are missing: Voice quality, coverage, correct invoices and customer service that actually offers service all fall into this category.</span></div><div style="text-align: left;"><span><br /></span></div><div style="text-align: left;"><span>For the most part however, the relationships that are the subject matter of and motivator for almost every phone conversation is seldom explicitly assisted by the actual communications product, at least not for private commercial voice communication products. Business subscriptions and switchboard services are arguably in the relationship management part of the spectrum, but for private customers and private subscriptions it is harder to find any part of a phone subscription that facilitates relationship management. The only thing I can think of are ring-plans that makes it somewhat less expensive to call your family and closest friends.</span></div><div style="text-align: left;"><span><br /></span></div><div style="text-align: left;"><span>This leads us to the other actors: </span><i><span>Handset manufacturers </span></i><span>are very much into the relationship management business. They have understood that managing conversations, phone books, images, groups of people in the phone book etc. is important for their customers. They understand that ringtones that indicate who is calling, and selective blocking of incoming calls is useful for the customers. It is unclear to me if the handset manufacturers actually understand that what they are doing is relationship management, or if they are simply seeing themselves as managers of a bunch of product features that happen to be possible to embed in a handset. I guess both interpretations are possible, so they are probably both true. The fact remains; handsets are tools for managing relationships more then they are tools for managing phone subscribtions.</span></div><div style="text-align: left;"><span><br /></span></div><div style="text-align: left;"><span>Some of the new voice actors, in particular </span><a id="wl96" href="http://www.google.com/googlevoice/about.html" title="Google Voice"><span>Google Voice</span></a><span> and </span><a id="z_kj" href="http://www.ribbit.com/" title="Ribbit"><span>Ribbit</span></a><span> (and to some extent Skype) are very much into relationship management, and I do believe </span><i><span>they</span></i><span> know what they are doing. Google Voice handles call screening, like many handset does, but also makes it possible to route incoming calls to various different voice mailboxes, and offers a </span><a id="i0_0" href="http://www.google.com/googlevoice/about.html#" title="speech-to-text"><span>speech-to-text</span></a><span> service that lets the user or computer programs acting on the user's behalf react to incoming messages. Ribbit's first commercial product (as far as I know) was focused on </span><a id="vgb-" href="http://www.ribbit.com/salesforce/" title="assisting salespeople"><span>assisting salespeople</span></a><span> by facilitating their relationships with their customers.</span></div><div style="text-align: left;"><span><br /></span></div><div style="text-align: left;"><span>The components that facilitate relationship management seems to be more compute-intense and less network oriented than voice. This may be somewhat misleading since compute-intense tasks may very well also be network-intense, but that is invisible to the end user who may only perceive voice communications as network-intense. At least that is how I think about users thinking about this :-) Nonetheless, I believe it is fair to say that relationship management is either more compute intensive than voice transmission, or uses a broader range of handset capabilities than pure voice, or both. This means that if relationship management is important for successful future speech products, then telecommunications companies must either leave the stage altogether and leave relationship management to others, or they must increase their presence in relationship-related products.</span></div><div style="text-align: left;"><br /></div><div style="text-align: left;"><br /></div><div style="text-align: left;"><i><hr class="pb"><span>Extendability to other communications products</span></i></div><div style="text-align: left;"><i><span><br /></span></i></div><div style="text-align: left;"><span>So far I have only discussed voice communications, but the hygiene/product/relationship perspective can be applied to other classes of services as well. Here is a short sampling of other types of products and their decomposition into H/P/R components.</span></div><div style="text-align: left;"><br /></div><div style="text-align: left;"><br /></div><div style="text-align: left;"><div><table id="e4ki" class="" bg="" border="1" cellpadding="3" cellspacing="0"><tbody><tr><td><span><br /></span></td><td><b><span>Google Mail</span></b></td><td><b><span>Picasa web album</span></b></td><td><b><span>Flickr</span></b></td></tr><tr><td><b><span>Relationship</span></b></td><td><span>Conversations, filtering, autoreply, </span></td><td><span>Sharing, visibility, groups</span></td><td><span>Sharing, visibility, groups</span></td></tr><tr><td><b><span>Product</span></b></td><td><span>Freemium, Outsourcing of mail for organizations</span></td><td><span>Freemium, google account</span></td><td><span>Freemium, yahoo account</span></td></tr><tr><td><b><span>Hygiene</span></b></td><td><span>Send/receive mail, enough storage to not bother about quotas, high availability, chat integration, Google ID</span></td><td><span>Storage, image manipulation, geotagging, tagging, freemium, use Google ID, screensaver, printing, <span>infusing content into social networks, ratings </span>...</span></td><td><span>Storage, freemium, tagging, commenting, feeds, searching, use Yahoo ID, screensaver, printing, spreading into social networks, ratings, ...</span></td></tr></tbody></table></div><br /></div><div style="text-align: left;"><br /><span>An important thing is that these products explicitly care about relationship management. They are not afterthoughts, it is </span><i><span>really important</span></i><span> both that conversations in gmail are threaded correctly, and that comments and ratings in Flickr are well executed. They are not tacked on to "have ratings", they are </span><i><span>central</span></i><span> for the product's sucess, since they enhance the relationships of their customers. </span></div><div style="text-align: left;"><span><br /></span></div><div style="text-align: left;"><i><span><br /></span></i></div><div style="text-align: left;"><i><span>Identity</span></i></div><div style="text-align: left;"><i><span><br /></span></i><span>Identity is who we are. It is not a term that is easy to pin down. Being a parent is part of some people's identity, so is their email account, but those two aspects of identity are very different and other aspects of identity are different from these two still. Wikipedia defines many different meanings of </span><a title="identity" href="http://en.wikipedia.org/wiki/Identity" id="tn2t"><span>identity</span></a><span>, here is a sampling from the social sciences section of the wikipedia article, all of which are relevant when thinking about the kinds of identities that goes into relationships that motivate communications:<br /><i><br /></i></span><ul style="margin: 0.3em 0px 0.5em 1.5em; list-style-type: square;"><li><a href="http://docs.google.com/wiki/Identity_%28philosophy%29" title="Identity (philosophy)" style="text-decoration: none; color: rgb(0, 43, 184); background-image: none;"><span><i>Identity (philosophy)</i></span></a><span><i>, also called sameness, is whatever makes an entity definable and recognizable</i></span></li><li><a href="http://docs.google.com/wiki/Identity_%28social_science%29" title="Identity (social science)" style="text-decoration: none; color: rgb(0, 43, 184); background-image: none;"><span><i>Identity (social science)</i></span></a><span><i>, umbrella term used to describe an individual's comprehension of him or herself as a discrete, separate entity</i></span></li><li><a href="http://docs.google.com/wiki/Cultural_identity" title="Cultural identity" style="text-decoration: none; color: rgb(0, 43, 184); background-image: none;"><span><i>Cultural identity</i></span></a><span><i>, person's self-affiliation (or categorization by others) as a member of a cultural group</i></span></li><li><a href="http://docs.google.com/wiki/Gender_identity" title="Gender identity" style="text-decoration: none; color: rgb(0, 43, 184); background-image: none;"><span><i>Gender identity</i></span></a><span><i>, also known as core gender identity, the gender(s) or lack thereof, that a person self-identifies with oneself</i></span></li><li><a href="http://docs.google.com/wiki/Identity_formation" title="Identity formation" style="text-decoration: none; color: rgb(0, 43, 184); background-image: none;"><span><i>Identity formation</i></span></a><span><i>, the process of the development of the distinct personality of an individual</i></span></li><li><a href="http://docs.google.com/wiki/Identity_politics" title="Identity politics" style="text-decoration: none; color: rgb(0, 43, 184); background-image: none;"><span><i>Identity politics</i></span></a><span><i>, refers to political arguments that focus upon the self interest and perspectives of self-identified social interest groups or minorities</i></span></li></ul><div style="text-align: right;"><span><i>(source </i></span><a href="http://en.wikipedia.org/wiki/Identity"><span><i>http://en.wikipedia.org/wiki/Identity</i></span></a><span><i>)</i></span></div><div><span><br /></span></div><span>The wikipedia article then lists other types of identities that are in fact also relevant for communications services. For the sake of this discussion I will choose to concentrate on the philosophical definition above, "whatever makes an entity definable and recognizable".<br /><br />From this definition, we see that the H/P/R layers have different aspects of identity. At the lowest layers are technical identifiers that are necessary for communicating. For phone networks these include MSISDN numbers, and for Internet services they include domain names (DNS registred names) and numerical ip addresses. These identities are necessary for communication to take place, but they are by and large (with some exceptions for DNS) not related uniquely to neither products nor customer's relationships. Product identifiers include email addresses, phone numbers, URLs to websites, product names, product numbers etc. OK, I'll admit it, there are meaningful relationships in the product layer: Product/customer relationships exist and they can carry importance. However, at the relationship layer people expose </span><i><span>their</span></i><span> identities: Their affiliations, the processes that form them as individuals, the social interest groups the take part in or sympathize with. All of these things are up there in the relationship layer, and may or may not be closely affiliated with the identities at the lower layers. They certainly don't in general </span><i><span>depend </span></i><span>on lower layer identities. It is fully possible to love cats without having a </span><a title="facebook" href="http://www.facebook.com/" id="uf06"><span>Facebook</span></a><span> identity, but it's so much easier to join up with and relate to other people interested in </span><a title="cat welfare" href="http://www.hs.facebook.com/pages/Cat-Welfare-Society/99555921064" id="iqo7"><span>cat welfare</span></a><span> if you do.<br /><br />And that's where the the thesis of this little piece becomes clear: </span><i><span> Anyone who wishes to play a role in the relationships that exists between people had better be relevant at the venues where relationships meet product identities. </span></i><span> If you wish to communicate with people interested in cat welfare within Facebook, you will send them an email or send a message to the group. You won't call them because Facebook does not currently offer voice telephony. But what if Facebook did offer voice telephony? If you had the option to "</span><a id="kgtp" href="http://en.wikipedia.org/wiki/Click-to-call" title="click to call"><span>click to call</span></a><span>" anyone on the group, or perhaps to have a "</span><a title="party line"" href="http://en.wikipedia.org/wiki/Party_line_%28telephony%29" id="t2cl"><span>party line"</span></a><span> conversation using voice telephony, who is to say it wouldn't have been used? But it isn't used, because Facebook isn't offering any form of voice telephony.<br /><br />My point here is that any service provider who has positioned itself at a junction where relationships and technical identities are matched is ideally placed for selling technical products that facilitates relationship development. Those that don't position themselves at this junction will sooner or later be bypassed by those who do when they by some means gain access to voice telephony.<br /><br />At this point I should note that the technical infrastructure necessary to offer voice telephony is really quite well developed. The main obstacles are a combination of technical, pricing and regulatory, but that is the topic for another time.<br /></span><br /></div><div style="text-align: left;"><br /></div><div style="text-align: left;"><b><hr class="pb"><h4><span class="Apple-style-span"><span>What should be done by incumbent voice actors?</span></span></h4></b></div><div style="text-align: left;"><b><br /></b></div><div style="text-align: left;"><div style="text-align: right;"><i><span>A witty saying proves nothing</span></i></div><div style="text-align: right;"><i><span>Voltaire.</span></i></div></div><div style="text-align: left;"><br /></div><div style="text-align: left;"><i><span>Wait and see</span></i><span><br />The simplest thing to do is just to wait and see. I make a few predictions above, in particular I predicted that at some point barriers for entry into regulated voice telephony for internet actors will be lowered. At that point the internet actors will play hard on their mastery over relationship facilitation and pure voice actors that chose to "wait and see" will have a number of very bad days at the stock exchange. Until barriers drop not much will happen. Place your bets.</span></div><div style="text-align: left;"><span><br /></span></div><div style="text-align: left;"><div style="text-align: left;"><i><span>Do some research</span></i></div><div style="text-align: left;"><i><span><br /></span></i></div><div style="text-align: left;"><ul><li><i><span>What motivates users?</span></i><span> Talk to users, interview them. Find out what motivates their use of communications products, see if those motivations fit with the model depicted above or if some other system is better at describing their needs. </span></li><li><i><span>What are the regulatory changes on the radar?</span></i><span> What we want to know is how regulatory barriers of entry for internet actors into regulated voice will be affected by regulatory changes that are planned or being talked about. Find out which changes are in the pipelines in the relevant jurisdictions, which will include the US and EU regardless of which market you are interested in. Who supports and opposes them, what is the timeframe for their implementation, and what can their impact be? </span></li><li><i><span>Long Term Evolution: LTE.</span></i><span> What is known about the technical capabilities of LTE (and competing future technologies) and future voice over IP. What is know about the introduction of LTE in relevant markets? What are possible timeframes for Voip over LTE to be realistic opportunities for internet-based companies to gain "first class" access to handsets?</span></li><li><i><span>Consider pricing of data traffic</span></i><span>: Perhaps it's ok to lose some or all income from dedicated voice services? Perhaps it is better to increase the price of data traffic to a level where income from that is sustainable as a source of income for wireless operators? This will mean that speech will be just another type of service over a generic networking device. Perhaps that is a reasonable future? I don't know.</span></li><li><i><span>Roadmap</span></i><span>: Make a reasonable roadmap for voice for the next ten to fifteen years. Plot in the technological and regulatory milestones and estimates/guesstimates for when they will be passed.</span></li></ul></div><span><br /></span></div><div style="text-align: left;"><i><span>Get serious about relationships</span></i><span><br />Another thing that can be done is to start playing the relationship game ourselves. This is harder than just to wait and see since it involves actually trying to make better products for our consumers, not just to print nicer logos or tweak price plans. Helping subscribers to manage their phonebooks, which is the entry point to many of their relations, is an obvious move. Another move is to make voice relevant in internet-style relationship-managing services: Invade Facebook, Google, and Microsoft's universe and make it easy to use regulated voice there. Make the phone-subscribtion/online identity (or identities) relationship (or relationships) matter. Vodafone goes a bit in this direction with their </span><a title="Vodafone 360" href="http://www.vodafone.com/start/media_relations/news/group_press_releases/2009/360.html" id="rdl2"><span>Vodafone 360</span></a><span> initiative, and theirs is an important step but there is certainly more that can be done. Facebook, LinkedIn, OpenSocial, MSN, Hotmail, .... . They are all opportunities for integration and product development, but for sure they are also threats.<br /></span></div><div style="text-align: left;"><span><br /></span></div><div style="text-align: left;"><i><span>Think about the brand</span></i></div><div style="text-align: left;"><span>Telcos need to do some soul-searching: Who are we? What do we do? Are our customers' relationships of any interest to us? Is voice and radio networks our prime concern, not the costumer's needs? Whatever we choose, how do we express that through our brand? If relationships are to help us defending income from voice, then perhaps this should be reflected in our brand? If so, how? All I can say is that this sounds important to me, but since I know next to nothing about brand management I'll just raise the questions and offer my participation in any discussion about it. I won't even begin to try to offer any conclusions.</span></div><div style="text-align: left;"><br /></div><h4 style="text-align: left;">Further reading:</h4><div style="text-align: left;"><i><span>Voice Chat app Vivox comes to Facebook</span></i><span>. http://news.cnet.com/8301-17939-10367465-2.html</span></div><div style="text-align: left;"><i><span>Phone calling coming to twitter. </span></i><span> http://news.cnet.com/8301-13772_3-10355319-52.html?tag=mncol;title</span></div><div style="text-align: left;"><i><span>About google voice:</span></i><span> </span><a href="http://www.google.com/googlevoice/about.html"><span>http://www.google.com/googlevoice/about.html</span></a></div><div style="text-align: left;"><span>About Ribbit: </span><a href="http://www.ribbit.com/"><span>http://www.ribbit.com/</span></a></div><div style="text-align: left;"><br /></div><div style="text-align: left;"><i><br /></i></div><div style="text-align: left;"><i><br /></i></div><div style="text-align: left;"><i><br /></i></div></div></div></div><br /></div><br /><br /></div>Anonymoushttp://www.blogger.com/profile/11679728200748159560noreply@blogger.com0tag:blogger.com,1999:blog-4813743025478106414.post-14413916463855900272010-09-15T00:08:00.000-07:002010-09-21T07:07:22.860-07:00Wholesale Applications Community (WAC)Ok. It's time I blog a bit on this: <div><br /></div><div><b>What it is?</b></div><div><br /></div><div>WAC is essentially a bunch of telcos banding together to make "their own" ecosystem with appstores, trusted certificates etc for applications based on javascript with access to various phone and network assets meaning that these javascript apps can query the phone about where it is, set up phone calls etc. The javascript part of WAC will be adopted from <a href="http://www.openajax.org/member/wiki/BONDI">W3C's Bondi</a> initiative, the rest will come from somewhere else and I'm not at all certain of the details about how this will come about. Perhaps someone knows, but for the sake of the argument I'll assume that this will be sorted out in some reasonable manner.</div><div><br /></div><div><b>Why WAC may be a good idea?</b></div><div><br /></div><div><i>It's the Web, stupid.</i></div><div><i><br /></i></div><div>In short, because it's the web: This will let the web get a first-class-citizen position on the handsets: Just like web applications on the web today in principle can do just about anything a native app can, wac will enable web apps to do a lot of things that have up to now been firmly in the bailiwick of native applications; like calling, contact list management, taking pictures, sending and receiving messages etc. All of this is good. It means that the tentacles of the clouded web will be able to infiltrate the handset as if it was just another web connected device, which it will now be.</div><div><br /></div><div><i>It will annoy Steve Jobs.</i></div><div><i><br /></i></div><div>Now in the spirit of full disclosure, I'm an admirer of Steve Jobs but there are many things Apple does that annoys me. One of those things is the way in which they lock developers into a very narrow straightjacket of terms, conditions and development environments in which they must work. It's not allowed to write code for the iPhone in anything except C++, Objective C and C, basically. That's .... barbaric. However, it does make sense for Apple since it greatly reduces the degrees of freedom that they have to manage in order to maintain a polished and sanitized environment for the iPhone. There is only one little chink in Apples armor, and that is ... the web. The Safari browser runs javascript. Javascript is the only <i>unsanitized</i> language allowed on the iphone. It is excactly this weakness WAC (or more precisely Bondi) attacks. This means that at some point Apple will be faced with a choice: Either they neuter their Javascript engine by excluding the Bondi extensions (and that will be hard when Bondi is an official part of W3Cs recommendations for how Javascript engines should behave), or they allow Bondi in on their phones thereby opening them up for an entirely new ecosystem of unsanitized apps that can tickle all the parts of the iphone that can presently only be accessed by developers that has signed Apples rules and regulations for appropriate behavior. I'm sure that if Steve is still alive if or when Bondi becomes a W3C standard, there will be one or more Steve jobs moments where he explains whatever path Apple chooses.</div><div><br /></div><div>Now, this may sound as if Wac is a bad thing for Apple, but in reality it isn't. Apple has played its cards extremely well. When the iPhone came out it was at least two years ahead of all competitors, and it hasn't been standing still since. This ment that Apple basically had the iPhone segment of the market all to themselves, and any terms whatsoever that they dictated had to be acceptable because there were very few alternatives. Basically Apple had created themselves a temporary monopoly by virtue of being exceptionally innovative, so naturally they exploited this monopoly by extracting<a href="http://en.wikipedia.org/wiki/Monopoly_profit"> monopoly profits</a>, and their terms and conditions are just a means to an end for this objective. Now if you look under the hood of the iPhone there is actually not that much that is very special there, this if anything makes the fact that it is so innovative more impressive btw. : Under the hood there is the <a href="http://en.wikipedia.org/wiki/Mach_%28kernel%29">Mach </a>message passing kernel. On top of that runs a <a href="http://en.wikipedia.org/wiki/Berkeley_Software_Distribution">BSD</a> based <a href="http://en.wikipedia.org/wiki/Unix">Unix </a>directly derived from the desktop <a href="http://en.wikipedia.org/wiki/Osx">OSX </a>which in turn is a direct derivative of <a href="http://en.wikipedia.org/wiki/NeXT">NeXT's </a>operating system, with some influence from the <a href="http://en.wikipedia.org/wiki/Freebsd">FreeBSD </a>project. The window system is based on <a href="http://en.wikipedia.org/wiki/Opengl">OpenGL </a>on top of which a modern-looking version of <a href="http://www.macobserver.com/columns/whatsnext/articles/082797.shtml">NeXTs old GUI code</a> is run. The strength of the innovation is not so much in the basic technologies used, most of them are actually more than ten years old, but in the flawless execution when putting all of this on a handheld platform while keeping power consumption down and adding perhaps the best industrial design on the planet to the physical design. However, from the list above it should be obvious that there is very little of the technology in the <a href="http://en.wikipedia.org/wiki/Iphone">iPhone </a>that requires a closed environment to thrive. In fact, <i>all </i>of the software components (including the GUI) has open source equivalents that are either identical or just a hair worse than their Apple counterparts. This means that Apple has a looong way it can slide in the direction of openness without breaking any fundamentals of the iPhone's success. It will perhaps mean that they will cash a bit less monopoly profits, but that is only to be expected: After all, nobody expect Apple to remain alone at the head of the field forever. So, my conclusion is that Apple has a lot of defensive depth: They can allow Bondi to access the phones, they can allow interpreted languages on the iPhone and they can do it without breaking their success, but even more important: They can open up when they choose on terms of their choosing, and they can do this because they chose their starting position very intelligently. My hat off for Mr. Jobs :-)</div><div><br /></div><div><i>It will enable first-class communications clients on the web</i></div><div><i><br /></i></div><div>I'm not sure if the telcos have clued into this, but WAC will actually weaken their monopolies: After all, javascript is already present in all kinds of browsers on the desktop; what is there to stop them from implementing the Bondi APIs, hooking those up to some backend (e.g. voip) and voila: Universal communication clients that are wholly independent of telco infrastructure. Or more precisely, communication clients that can opportunistically choose what type of infrastructure they wish to use, and that process of selection will be mediated through the web, not through the signalling systems of the Telcos. This is good news for customers and web developers, and for developers of modern telephony, but not necessarily so good for the old monopoly-based telcos ;)</div><div><br /></div><div><i>If it takes of at all is not dependent on telco support in the long run :-)</i></div><div><i><br /></i></div><div>This may sound a bit weird since it is the telcos that are pushing WAC implementation, but if you look at my first point "It's the Web stupid", it becomes obvious: Wac will let the web infiltrate the handsets. This will of course happen quicker if the telcos are onboard and actively helping, but once it is done the telcos are not that important. The appstore thingy may or may not become a success, but imho that is of little importance in the long run. In fact, it may well be that telcos will ultimately meet stiffer competition from web-based telephony operators made possible by prevalence of the Bondi APIs</div><div><br /></div><div><br /></div><div><b>Why WAC may be a bad idea?</b></div><div><br /></div><div><i>It's the stupid telcos!</i></div><div><i><br /></i></div><div>Buy and large the Telcos don't grok the Internet. This time it may be different, but it's always been that way and I'm not holding my breath this time. The telcos are banding together to promote their own interests, which tend to be: Their own (super) profits, (total) control over ("their") networks and lately also fierce competition with other telcos (meaning that they will fight by any means available to maintain market share, a lost customer is lost revenue and there is a finite supply of customers). I believe this creates an unstable situation for any cooperation: No software developer in their right mind would want to put their future in the hands of the telcos. </div><div><br /></div><div>If the telcos are to create some common infrastructure for say a marketplace for WAC applications, they would have to both be attractive to developers, compete with all other marketplaces in the world, but at the same time they will have strong incentives against destroying their own profits by say, allowing universal communication applications to develop. </div><div><br /></div><div>Also they will have incentives to defect from the cooperation. Consider this scenario: Some handset manufacturer sees the WAC marketplace as a threat, so their defensive move is to allow Bondi-based applications into <i>their</i> appstore, but they won't allow applications from the telcos WAC-store to be installed in <i>their</i> handsets (for security reason, naturally). Developers will simply say "ok, we'll just submit the app one more place, no big hassle". Now the handset manufacturer can approach the operators and say: "You know, this whole WAC thing is bad for security, so if you defect from the WAC consortium we'll offer you our latest and greatest handset ahead of your main competitor, and your customer's won't be harmed by this since all the best WAC applications are available from our appstore anyway, what do you say? If you say no I'll naturally talk to your competitor to hear what they say, and by the way the xPhone-8 will be a really great product, to bad if your customers have to wait eight months before they can get some".</div><div><br /></div><div><b>Conclusion</b></div><div><b><br /></b></div><div>In short, I believe that the telcos' vision of what WAC will mean for them is mostly mistaken. It will in all likelyhood not become a viable alternative to the appstores that is already established. Bondi enabled web-applications both on and off handsets will be to the benefit to both developers and end-users. </div><div><br /></div><div>The only way in which telcos can actually gain from WAC is to grow a clue, and learn a lot, and to do so <i>really</i> fast when reactions from real developers and real users on their perceptions on what WAC means starts to come in. My guesses on what they should learn is:</div><div><ol><li>The Internet is here to stay. Deal with it.</li><li>Helping people to leverage their relationships is at the <i>core</i> of the telcos' business. More so than making sure electromagnetic signals flows through various media (fiber, air, copper).</li><li>Since value is created by connecting people to people, and people to services, making this process easier for everyone will enhance value creation.</li><li>Monopolies (natural or artificial) don't last forever, and are not necessarily part of the core business. By all means use monopoly power when you can get , but realize that greed isn't always conducive for your long term health.</li></ol></div><div>... but I'm not holding my breath on this one either :-)</div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div>Anonymoushttp://www.blogger.com/profile/11679728200748159560noreply@blogger.com2tag:blogger.com,1999:blog-4813743025478106414.post-10816640458790569392010-07-06T01:12:00.000-07:002010-07-06T01:37:13.014-07:00The age of mobile voip starts today (for me anyway)Mobile VOIP. I don't remember exactly when I got my first phone with a SIP client, five years ago perhaps? However, in practice this didn't make any difference since it was useless: The phone application was buried deep inside some obscure menu, it was not possible to use it as the default call aplication (or even a convenient second) the wifi connection was mostly useless, it wasn't possible to use voip over the telephony network (this was pre 3G) etc.<div><br /></div><div>However, today most of this changed. I tried out the new <a href="http://www.counterpath.com/bria-iphone-edition.html">Bria iPhone edition</a> voip app, and it was mostly brilliant: It works. It works over wifi an 3G. The voice quality is excellent. The call application looks very much like an ordinary call application. Bria can't replace the default caller application, but on the iPhone that doesn't matter very much due to the desktop-based navigation metaphor. The only gripe I have so far is that it doesn't seem to be possible to call into the phone through 3G even with the application started. I haven't discussed and debugged this with my friendly voip vendor, so it may be a configuration issue, we'll see. </div><div><br /></div><div>The upshot of all this is, for me, that today july 6, 2010 the age of mobile voip starts. This means that after this date call routing through the mobile network is only one of several options for making practical mobile phone calls. I'll probaly elaborate on why and how this is very important news (the future growth of Google Voice and the inevitable delamination of carriers are two issues closely related to mobile voip), but not today :-) </div><div><br /></div><div> </div>Anonymoushttp://www.blogger.com/profile/11679728200748159560noreply@blogger.com0tag:blogger.com,1999:blog-4813743025478106414.post-77740650453544529612010-06-23T00:11:00.000-07:002010-06-23T00:30:50.129-07:00Cryptographic accounting<div><span class="Apple-style-span" style="font-family:arial;"><br /></span></div><div><span class="Apple-style-span" style="font-size:medium;"><span class="Apple-style-span" style="font-family:arial;">The word "Cryptographic" </span></span><a href="http://en.wikipedia.org/wiki/Cryptography"><span class="Apple-style-span" style="font-size:medium;"><span class="Apple-style-span" style="font-family:arial;">comes from</span></span></a><span class="Apple-style-span" style="font-size:medium;"><span class="Apple-style-span" style="font-family:arial;"> </span></span><span class="Apple-style-span" style="line-height: 19px; "><span class="Apple-style-span" style="font-size:medium;"><span class="Apple-style-span" style="font-family:arial;">Cryptography</span></span><span class="Apple-style-span" style="font-size:medium;"><span class="Apple-style-span" style="font-family:arial;"> (or </span></span><span class="Apple-style-span" style="font-size:medium;"><span class="Apple-style-span" style="font-family:arial;">cryptology</span></span><span class="Apple-style-span" style="font-size:medium;"><span class="Apple-style-span" style="font-family:arial;">; from </span></span><a href="http://www.blogger.com/wiki/Ancient_Greek" title="Ancient Greek" style="text-decoration: none; color: rgb(6, 69, 173); background-image: none; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; background-position: initial initial; background-repeat: initial initial; "><span class="Apple-style-span" style="font-size:medium;"><span class="Apple-style-span" style="font-family:arial;">Greek</span></span></a><span class="Apple-style-span" style="font-size:medium;"><span class="Apple-style-span" style="font-family:arial;"> </span></span><span lang="grc"><span class="Apple-style-span" style="font-size:medium;"><span class="Apple-style-span" style="font-family:arial;">κρυπτός</span></span></span><span class="Apple-style-span" style="font-size:medium;"><span class="Apple-style-span" style="font-family:arial;">, </span></span><i><span class="Apple-style-span" style="font-size:medium;"><span class="Apple-style-span" style="font-family:arial;">kryptos</span></span></i><span class="Apple-style-span" style="font-size:medium;"><span class="Apple-style-span" style="font-family:arial;">, "hidden, secret"; and </span></span><span lang="grc"><span class="Apple-style-span" style="font-size:medium;"><span class="Apple-style-span" style="font-family:arial;">γράφω</span></span></span><span class="Apple-style-span" style="font-size:medium;"><span class="Apple-style-span" style="font-family:arial;">, </span></span><i><span class="Apple-style-span" style="font-size:medium;"><span class="Apple-style-span" style="font-family:arial;">gráphō</span></span></i><span class="Apple-style-span" style="font-size:medium;"><span class="Apple-style-span" style="font-family:arial;">, "I write", or </span></span><span lang="grc"><span class="Apple-style-span" style="font-size:medium;"><span class="Apple-style-span" style="font-family:arial;">-λογία</span></span></span><span class="Apple-style-span" style="font-size:medium;"><span class="Apple-style-span" style="font-family:arial;">, </span></span><i><a href="http://www.blogger.com/wiki/-logy" title="-logy" style="text-decoration: none; color: rgb(6, 69, 173); background-image: none; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; background-position: initial initial; background-repeat: initial initial; "><span class="Apple-style-span" style="font-size:medium;"><span class="Apple-style-span" style="font-family:arial;">-logia</span></span></a></i><span class="Apple-style-span" style="font-size:medium;"><span class="Apple-style-span" style="font-family:arial;">, respectively. It basically means "ways of keeping written things secret".</span></span></span></div><div><span class="Apple-style-span" style="font-family:arial;"><br /></span></div><div><span class="Apple-style-span" style="font-family:arial;">I just invented the term "Cryptographic accounting". It means accounting that keeps things secret, sometimes intension, but sometimes just as a consequence of the way the accounting system is designed.</span></div><div><br /></div><div><b>Cooked books</b></div><div><br /></div><div>I know about two subtypes of cryptographic accounting. The first is the traditional "cooked books". The ledger that is modified to please the intended audience. I recently listened to an <a href="http://www2.lse.ac.uk/publicEvents/events/2010/20100520t1830vWT.aspx">excellent podcast</a> from LSE titled "Does Management matter?" by Professor<a href="http://faculty-gsb.stanford.edu/roberts/"> Professor John Roberts</a> from Stanford University where he talks about the textile industry around Mumbai. He reports that it is usual for these companies to keep three accounting books: One that they show the government for taxation purposes, another that they show to the bank to qualify for credit, and a third that they keep for themselves to know what's really going on. These practices</div><div>are well established but they are also clearly fraudulent and well known, so I won't say much more about them except to say that if you know how the books are cooked, you can get back to the real results, sometimes easily. In that sense this is a weak kind of cryptographic accounting, since it is in theory easy to find the secrets that are being hidden.</div><div><br /></div><div><b>One Way Ledger</b></div><div><br /></div><div>The second subtype is a bit more interesting since it makes use of a new invention that I call the "One way ledger". The one way ledger the characteristic that the numbers in it are alle true, no fraud anywhere, but if you try to use the numbers to find out anything of substance, it just won't work. A typical example is this: A company produces widgets and gadgets.</div><div>The ledger states how many widgets and gadgets are sold, and how much each was sold for, and consequently how much income was generated. However, the production cost is lumped togeter in a set of numbers called "production", "more production" and "even more production". Note that the identity of the products is lost when considering production costs. This means that while it is possible to know if the company itself is profitable, it is impossible to know if it is widges, gadgets or both that are contributing to the profit. The "one</div><div>way" aspect of this ledger means that you can read it from top to bottom, to figure out where the income is and where the expenses are, but you can't read it from bottom to top to figure out which product was actually contributing the most to profitability. The reason this</div><div>is a one way function is simply that two well established cryptographic mechanisms are employed: Diffusion and confusion (see wikipedia entries <a href="http://en.wikipedia.org/wiki/Confusion_and_diffusion">here</a> and <a href="http://en.wikipedia.org/wiki/Communication_Theory_of_Secrecy_Systems">here</a>, as well as Shannon's seminal article on the subject <a href="http://netlab.cs.ucla.edu/wiki/files/shannon1949.pdf">here</a>) , The "diffusion" mechanism means that localized changes in the secret leads to changes in many locations in the encrypted document. For an one way</div><div>ledger this means that a change in the number of widgets produced affects many of the the production processes. The "confusion" part means that it should not be very obvious how changes in number of produced units affects production costs. Lumping more or less</div><div>unrelated costs together is a good way of doing this. One way to achieve this could be to lump "packaging" for all products into one number. After the costs have been summed for all products, it is impossible to find out which products contributed most to cost.</div><div><br /></div><div>Untangling an one way ledger is really hard, even for organizations who wants to. The reason is that all reporting routines are made to fulfill the requirements for the official (one way) ledger, so it is rational for everyone in an organization to remove the information that is not in it (rational, since nobody will get any credit for reporting what isn't required by the reporting routines). This means that if you wish to find out what is going on, the reporting routines has to be changed, accounting systems has to be modified, auditors need to find ways to compare the new numbers with the old so the stockmarket won't be confused by the new accounting practice etc. This means that once established, there will be great institutional resistance to removing the one way ledger system. Consequently it will most likely stay in place until some external event (e.g. a competitor with better cost structure due to more appropriate accounting practices) disturbs the internal equilibrium between the organization units and gives incentives for reporting actually useful numbers.</div><div><br /></div><div>Since it is really really hard to untangle ay established one way leger, this qualifies as a kind of "strong cryptographic accounting". It hides things really well.</div><div><br /></div>Anonymoushttp://www.blogger.com/profile/11679728200748159560noreply@blogger.com0tag:blogger.com,1999:blog-4813743025478106414.post-92050646618201400442010-05-25T06:14:00.001-07:002010-05-25T06:40:51.194-07:00Thrift under windows XPThrift is nice. It's a decent <a href="http://blog.borud.no/2010/03/musings-on-rpc-mechanisms-and-dsls.html">RPC framework</a>, it's seems quite developer-friendly as long as all the right nuts and bolts are attached in their proper places. This includes having a compiler running on your development system.<div><br /></div><div>For various historical reasons my primary development system is now based on Windows XP, but with daily contributions from OSX and Linux. This means that if I'm to use Thrift, I need a Thrift compiler on XP. This is why I have spent the better part of a day making that happen. </div><div><br /></div><div>I'm still not certain if i've got everything right, or even if I've gotten enough right for my installation to be really useful, but I do have a running version of the thrift compiler and it seems to be compiling thrift code written by someone else on my project so I have good feeling about this.</div><div><br /></div><div>Now: What did I have to do in order to get thrift up&running?</div><div><br /></div><div><ul><li>First I took a peek at <a href="http://wiki.apache.org/thrift/ThriftInstallationWin32">this page</a> that explains some things that needs to be done. I tried the binaries, but they are useless and obsolete, so next I tried to compile things for myself. I chose the Cygwin option.</li><li>First attempt failed badly, no malloc or free found in (lib/cpp/src/Thrift.cpp), so I added "#include <stdlib.h><stdlib.h>" and that bug disappeared.</stdlib.h></li><li>Then I had to move my ant installation to somewhere without a space in its path (that wasn't so hard, I just made a <a href="http://en.wikipedia.org/wiki/NTFS_junction_point">junction </a>(the windows version of<a href="http://en.wikipedia.org/wiki/Hard_link"> hard links)</a> from C:/ to the old installation and put the location in the path). Since paths are hardwired into the makefiles, I had to run ./configure to make this change valid.</li><li>Then many and varied strange things happened. I didn't really catch on to what what was happening until I saw something along the lines of "FIND " (some error message). The clue here was the capitalized FIND. This indicated that it was windows's find-implementation, not cygwin's that was being used by the make scripts. So I had to change all instances of "find" to "/usr/local/find". I guess i could have changed my path instead, but I didn't. You might want to try to change the path before rewriting all the makefiles :-)</li><li>Then tings compiled. The compilation stopped with some error message, I restarted it, the compilation continued and finally terminated successfully.</li><li>I ran "make install" and got myself a thrift.exe installation in /usr/local/bin (cygwin path).</li></ul><div><br /></div><div>I won't claim that this will work for anyone else, or even to claim very strongly that it has worked for me yet, but this is what I did, and so far it seems to have produced an useful result.</div><div><br /></div><div>The mind boggles at the fact that this is actually (probably) the simplest way to get a decent RPC mechanism compiled on windows XP in 2010.</div></div>Anonymoushttp://www.blogger.com/profile/11679728200748159560noreply@blogger.com0tag:blogger.com,1999:blog-4813743025478106414.post-10570392928021252152010-01-24T03:05:00.000-08:002010-01-24T03:10:47.210-08:00The Innovation AntipatternMy good friend <a href="http://blog.borud.no/">Bjørn Borud</a> recently sent a message about somthing he calls the "Innovation <a href="http://en.wikipedia.org/wiki/Anti-pattern">antipattern</a>". He may or may not blog about it himself, but I felt that the pattern was too good to remain hidden in one of our semi-internal mailing lists, so here it is:<br /><a href="http://shripriya.com/blog/2010/01/23/how-not-to-do-innovation/" target="_blank"></a><blockquote><a href="http://shripriya.com/blog/2010/01/23/how-not-to-do-innovation/" target="_blank">http://shripriya.com/blog/<wbr>2010/01/23/how-not-to-do-<wbr><span class="il">innovation</span>/</a><br /><br />The pattern:<br /><br /> 1. Not getting it<br /> 2. Doing it -- but still not getting it.<br /> 3. Failing, but not understanding why</blockquote><blockquote></blockquote>Anonymoushttp://www.blogger.com/profile/11679728200748159560noreply@blogger.com0tag:blogger.com,1999:blog-4813743025478106414.post-18793230229740922182009-10-08T01:28:00.000-07:002009-10-27T09:13:51.778-07:00THE PLEDGE<span class="Apple-style-span" style=" line-height: 17px; white-space: pre-wrap; font-family:arial;font-size:13px;"><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">My good friend and colleague Per John Thorenfeldt just concocted this pledge for telcos that provide services to third-party over the top content providers:</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><br /></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><br /></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">THE PLEDGE<br /></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><br /></p><span class="Apple-style-span" style=" line-height: normal; white-space: normal; border-collapse: collapse; font-family:arial, sans-serif;font-size:13px;"><p style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0.0001pt; line-height: 12.75pt; "><span style=" ;font-size:10pt;">I will never again call a customer a "CONTENT PROVIDER"</span></p><p style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0.0001pt; line-height: 12.75pt; "><span style=" ;font-size:10pt;">I will never again call a customer a "3rd PARTY"</span></p></span><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><span class="Apple-style-span" style=" white-space: normal; border-collapse: collapse; font-family:arial, sans-serif;font-size:13px;">I will never again call a customer an "OVER-THE-TOP PLAYER"</span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><span class="Apple-style-span" style=" white-space: normal; border-collapse: collapse; font-family:arial, sans-serif;font-size:13px;"></span>They are CUSTOMERS or potential customers, period!</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><br /></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">I will never again speak of innovation THROUGH customers<br /></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">On occation we have the privilege of innovating WITH them<br /></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Our job is to stimulate innovation BY them by offering tools and materials<br /></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">And hopefully innovating a bit ourselves<br /></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><br /></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">(Creative Commons Attribution-Noncommercial-Share Alike 3.0 Norway License)<br /></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">8-)</p></span>Anonymoushttp://www.blogger.com/profile/11679728200748159560noreply@blogger.com0