« January 2006 | Main | March 2006 »
February 28, 2006
Federated Identity Checklist
I'm putting together a checklist of things to do to help federation succeed for the feature I'm writing for InfoWorld. Here's my list so far. Any other's that ought to be in there based on your experience?
- Find win-win situations where both parties benefit from the federation
- Start with internal projects
- Find an experienced partner for your first external federation
- Create a center of excellence in the CIO’s office
- Establish a federated identity council to get input from business users
- Educate the legal department about federation and develop an in-house legal expert
- Pay attention to privacy
- Make sure your policy creation process is up to speed and use it to build a set of identity policies
- Create an interoperability framework that outlines what standards and products to use
4:51 PM | Comments (3) | Recommend This | Print This
February 27, 2006
Alan Kay Followup
Here's a few follow ups to Alan Kay' talk last week.
- Scott Lemon has notes from Alan's technical and public lectures.
- Here's the link to the $100 laptop organization.
- Bill Clementson referenced my notes and added some quotes from Alan (from other talks). My favorite: "I invented the term Object-Oriented, and I can tell you I did not have C++ in mind."
- Alan's interview in Queue remains one of my favorite.
I've had quite a few side discussions with others about the talk--it's gerenated a lot of interest. It's not often when I find myself thinking about a talk I heard last week.
3:48 PM | Comments () | Recommend This | Print This
February 23, 2006
Alan Kay: The 100 Dollar Laptop and Powerful Ideas
Alan Kay preopares for his talk (click to enlarge) |
Alan Kay's evening talk is entitled Learners, Powerful ideas, and the $100 Laptop. He says that he's never found the right order for the ideas in the title.
Computer companies in the 1960s thought Moore's law meant that they'd get higher margins. Web presses are amazing pieces of technology, but when you look at it, you don't see anything that tells you about how it changes things. Similarly, looking at the DynaBook in 1968 doesn't tell you the most important things. Thus, the idea of a $100 laptop isn't important because of the technology.
Half the price of a typical laptop is the marketing and distribution. Get a non-profit and drop that. Half of the remaining cost is Microsoft, or more generally commercial software vendors. Free and open source software more than adequately covers the computing needs of most people, particularly children. The fact that there are $122 DVD players says you can build a $100 laptop. The cheapest hard drives are too expensive; so use flash memory.
One big problem is the grey market. They'll be diverted from children unless you do something to protect the laptop. A few ideas: an RFID card keyed to the specific owner helps. The device is networked, so the owner of the device has to log in every few days to get a token to keep it working. The color (green) helps. The child's picture could be embedded in the plastic case.
The initial order will be between 6 and 10 million. There are about 50 million laptops manufactured each year. There are between 80 and 100 million phones manufactured per year. The $100 laptop uses a mesh network and is similar to a cell phone with a big keyboard and screen. There's a crank to generate power.
The real win is that the $100 laptop is a factor of 20 cheaper than the books that children need. Content is the key. "The music isn't a piano." From an educational standpoint, this project could be a colossal flop if the content isn't right. What's the right interface for children in an environment where the adults can't help much. Can you connect children to pen-pal like mentors over the Internet? The logistics are monumentally hard.
When ever a medium comes in, it takes on the attributes of the old medium that it's replacing. Guttenberg created fonts that matches the ligatures that medieval script's used. The still illuminated them by hand and made them big. Just like the handwritten books. 150 years later, Newton published Principia, a use of the new medium which out it to a completely new use: convincing others of your ideas.
Introducing rabbits into Australia doesn't give you rabbits and Australia. Rabbits changed the Australian landscape. When you add a new way of talking about ideas, you're adding them to an existing ecology. You change what "normal" is. The $100 laptop has the potential to chance cultures in significant ways. The impact will be different in China than it is in Brazil.
Alan references a paper call "What the Frog's Eyes Tell the Frog's Brain." it turns out that the frog makes the decision of what is food and what is not in it's retina. You can't train frogs to eat food they're not genetically programmed to eat. We're not like flys...or are we?
Next he references the work of Tom Bower (1966) on babies. Humans are not hard wired for most things, but learn what's important. Still, anthropologists have identified about 300 universal traits of cultures. There are also interesting things that are not universal. Reading and writing, equal rights, abstract math, perspective drawing, theory of harmony, agriculture, legal systems, science are some examples. These are powerful ideas that are rare. Formal education isn't needed to teach the universals. Formal education is needed to teach the non-universals.
You can perform logical operations on maps that are real as well as maps that are not real (if X is north of Y and Y is north of Z, then X is north of Z). Science is about taking logical models and applying them to the real world. When we got to space, there were no surprises about what the earth looked like. We had models that were that good. That's what science does--put together models.
Alan shows how you can teach complex math with cut out shapes. He segues into showing how children can uses Squeak to learn math. He remarks that most educators can't see how this is math because they're not mathematicians.
The important question surrounding the $100 laptop is "will it be more than a mere technological artifact?" The answer depends on whether the content, and especially the mentoring, can be brought along with it to have real impact.
10:47 PM | Comments (4) | Recommend This | Print This
Alan Kay: Is Computer Science an Oxymoron?
Alan Kay (click to enlarge) |
Alan Kay's title slide, up during the intro says Is the Best Way to Predict the Future to {Invent,Prevent} It? with the {Invent,Prevent} alternating between each other. He jokes that this afternoon's talk can be summed up by the fact that he has to wear two microphones to speak instead of one. The talk was billed as "Software Engineering vs. Computer Science, so I'm anxious to see how his title relates to that. I have some more photos too.
Much of what is wrong about our field is that many of the ideas that happened before 1975 are still the current paradigm. He has a strong feeling that our field has been mired for some time, but because of Moore's law, there are plenty of things to work on. The commercialization of personal computing was a tremendous distraction to our field and we haven't, and may not, recover from it.
Almost nothing exciting about computing today has to do with data structures and algorithms One of Alan's undergraduate degrees is in molecular biology. He can't understand it anymore despite having tried to review new developments every few years. That's not true in computer science. The basics are still mostly the same. If you go to most campuses, there is a single computer science department and the first course in computer science is almost indistinguishable from the first course in 1960. They're about data structures and algorithms despite the fact that almost nothing exciting about computing today has to do with data structures and algorithms.
The Internet is like the human body. It's replaced all of its atoms and bits at least twice since it started even though the Internet has never stopped working. Attacks on the 'Net aren't really attacks on the 'Net, they're attacks on machines on the 'Net. Very few software systems, maybe none, are built in ways that sustain operation in spite of being continually rebuilt and continually growing.
The future five years out is easy to predict because all of the forces acting on computer science are trying to keep it the same as it is now. Likely, the future will be more of what we have now.
Are computer science, software engineering, OOP, etc. oxymorons? Alan reminisce about Bob Barton, an early Utah professor. Bob said that "systems programmers are the high priests of a low cult" and "there are few things know about systems design, but the basic principle of recursive design is: make the parts of the same power as the whole. Bob Barton has a classic paper that contains seven of the most important things that people know about software today. Another quote: "My job is to disabuse you of any firmly held notion you held when you came into this classroom." The best way to get people to think is to destroy their current thinking. Preconceived notions are largely reactions to what vendors are saying. Alan says that his course from Barton was the most valuable one he took in college because Barton garbage collected their minds.
Engineers should read a book about how the Empire State building was done. Including the demolition of the building on the site before, the Empire State building was built in 11 months by 3000 people. We don't know how to do this in computing. Whatever we think engineering is, it can't mean the modern use of the term. I don't know of a single computing system that is attached to you that if it fails it will almost certainly kill you. That's what happens with jet engines. That's engineering
Hurricane Katrina is Alan's new favorite story. When the city started flooding only four pumps kept pumping until the levee actually broke. The youngest pump that kept going was made in 1929. The newer pumps all stopped well before that. Try to imagine a computing system that will be working 90 years from now? It's impossible to imagine.
"American's have no past and no future, they live in an extended present." This describes the state of computing. We live in the 80's extended into the 21st century. The only thing that's changed is the size. Windows XP has 70 million lines of code. It's impossible for Alan to believe that it has 70 million lines of content. Microsoft engineers don't dare prune it because they don't know what it all does. Cathedrals have 1 millionth the mass of pyramids. The difference was the arch. Architecture demands arches.
Computers are artifacts. in order to have a science of computing, we have to make them. This isn't unheard of. To have a science of bridge building, people had to start building them so they could be studied. He shows a clip of the Tacoma Narrows bridge. After studying the failure, the bridge was rebuilt and hasn't come down. This reminds Alan of software systems. We're much better at building software systems than we are at predicting what they will do. There are no good models. If we were scientists, we'd be trying to build models.
"Science is not there to tell us about the Universe, but to tell us how to talk about the Universe." (Niels Bohr). Science helps us to be more reasonabler about reasoning. It's set up so that we get better and better maps (abstractions) not perfect maps.
Alan uses John McCarthy and Lisp as an example of real science in computer science. He showed us that you can build a system that's also it's own metasystem. Lisp is like Maxwell's equations. Many of the things that are wrong about Java is that it lacks a metasystem and that the metasystem that's been tacked onto it is missing key parts. To find the most interesting things about our field you have to go back 30 or 40 years.
Alan used McCarthy's method to design an object oriented system. He spent only a month implementing it because of the metasystem.
We build finite artifacts, but the degrees of freedom grow faster than we can reason about them. Thus, we're left with debugging.
We are creatures who live in a world of stories and we're always looking for simple stories o explain the world. He shows a clip, called Private Universe, of Harvard grads (at graduation) describing trying to explain the seasons. Almost everyone thought the seasons were caused by an elliptical orbit of the earth around the sun. It didn't matter whether or not the students were science majors or now. Interestingly, people know that the seasons are reversed between the northern and southern hemispheres. Their stories are inconsistent with what they know, yet they persist in believing them, even though they have the knowledge that contradicts their theory.
When people react instantly, they're not thinking, they're doing a table lookup.
Engineering predates science by thousands and thousands of years because we don't have to understand things to engineer them. He uses one of my favorite quotes: an engineer is someone who can make for a dollar what any fool could make for two.
Making computing into a science means that we have to understand what to do about our beliefs. When we talk, we do nothing but tell stories that people will find interesting. There's danger in that because stories can create resonance without being scientific.
Handwritten books were prohibitively expensive. Guttenberg's books only cost "2 to 3 times a clerks yearly wage." Aldus Manutius created portable books. He measured saddle bags. It had to be cheap so that loosing it wasn't a tragedy. What made the big change was that people discovered you could argue effectively with books. This took centuries. There's a big gap between a technology and its powerful media. The real revolution isn't a revolution in technology, but a revolution in thought.
Imitating paper on digital media isn't the real computer revolution. What is the real computer revolution? The only reason personal computers look like they do is that we thought of them as time sharing terminals (which look like typewriters with screens) without the mainframe. Alan's epiphany was that computers don't have to look like that.
PowerPoint is a terrible idea PowerPoint is a terrible idea because it takes everything interesting about what computers can do and brings it into an expensive form of paper. Alan now jumps into a demo of the system he's using that isn't PowerPoint. He draws a car and then animates it with a script. This is based on what children do with his system, Squeak.
He discusses the power of parallel programs and loose coupling for building systems. We need to teach these concepts more than data structures and algorithms.
Squeak is written in 230,000 lines of Smalltalk. They think it could be 20,000. There are 59,000 methods in 3.5Mb of object code, for about 59 bytes per method. There are about 5 million objects and it was implemented by ten people. The system is self-bootstrapping, so it's all in there. Learning how to do this ought to be part of computer science but regrettably it's not.
Q: What are one or two things we can do to be better computer scientists?
A: A lot of the success at PARC was because we didn't know what we were doing--specifically, we weren't trying to make a product. The silliest thing you can find at research university is today's laptop. We invented the Alto and it allowed us to do things that weren't commercially viable until the 80's. A research computer is two cubic feet of the fastest computing on the planet. You make it, then you figure out what to do with it. How do you program it? That's your job! Because real thinking takes a long time, you have to give yourself room to do your thinking. One way to buy time is to use systems not available to most people.
UCLA has one computer science department, but 25 full departments of biology (not counting medical school stuff). Why? Biologists are smarter then we are. When things are bogging down, the best thing to do is to go create a new department. To do creative work in computing, you must get past what you think is normal. Write down the 20 things you think are true of computing and try to demolish them.
Q: Are all the video codecs in the stats you give for Squeak?
A: Yes, it's self bootstrapping. The problem with Java is that it's a paper spec. Squeak is defined in Smalltalk, as a simulation. It takes less than two days to port Squeak to a new piece of hardware. This Smalltalk book shows how the VM can be created in itself. This is the metasystem.
Lisp is the most important idea in computer science. The good guys (late binders) lost in the late 70's. The early binders won.
Good ideas don't often scale.
Most people who graduate with CS degrees don't understand the significance of Lisp. Lisp is the most important idea in computer science. Alan's breakthrough in object oriented programming, wasn't objects, it was the realizing the the Lisp metasystem was what we needed.
Q: What do you mean by "object" and "object oriented system?"
A: In 1966, the thing that knocked me over was that Sketchpad was maintaining dynamic relationships. That's the key to building large system. The other thing that happened in 1966 was thinking about the ARPANet. The idea of having a million machines without any central control. Simula provided a programming form of what SketchPad was doing. My background in biology and math led me to think about algebra and tissues. Barton taught me "The basic principle of recursive design is making the parts as powerful as the whole." These ideas led me to an insight on November 11, 1966: the timesharing people got it right with processes, but it was too big.
The interesting thing about the object idea is that it's everywhere. The perversity of science is that world doesn't change just because we get a different perspective of it.
The secret of PARC's success was to design the best virtual machine we could and then to build hardware that optimized that. We've got that concept backwards today.
10:36 PM | Comments (11) | Recommend This | Print This
February CTO Breakfast Report
This morning's CTO breakfast was well attended (about 30 people) with good discussion. Here are some of the things we talked about.
- I started out mentioning that Hillarie Orman was on a panel at Demo and asking for a report from her. We got a good Cliff Notes version of the panel and conference. Bruce Grant was also there and mentions that conference was full of marketing hype as well as very smart people.
- We got into a short discussion of quantum computing and what that means to cryptography. Quantum computing and it's effects on cryptography shouldn't be confused with quantum cryptography which is a simpler application of quantum principles.
- Bruce's big love right now is mobile devices. He mentioned that they're becoming more and more capable as computing platforms. That led to a discussion of whether or not they'd mature into an open platform that leveraged developer efforts. I consider Windows an open platform, in this case, since the APIs are available and programmers can write code for the OS with an expectation that it will run on anyone's machine.
The consensus was that there will be consolidation and a platform will develop (although it may be a Javascript capable browser, rather than a cell phone OS). Scott Lemon suggested we'll move to OS independent apps, either via web or a CLR (e.g. .NET). He also predicted corporate market response to the $100 laptop project in the next few weeks. - We got into a review of some of the things that happened at Mashup Camp this week. Much of the discussion centered around business models and whether there was revenue to be had in mashups. Clearly, popular mashups can leverage AdWords. Is there more than that?
- Bruce, who was doing AJAX before it was cool, mentioned that he thought one of the big mistakes he made early on was trying to build applications for the browser without a significant server-side presence. We had a few folks at the breakfast from Bungee Labs (née CanyonBridge) and Bruce thinks they've struck a good balance in this area. With respect to business models, Bruce believes people pay for reliability. I brought up Jon Udell's recent column on the browser as orchestrator.
- A related discussion was on the importance of content and data in Web 2.0. Flickr didn't win because they have a great API. They don't maintain their position because people can't copy their API or idea. They win because they have the most pictures, period. People are invested in them and the idea is viral ("come look at the picture of my new kid").
- Also mentioned were Ning a site for creating social Web sites, and Jot. The idea is to "build Excel for the Web," not in the sense of NumSum, but in the sense of something that changes how business uses the Web. Bruces tells of talking to a business person who said "Before Office, I had to have a secretary create a presentation and it took weeks. Now in 2 or 3 hours I have the presentation and I do it myself. Until dealing with applications and data online is that easy, the Web doesn't mean that much to me."
There was some discussion of outsourcing and the new Macs. Some of it is too hard to capture in text. You really need to be there. Stop by next month and see what it's like. Scott Lemon has notes from the meeting online as well. Scott also has notes of Alstair Cockburn's presentation at last night's Geek Dinner.
Thanks to Tom Gregory and Nathan Stocks who collaboratively recorded notes for the meeting using Subetha Edit.
1:16 PM | Comments (2) | Recommend This | Print This
February 22, 2006
Presentation at W3C Workshop
The paper Kaliya Hamlin, Aldo Castaneda and I put together for the W3C Workshop on Transparency and Usability of Web Authentication was accepted for presentation. The paper discussed identity rights agreements.
W3C has released the draft program. This looks like a really good event. Unfortunately, I've already committed to moderating a panel at the InfoWorld SOA Executive Forum in San Francisco those days and the workshop's in NYC. I'll have to rely on my co-authors to make the presentation.
9:56 AM | Comments () | Recommend This | Print This
February 21, 2006
Legislative Live Blogging
Yesterday Steve Urquhart live blogged a day of the Utah Legislature from his chair as Majority Whip. This is likely the very first live blog of a session by a sitting legislator. Interesting and informative to see a whole day from his perspective.
6:18 PM | Comments () | Recommend This | Print This
Hearing Alan Kay
Alan Kay is giving the Organick Lecture at the University of Utah on Thursday. It's actually two lectures, one in the afternoon on "computer science" and "software engineering" and on in the evening on the $100 laptop. I'm planning on going to both.
If you're interested in riding with me, I've got four seats--first come, first serve. I'll be leaving BYU at 2:15. Since I'm planning on staying for both lectures, I won't be home until late.
If you're already in Salt Lake, it would be fun to get some people together for dinner in between the lectures. Say 5:30 or so at Market Street Broiler. Let me know if you're coming and I'll make reservations.
Some people have asked if these lectures will be available online. I've asked the CS department at Utah and gotten a "maybe" kind of reply. So, I'll let you know later if there's a link.
10:45 AM | Comments () | Recommend This | Print This
Social Software and eGovernment
In a recent Government Technology News article Wayne Hanson asks "Can Social Software Improve eGovernment?" One interesting thing that struck me in the opening paragraph is that he throws RSS into the pool of accepted technology. That's saying something for RSS that I'm not sure is acknowledged much.
The article talks about blogs, referencing an article from last February that spoke about our blogging experiment in Utah when I was CIO. It also mentions wikis, del.icio.us, Flickr, and collaborative editing tools like Subetha and Moon Edit.
Unfortunately, the article reaches no conclusions and even makes a few blatant errors (calling mash-ups "social software," for example--a classification I'm not buying). I'd be very interested in seeing where social software has been used to good effect inside Government. I'm pretty sure there are wins and having some publicity around them would do everyone some good.
10:25 AM | Comments () | Recommend This | Print This
CTO Breakfast on Thursday
We'll be having the monthly CTO Breakfast this Thursday at 8am. As usual, we'll meet in the Food Court at Canyon Park Technology Center (Building L of the former Word Perfect Campus). Come prepared to talk to the group about one or two interesting technologies you've seen in the last little while. We want to know what made you say "wow!" lately.
The next three CTO Breakfast's will be:
- March 30 (Thursday)
- April 28 (Friday)
- May 19 (Friday)
Mark your calendar's now!
Remember, you don't have to be a CTO to come. Just someone interested in technology and its role in creating products. If you're interested in seeing what we do, read the report from January's meeting.
7:53 AM | Comments () | Recommend This | Print This
February 17, 2006
No Lawyer Left Standing
One Utah has a funny faux-news story about VP Cheney's little hunting accident. Might surprise you to know we have liberal bloggers in Utah. Two in fact.
8:32 AM | Comments () | Recommend This | Print This
February 16, 2006
Position Paper at W3C Workshop on Web Authentication
Kaliya Hamlin, Aldo Castaneda, and I have had a position paper accepted at the W3C Workshop on Transparency and Usability of Web Authentication. The workshop will be March 15 and 16 in New York. Our paper is Identity Rights Agreements and Provider Reputation. Identity Commons Position Paper. This is probably the most complete discussion of our thinking around identity rights agreements to date.
2:10 PM | Comments () | Recommend This | Print This
Ron Kohavi on Data Mining and eCommerce
Today's colloquium was Ron Kohavi from Microsoft research. His talk was titled: Focus the Mining Beacon: Lessons and Challenges from the World of E-Commerce (PPT). Ron was at Blue Martini Software where he was responsible for data mining. They developed an end-to-end eCommerce platform with integrated business intelligence from collections, ETL, data warehousing, reporting, mining, and visualization.
Later Ron was at Amazon doing the same thing. Again, simple things work (people who bought X bought Y). Human insight is the key--most good features come from human ideas, not extensive analysis. Amazon measures everything. Any change was introduced with a controlled experiment so that they could quantify the value of any change.
Really simple things help customers a lot. Customers want simple stuff. He references an experience at SGI where the Naive Bayes algorithm was what pleased customers the most even though it's one of the simpler machine learning algorithms.
For data mining to work you need:
- Large amounts of data (lots of records)
- Rich data with many attributed (wide records)
- Clean data from reliable collections (no GIGO)
- Actionable domain (have a real-world impact, experiment)
- Measurable ROI.
eCommerce is a great domain for using data mining techniques.
Auto-creation of the data warehouse works well if you own the operational and analysis systems. At Blue Martini, they had a DSSGen process that auto-generated a star-schema data warehouse,
Collect business level data from the operational site. Collect search information, shopping cart stats, registration form stats. Don't forget external events (marketing, etc.). Put those in the warehouse as well to correlate them.
You have to avoid "priors." Businesses are amazingly biased and believe they know what they know is right. Data can help.
Do you collect form errors on the site? They did this for BlueFly. When they ran the report after the homepage went live, they noticed thousands of form errors. People were putting search terms in an email sign up box because it looked like a search box and there was no noticeable search box on the page.
Crawl, walk, run. Do basic reporting first. Generate simple reports and simple graphs. Then use OLAP for hypothesis testing and then ask the characterization questions and use data mining algorithms.
Agree on terminology. For example, how is "Top Seller" defined? Amazon and Barnes and Noble have a different definition. Sales rank can be hard to calculate when you're doing it continuously.
Any statistic that appears interesting is almost certainly a mistake. He gives this example "5% of customers were born on the same day, including year." This is because, lots of people enter 11/11/11 for their birthday when it mandatory. Daylight savings time creates a small sales spike in October and sales dip in April.
Simpson's paradox: if you don't understand this, you can reach mistaken conclusions. He shows the Bob and Ann reviewing papers example. Kidney stone example. Simpson's paradox happens when summed data leads to one conclusion, but when you segment the data you get the opposite conclusion. This happened in a study of UC Berkeley graduate admissions where the aggregate data showed a greater percentage of men than women were accepted, but when you segmented the data by department, each department admitted more women than men. The key is understanding that the segmenting variable interacts with "success" and with the counts. This is non-intuitive. Here's a formulation:
if a/b < A/B and c/d < C/D, then its possible that (a+c)/(b+d) > (A + C)/(B + D)
Simpson's paradox happens in real life. During knowledge discovery, you an state correlations and associate them with causality, but you have to look for confounding variables. This can be complicated because the confounding variable may not be the ones you're collecting. Look for statements about confounding variables. Also, controlled experiments that split the population randomly, you don't get the paradox.
On the Web, you can't run experiments on sequential days. You can't use IP to split population (load-balancer randomization) because of proxy servers. Every customer must have an equal change to fall into either population.
- Duration: only measure short term impact
- Primacy effect: changing navigation in a web site may degrade customer experience, even if the new navigation is better.
- Multiple experiments: on a large site, you might have multiple experiments running in parallel. Scheduling and QA are complex.
- Contamination: assignment is usually cookie based, but people may use multiple computers.
- Normal distributions are rare (97% of customers don't purchase, leading to a skew toward zero.
Auditing data is important to make sure its clean and you get good results:
- Make sure time series data exists for the whole period. It's easy to conclude that this week was bad relative to last week because some data is missing.
- Synchronize the clocks from all collection points. Make sure all servers set to GMT.
- Remove test data. The QA organization isn't using the system in ways consistent with customers.
- Remove bot traffic. 5-40% of site traffic can come from search bots in some periods. These can significantly skew results.
- Utilize hierarchies. Generalizations are hard to find when there are many attribute values. When you have 20 million SKUs, you may not see many trends. Generalize product categories.
- Remember data time attributes. Look for time of day correlations. Computer deltas between such attributes (e.g. ship date minus order date).
- Mine at the right granularity level. Aggregate clickstreams, purchases, and other information to the customer level.
- Phrase the problem to avoid leaks. A lean is an attribute that "gives away" the label. E.g. heavy spender pay more sales tax. Phrasing the problem to avoid leaks is a key insight. instead of asking who is a heavy spender, ask which customers migrate from spending a small amount in period one to a large amount in period two.
Picking the right visualization is key to seeing patterns. A heatmap cross referencing date by day of week will show anomalies in purchases more readily than the classic "purchase by day" kind of graph.
UI Tweaks. Small changes to a UI make a large different. He gives an example from Microsoft help. Changing from a "yes/no" answer on "was this helpful" to "five starts" dropped response rate by 3.5 times. Another example is checkout page. There's a factor of 10 difference in conversion rate on a checkout page when you add a "enter a coupon code" box. People think they should go see if they can get a coupon somewhere and abandon the cart.
One challenge is finding ways to map business questions to data transformations. SQL designers thought they were making it easy for business people to interact with databases. Explaining models to users is difficult. How can you make models more comprehensible? Slowly changing dimensions are hard. Customer attributes drift over time. Think about making recommendations for maternity dresses. Also, products change. Detecting robots and spiders is difficult. There are heuristics, but they're far from perfect.
Ron finished with a few quotes: "One accurate measurement is worth a thousand expert opinions" (ADM Grace Hopper) and "Not everything that can be counted counts and not everything that counts can be counted." (Albert Einstein)
1:49 PM | Comments () | Recommend This | Print This
Open Telecom Box
Telecom box left open in Orem (click to enlarge) |
Yesterday afternoon I was driving down 1600 North in Orem and noticed an open telecom box. I stopped and took a picture. I also tried to close it up. The latching mechanism seemed to be working and undamaged, but there was no handle on the outside (it's removable). The box appeared to house some kind of remote DSLAM and probably Qwest's. It had been open for a while (notice the little icicles hanging inside the cabinet).
I went to the Qwest Web site to find some way to report it and there was nothing obvious. I called and they wanted to know my account number. I finally figured out how to get past their IVR and talk to a human. Fortunately, I wasn't on hold forever. Meanwhile, if you live in southwest Orem and you're DSL isn't working, you can stop over and check on the circuit yourself.
9:03 AM | Comments (3) | Recommend This | Print This
Timp
Mt Timpanogos (click to enlarge) |
Mt Timpanogos stands at the north end of Utah County. It's about 11,500 feet tall and can be climbed by hikers in a long day. This morning, after the snow we got last night, it looked great. This picture is from the parking lot just outside the building I'm in at BYU. It's also the view out my office window.
8:55 AM | Comments () | Recommend This | Print This
February 15, 2006
VeriSign's VIP
Verisign has announced a system for better authentication on the Internet that will be supported by eBay, Yahoo! and PayPal. The system uses a USB hardware token. I'm interested to see if people will use it. American Express had a card (I think it was called "blue") a long time ago that included a smartcard and gafve away the readers. People didn't go for it. Maybe if they can get someone to put them in this really cewl wristband, they will.
10:05 AM | Comments (1) | Recommend This | Print This
February 14, 2006
Oracle Buy Sleepycat
Oracle announced that they are buying Sleepycat, the maker of the DbXML database I use in several projects. This is good for Sleepycat, but might mean trouble for MySQL. I blogged about it at Between the Lines.
8:58 PM | Comments () | Recommend This | Print This
ThinkCAP JX
Does anyone have any experience with ThinkCAP JX? It's a development framework for J2EE. Any comments you have would be appreciated.
10:10 AM | Comments (1) | Recommend This | Print This
Lightweight Identity Systems
Eve Maler has a nice list of Internet Identity systems. Good summary. Johannes Ernst adds some thoughts in the comments to Eve's post, so be sure to read the whole thing. Eve also offers up some slides (PDF) that introduce Liberty and SAML.
6:31 AM | Comments (1) | Recommend This | Print This
February 13, 2006
Viruses, P2P, and Privacy
The Japan Time is reporting that the names of 10,000 Japanese convicts have been leaked from an employee's personal computer that was infected by a virus from the P2P program Winny.
The information was initially stored on a CD by a staff member at Kagoshima Prison and handed to a staff member of Kyoto Prison in December.
That employee left the CD in a personal computer. The data was leaked after the computer was infected with a virus via the peer-to-peer file-sharing program Winny, which had been installed on the computer, the officials said.From The Japan Times Online - Advanced Search -
Referenced Mon Feb 13 2006 18:21:11 GMT-0700 (MST)
The only way for an enterprise to secure data is to make sure it's only kept in an authroized location. Once it's on an uncontrolled CD or even a laptop or PDA, you might as well assume that it's leaked.
6:19 PM | Comments (2) | Recommend This | Print This
BYU RUG Report
I wasn't able to go the BYU Ruby User's Group meeting last week, but Lee Jensen went and filed this report:
I went to the BYU RUG Meeting last night in Provo. The guest speaker was Eric Hodel part of the Robot Coop makers of the 43(things,people,places) social sites. He explained some of the interesting projects that he's been working on and has done in Ruby.
He's currently working on a project called Ruby2c or MetaRuby which seeks to make an parser which will implement a subset of Ruby that can be output to the C language and then compiled. What they seek to achieve by doing this is to write the Ruby language in Ruby itself, opening up future development of language internals to anyone that knows their subset of Ruby and not just Japanese C hackers. It was an interesting project but the presentation was over just about everyone's head.
He next went on to talk about Drb which for those that don't know is distributed Ruby. Essentially it's a simple networking library in Ruby that allows a Ruby process to use remote objects as if they were local. In addition to this he gave some examples of his usage of Drb. One example was using Drb with Rinda (a Ruby Linda distributed computing implementation) to monitor live application servers.
He also talked about extreme programming concepts. He emphasized three philosophies.
- Ya ain't gonna need it. This means don't try and plan for everything and implement it all at once. You can work faster if you don't have all that crap in your head.
- DRY: Don't repeat yourself. Refactor early, refactor often. If code starts looking bad fix it. It'll only be harder later
- Test everything. He emphasized test first principles and showed some examples from code he was working on.
One of the sample rails sites he showed us had 816 lines of code and over 2000 lines of test code. It was like a 1:2.6 code to test ratio. Not bad.
1:58 PM | Comments () | Recommend This | Print This
SOA in the Public Sector
I'm quoted in an article in Public CIO magazine. I was interviewed for this story on the use of SOA and Web services in the government so long ago, I can hardly remember it. The article, especially the last line, makes me look less enthusiastic about SOA in the public sector than I am. I think public sector CIOs have a great opportunity to use the governance powers that they already have, in connection with relatively modest expenditures on infrastructure to build real connectivity between departmental silos.
10:05 AM | Comments () | Recommend This | Print This
February 11, 2006
Fifty Writing Tools
Poynter, an online resource for journalists, has fifty tips for writing better. These are worth reading and practicing.
10:13 AM | Comments () | Recommend This | Print This
February 10, 2006
Defining Reputation
I defined reputation in a recent post. More specifically, I said that reputation isn't identity. Dick Hardt disagrees. To tell the truth, I hadn't remembered that slide from his famous identity presentation.
Dick refers to a definition of reputation from dictionary.com
reputation:
3. A specific characteristic or trait ascribed to a person or thing
and says
To me, this makes it clear that reputation is part of your identity. Phil states that identity data is not transaction data or reputation data. I think it is. An example of transaction data being identity: “I’m the guy that bought that black sweater yesterday.”
Reputation is a bit trickier to understand as there are a few meanings to the word. Using the definition above, it is clear (to me :-) that a characteristic ascribed to a person is reputation. Dick is tall. Dick is male. I take a broad view of what I mean by reputation. It is what any third party says about me. I see this as identity, since this is how that third party is identifying me. It may also be useful to other parties, if they trust that third party. If it is useful to other people, then it is valuable for me to be able to move that identity data around.From Identity 2.0 » Identity=Reputation
Referenced Fri Feb 10 2006 15:26:01 GMT-0700 (MST)
The definition that Dick uses isn't the only one. The other two are:
reputation:
1. The general estimation in which a person is held by the public.
2. The state or situation of being held in high esteem.
I think most people would agree that these more closely match what they think of when they hear "reputation" than any attribute. When someone loses 25 pounds, we don't think "what a blow to their reputation!"
The problem with defining identity broadly (identity == reputation, identity == transactions, etc.) is that we lose the ability to do anything useful with it. In particular, teasing out the privacy concerns gets much harder.
Take the fact that Dick bought a sweater. Certainly his participation in that transaction can be used to identify him. I'm not arguing that. But to say that it's part of his identity is overly broad. There are at least two parties to the transaction and they both have a stake in it.
Reputation is even more problematic. Reputation, in definitions 1 and 2 at least, is what others say about you. Scott Lemon maintains that our identity is made up of
I'm not trying to start a semantic war here. In common usage, these concepts are frequently comingled. Nevertheless, I believe that separating identity, transactional data, and reputation serves us better than combining them does. We gain more intellectual leverage in architecture and design problems when we think of identity in a narrow sense, transactional data being jointly owned, and reputation being calculated from those, and other, factors.
3:13 PM | Comments (1) | Recommend This | Print This
Registering Identity
A couple of bills caught my attention today. Both bills, under consideration by the Utah Legislature, deal with identity. The first, HB158 would require convicted sex offenders to renew their driver's license yearly. The idea is that while sex offenders are under no pressure to keep their data current in the state's online sex offender registry, they need a driver's license. The bill turns a manual process of checking into a more automatic process where renewing a driver's license updates the registry.
The second, HB429, places restrictions on the sale of components used to make meth. Anyone purchasing medicines like Sudafed that can be used to make meth would have to produce a photo ID and would only be allowed to buy 3.6 grams--about one box--per visit. The names and transaction details would be kept in an electronic file. The transaction file would be stored by the retailer, not the State.
HB158 uses identity to tie state-issued privileges to a desired action. I suspect it will be effective.
HB429 uses identity to record an action. Presumably the transaction data could be aggregated and used by law enforcement officials to find out who's buying too much, although as far as I can see, no provision in the bill does that or creates a system to do that. Seems to me that the rewards of making meth are certainly worth the risk of using false identity to fool the system. I'm no expert on meth production, but this bill seems to require a heavy price of everyone in terms of inconvenience and privacy with dubious return.
11:17 AM | Comments () | Recommend This | Print This
LISP Ecosystems
I criticized Allegro yesterday at Between the Lines for a business model that sells programming language development environments like they were enterprise software. Programming languages and their development environments are free in the 21st century--at least that's how most people think about them. I can't imagine approaching a VC, for example, with a business plan that has as it's basis selling programming language tools.
The problem is that programming languages depend on complex ecosystems of libraries, IDEs, testing tools, Web components, and so on. A reader at BTL said it in this way:
Where's the ecosystem?
LISP was born in 1958... but where's the ecosystem of tools and libraries--FOSS and commercial--that surrounds C++, Java Perl, Python, PHP and even the .NET platform? Ruby dovumentation and libraries are so much easier to come by and that language was born in the mid-90s.
Looks like LISP's fans have a lot of work to do if they want to bridge the support gap with competing languages and platforms. Until that happens, LISP will be like Latin--historically significant but otherwise dead.
There actually is a community of people who use LISP, but it's not as big as it could be. Several factors contribute to this:
Common Lisp isn't all that common. That is, the CL spec covers the language, but not much else. Transferring programs is hard. This contrasts sharply with new languages like PHP, Python, and Ruby where the core language and libraries are free so there's only one implementation. Consequently, developers create large bodies of code that can be easily used by anyone else.
7:41 AM | Comments (2) | Recommend This | Print This
February 9, 2006
James Kennedy on Particle Swarming
James Kennedy is social psychologist with the Dept. of Labor's Bureau of Labor Statistics. He's speaking at today's BYU CS colloquium on "The Essential Particle Swarm." He was introduced as the inventor of particle swarming algorithms. He muses whether he's the inventor or discoverer of the algorithm, given that this is a process inherent in many places in nature. The term discoverer might be more apt.
James started his work doing computer simulations of the interactions of individuals and their interactions in social context. Social dynamics are adaptive. Societies adapt to their environment, not just the physical environment, but their social environment.
The partial swarm is a kind of program does simulations comprising simple individuals that interact with one another according to a simple set of rules. The particle swarm algorithm despite it's simplicity, can be used in man different applications.
Particle swarms are used to find global optimizations of multi-variable functions. Each variable is called a dimension. An element of randomness causes particles to explore the function space in search of the optimal value.
A particle as a position, xid, a previous best position, pid, a velocity, vid, and a previous best function result pbesti. A particles neighbors have these same properties. James uses 20 particles in simulations. there are two popular population topologies: Gbest, a fully connected topology, and Lbest, where each particle is only connected to immediate neighbors (two connections each). Since particles learn from each other, the topology can make a big difference.
The algorithm for any one partical in a particular dimension can be summarized as follows:
New position = current position +
persistence +
social influence
Persistence is a factor that keep particles moving in a direction (inertia might be a better term). Social influence let's particles learn from their neighbors.
In the algorithm, each particle explores along each dimension with a velocity calculated from previous values and an element of randomness. The particles also use information from their neighbors allowing them to converge on a solution. When a neighbor finds a better point, particles may start exploring a new space. This allows particle swarms to shift from exploitation of a promising area to exploring a new area automatically.
4:44 PM | Comments (2) | Recommend This | Print This
Mail and Chax
This morning I ran across an iCHat utility called Chax that adds some features to iChat. One I was particularly interested in was auto-accept for chats. I get tired of having to hit "accept" whenever chats come in.
This afternoon Mail started crashing. After opening it up, it would just die after a few seconds. No warning, nothing. A quick look in the console showed that a crash report was being written to ~/Library/Logs/CrashReporter/Mail.crash.log. That showed the following:
Binary Images Description:
0x1000 - 0x198fff com.apple.mail 2.0.5 (746)
/Applications/Mail.app/Contents/MacOS/Mail
0x3f9000 - 0x3f9fff com.ksuther.chaxloader ??? (1.3)
/Users/pjw/Library/InputManagers/Chax/Chax.bundle/Contents/MacOS/Chax
...
So, I uninstalled Chax and Mail came up a worked for a while, then crashed again. I'm at a loss now. More later, I'm sure.
Update: So, I used the suitcase nuke option: removed the mail preferences file and rebooted. I set up the accounts again and it found my mail boxes and things seem to be back to normal. I'm crossing my fingers...
2:13 PM | Comments () | Recommend This | Print This
Bagley on McBride
Fellow Utahn Judd Bagley has posted a podcast with SCO's controversial CEO Darl McBride on Business Jive. He has some other interesting podcasts there as well.
10:06 AM | Comments () | Recommend This | Print This
Switching to Vonage
Home patch panel (click to enlarge) |
Today was the day I finally made the break with Qwest. I've been paying twice what I would for Vonage's best service and not getting as many features. I've had Vonage as my business line for a few years now and have been happy with it so I decided I'd transfer the main number to Vonage as well and say goodbye to my ILEC.
I get my broadband access from Comcast and it's been pretty reliable. The few problems I've had have been DNS and that doesn't affect VoIP--it kept right on working. The other big concern is power outages, but I've got my stuff on UPS--although I'm not sure about Comcast.
I'll let you know how the experiment goes.
A comment from Cid Dennis made me think I maybe ought to say something about what I did to hook it up. First, I went outside and disconnected the Qwest lines coming into the house (there's an RJ11 jack in the box on the side of the house) so that i wouldn't be feeding any phone calls out to their network. Then I hooked an RJ11 jack to some phone wire and fed it straight into the punch down block that feeds my home patch panel (the punch down blocks in the lower left corner of the photo). If you don't have a punch down block of some sort, your phone lines are probably daisy chained. In that case, feeding phone signal into any point in the daisy chain will light up all the phone jacks in the house.
8:17 AM | Comments (1) | Recommend This | Print This
February 8, 2006
Who Knew?
Who knew that Peter Coffee was a closet LISP junky? First he published this piece on "exotic" languages that I commented on at Between the Lines and then yesterday, he put out an article entitled LISP Deserves a Fresh Look. Peter's argument has two prongs. His first point is that old arguments against LISP are largely no longer true.
The current generation of application developers has been imprinted with a business model of mass-market software as frozen bits, packaged as executable binary files, delivered on inexpensive media units—floppy disks or CDs—to run on a PC.
This model is merely an artifact, though, of one brief stage in the evolution of technologies and markets.
The model of "bits in a baggie," as one might call it in homage to the Apple II era, defined its own criteria for programming languages: ease of compilation, minimum code size for ease of distribution and minimum memory footprint for acceptable performance on low-cost PC configurations.
When product-cycle durations are measured in years—or, at a minimum, in quarters—a cumbersome process of turning source code into saleable bits is tolerable; when a mass-market application is delivered as function across a network, not as raw bits in a licensee's hands, the equilibrium state is far more friendly to developers.From LISP Deserves a Fresh Look
Referenced Wed Feb 08 2006 13:43:02 GMT-0700 (MST)
His second point is that there are real productivity reasons to consider LISP. Peter cites the work of Erann Gat, a researcher at the California Institute of Technology's Jet Propulsion Laboratory:
The trade-offs are clear. In [Gat's study], programmers writing in LISP produced programs with less variability in performance than more experienced programmers writing in C and C++.
The fastest versions of C and C++ programs were faster than most LISP implementations, but the median performance of the LISP implementations was actually twice as good as the median performance of the C and C++ code performing typical tasks.
For real-world teams, such reduction of technical risk and improved worst-case scenarios arguably outweigh best-case results.
The LISP implementations in Gat's study were more memory-intensive than those in C and C++, although LISP's memory use was comparable to that of Java while performance was much better. A key point, though, is that applications are increasingly being delivered to users via the Web, and that developers are therefore freer to use tools that maximize their own flexibility at the supply end.From LISP Deserves a Fresh Look
Referenced Wed Feb 08 2006 13:45:14 GMT-0700 (MST)
Do I expect any of this to convince you? No, not really. People rarely pick programming languages based on what works best. There are usually a pile of political and social problems that get in the way and muddy the waters. Most programmers don't pick the language they use anyway. It gets picked for them by a pointy-haired boss for whom the political and social factors loom large.
1:38 PM | Comments (1) | Recommend This | Print This
JavaSchools, Scheme, and Sin
Joel Spolsky has a great essay on the perils of JavaSchools, those CS programs that adopt Java (or .Net, to be fair) because it is easy for students to learn. In it, he sings the praises of learning Scheme and being exposed to functional programming.
Without understanding functional programming, you can't invent MapReduce, the algorithm that makes Google so massively scalable. The terms Map and Reduce come from Lisp and functional programming. MapReduce is, in retrospect, obvious to anyone who remembers from their 6.001-equivalent programming class that purely functional programs have no side effects and are thus trivially parallelizable. The very fact that Google invented MapReduce, and Microsoft didn't, says something about why Microsoft is still playing catch up trying to get basic search features to work, while Google has moved on to the next problem: building Skynet^H^H^H^H^H^H the world's largest massively parallel supercomputer. I don't think Microsoft completely understands just how far behind they are on that wave.From The Perils of JavaSchools - Joel on Software
Referenced Wed Feb 08 2006 10:53:20 GMT-0700 (MST)
In another article Sriram Krishnan says that "Lisp is sin:"
I was on vacation a couple of weeks ago at my parents' house in Chennai. My dad and I share a love for James Bond movies so my dad had bought a set of DVDs containing all the Bond movies in existence. I can't help but strike a politically incorrect analogy - Lisp is like the villainesses present in the Bond movies. It seduces you with its sheer beauty and its allure is irresistible. A fleeting encounter plays on your mind for a long,long time. However, it may not be the best choice if you're looking for a long term commitment. But in the short term, it sure is fun! In that way, Lisp is...sin.From Sriram Krishnan : Lisp is sin
Referenced Wed Feb 08 2006 10:55:40 GMT-0700 (MST)
Sriram is tempted by LISP, but put off by some of it's raw "hacker power."
At BYU, we teach Scheme in the Concepts of Programming Languages class. There's a continual struggle to maintain Scheme in that class. I never apologize to the students for teaching Scheme--I think anyone who calls themselves a Computer Scientist ought to have done some programming in it. Beyond that, however, it's the best vehicle I know for allowing me to challenge student's notions about what programming languages are and how they should work.
10:49 AM | Comments (1) | Recommend This | Print This
CRAP: At the Whiteboard
David Berlind has a 3 minute whiteboard presentation on CRAP (content restiction, annulment, and protection), the new term for DRM. His advice: don't buy anything with CRAP in it.
I like these little whiteboard presentations. They're a lot like screencasts, short, simple to make, and easy to watch.
As long as we're on the subject of CRAP, check out the analyses of iTunes U, Apples attempt to corral universities into the iTunes/iPod silo, by Jon Udell and Gardner Campbell. Jon got a load of crap (note the small case) from Mac zealots for daring to criticize Apple.
10:17 AM | Comments () | Recommend This | Print This
Eric Hodel at BYU RUG
The BYU Ruby User's Group is meeting tonight at 7pm in 120 TMCB. The guest speaker is Eric Hodel from Seattle Washington.
6:27 AM | Comments () | Recommend This | Print This
February 7, 2006
Alan Kay Organick Lectures
Alan Kay will give this year's Organick Lectures at the University of Utah on Feb 23rd. He will speak in the afternoon (@3:40pm) on "Are 'Computer Science' and 'Software Engineering' Oxymorons?" and in the evening (@7:30pm) on "Children, Powerful Ideas, and the $100 Laptop." Both lectures will be at the 202 Skaggs Biology Research Building.
If you're in the area, you ought to go. Alan Kay has wonderful and inspiring to listen to whenever I've heard him. What's more, the setting is usually fairly small. Last year, when I heard Vint Cerf speak, there were probably less that 100 people there.
2:48 PM | Comments (3) | Recommend This | Print This
Using Google's Universal Authentication Engine
Google's Chat service, GTalk, is based on XMPP, the protocol behind Jabber. That's why you can use any Jabber client with GTalk. This has other implications beyond chat clients, however. XMPP has a very capable authentication mechanism built-in to service distributed chat servers, but you can use XMPP authentication for anything. Google has conviniently tied this authentication service to your Google account. That means that you could build an application that let's people log in using their Google account name (what I call GIDs) and password without any prior arrangement with Google. With no fanfare at all, Google has created a universal login for anyone who wants to use it.
11:49 AM | Comments (6) | Recommend This | Print This
Rivers of Information and Social Media
I just finished speaking at the Enterprise Software Summit on rivers of information. The idea basically comes down to the fact that blogs, RSS, and other Web 2.0 technology is changing the dominant metaphor we have for the 'Net from "place" to "flow." Jeff Nolan took some notes.
Jeff's speaking now on how he uses social media at SAP to try to get SAP's message out. He mentions a study that indicates CEOs are among the least trusted spokespeople. This has interesting implications or the rise of the blogging CEO. Jeff says it's more important to get others blogging than to get your CEO blogging. I think this is certainly true, but I also think that blogging, done right, will change the CEO. This may not get the message out, but it will help the company.
Jeff is talking about how SAP is changing the way information is created and distributed. Whereas information was formerly created in discrete, static chunks and distributed in a one-way manner via email, information now needs to be boundariless and received through subscription. The latter methods enables conversations to start.
Most confidential information at large companies isn't. It's labeled "confidential" to make the writer feel more important. Start with the assumption that nothing is confidential and then categorize appropriately.
Jeff set up an internal multi-author blog internally called "The Daily Oracle." Whenever anyone sees some news item that has to do with Oracle, they post it. This is more effective than the clipping service that SAP pays for. SAP uses this and other topic specific blogs to respond to Oracle. Powerpoints, etc. get created or changed within minutes or hours for field people to respond to Oracle's actions.
Jeff thinks RSS will absolutely change the way companies communicate internally. Wikis are essential to capturing institutional knowledge and improving productivity. SAP uses SocialText (Ross Mayfield's here today as well). Blogs and wikis can be combined to form effective project management tools.
How do you use social media in your company? Here's Jeff's ideas:
- Lay down core building blocks, including a management commitment to be involved and guide the use. Install software (blogging and wiki). Support RSS/Atom distribution.
- Develop external relations. Form community groups and create a federation of interested 3rd party bloggers, citizen journalists, and so on.
- Drive content avenues. This can come from executive and employee blogs. Don't forget podcasts.
Trying to manage external bloggers like you do the media isn't effective. Find the influencer in the blogosphere. Jeff points out that Technorati shows that 241 sites link to his blog whereas only 61 sites link to sap.com. There's more to influence than incoming links, but it's a powerful indicator. SAP called up influential bloggers on enterprise software and asked if they'd like to talk more and better access to information about SAP. They don't try to manage the content, just send information. SAP will make executives available to bloggers to talk. Jeff will comment on blogs that are critical of SAP to engage in the conversation. When the criticism is valid, fix the problem rather than covering it up.
Changing the direction of the battleship takes time. There are legal challenges (your corporate code of conduct might not allow blogging). The message is not longer a top-down, managed message, but a distributed, more confrontational market communication strategy. You probably need software that isn't currently supported by your IT team. If you manage the message you'll be ignored.
C-level blogs are largely a waste of time. The untapped gold mine are the people who are direct reports to C-level people. They are smart, tactical, and have things to say.
9:25 AM | Comments () | Recommend This | Print This
February 6, 2006
SaaS Lessons Learned
I'm at the Enterprise Software Summit in Sundance this afternoon (I'm speaking tomorrow). Greg Gianforte, from



