I've just uploaded a new dev build of BottomFeeder - this integrates the last few rounds of bug fixes I've done. I still have a few things to do for the 4.2 release, but it's starting to come together.
The Omaha Dynamic Languages group is meeting April 4th. For details, see Blaine's blog.
Keith Ray notices the comments to this Mini-Microsoft post (542 of them when I looked). If even a handful of those represent the thinking of developers on the Windows team at Microsoft, then they have a huge, huge problem on their hands. I've said before that I thought Microsoft had coded their way into a mud filled corner with Windows; all those years of thinking that everything belonged in the OS have finally come home to roost.
Heck, the EU and US authorities shouldn't worry about what MS bundles; they ought to encourage more of it. The more coupling MS introduces, the worse it gets for them, and the better things look for Apple.
I've been invited to demonstrate and speak about the new version of Liberty BASIC I'm working on. The venue is the New York City Smalltalk Users Group on April 6th, a Thursday evening. The reason this group invited me is because Liberty BASIC is developed in a version of Smalltalk so it's an interesting project for other Smalltalk developers.
I've been given permission to invite Liberty BASIC users to come also for a sneak peek. The meeting will be held a couple of blocks from Madison Square Garden. I'll post more details about the meeting place when I have them.
I hope we have have a few members of the Liberty BASIC community join us.
Well, look at this - Microsoft has gone ahead and worked around the hacks at Eolas, who wanted to get paid off for their ability to fool patent office staff. They claim to feel bad for users. Sure. And I'm the Queen of Romania, as Dorothy Parker once said:
Eolas Technologies says the decision by Microsoft to modify its Internet Explorer browser at the expense of a seamless user experience is a "disappointment" and a "shame."
It's a shame that these morons haven't gotten lost in the jungle too. Their COO is apparently miffed:
"Microsoft is apparently of the position that this [IE modification] helps their litigation position. I can't comment on the specifics of whether that's true or not. Our position remains the same. We are ready to have reasonable discussions on licensing the technology," Swords said.
Here, let me translate: "Microsoft didn't want to pay us off for our non-invention, but we're still ready to extort money from them if they feel stupid".
Rogers has switched to Atom, and his switch surfaced a subtle bug in BottomFeeder. The Atom 1.0 support built on the older 0.3 support, and it turns out that a hack I used back then to find feed links was problematic in Atom 1.0. That's fixed now, and the update is online (for the 4.2 development build only)
The common theme I'm hearing is Werner (and the other Amazon employees who commented here, and elsewhere that I'm seeing) want numbers. They want statistics. Proof. Science.
Where I gave them stuff like " blogging doubled sales at Stormhoek winery, according to its CEO." Or "Munjal Shah, CEO of Riya, says blogging is very important to his new company." Or "Axosoft raised more than $14,000 in just a few days with nothing more than a few links on some blogs." Or " Foldera got more than one million signups for its service in 17 days by doing nothing more than talking to six bloggers." Or, a tailor in the UK saw his sales go up by 10x by doing a blog. That probably wasn't well enough communicated, or it wasn't the kind of answer that would convince Werner. That means I need to go back and do some more homework or at least learn to communicate better while being interrupted by an executive with strongly formed opinions.
Here's the thing - you won't be able to find "hard numbers" for blogging and ROI. Not now, probably not ever. How many hard numbers do you find for any CRM effort? That's what blogging is, really - Customer (or Prospect) relationship mangement. It's a way to communicate with a wider audience than you can via more traditional marketing outreach efforts. Have we ever found solid ROI numbers for those more traditional efforts? I don't think so - best I can tell, we try to track down initial leads that came via marketing, and then marketing takes credit for anything that's even remotely related to a marketing campaign.
I'm not trying to knock marketing efforts with that. It's just that marketing is very hard to measure objectively. Sales is easier - either a sales person did or did not close a sale. At the end of the year, there's a real number to look at, and there are previous years to compare to. Sure, it's still a little fuzzy, because sales gets impacted by things out of their control. My point is, marketing measurements are even less objective, and I don't really see a way to firm them up. Which takes me back to blogging. It's another aspect of customer/prospect outreach, and - for all the same reasons - hard to get solid numbers for.
With scripting support, Java will continue to grow by leaps and bounds and may even be the death of other languages delegating them to second-class citizenship. Other features that many of the conference attendees will be talking about that matter include discussions around clustering support, native platform GSS/Kerberos integration, Support for the Simple and Protected GSS-API Negotiation Mechanism (SPNEGO) and the ability to integrate enterprise applications into management consoles via the JMX protocol.
Fascinating. I wonder what his reaction to the SPA 2006 conference would have been. The feel there was that Java was very much not the way to the future.
Note to self: Never accept the kind of routing that I did yesterday. I finally got back to BWI just before 7 pm local time - which meant, beginning with the cab ride, I had been in transit for 19 hours. Even after more than 12 hours of much needed sleep, I still feel like I have tennis balls in my ears...
Cincom Smalltalk Engineers to Present at Smalltalk Solutions
Learn From the Experts on How and Why to Use Cincom Smalltalk
CINCINNATI, Ohio -- March 30, 2006 -- Cincom Smalltalk engineers will present at the upcoming Smalltalk Solutions Conference to be held April 24-26, 2006 in Toronto, Canada. Some of the discussion topics include cryptography, object-relational persistence and web applications using Cincom Smalltalk VisualWorks.
A few of the Cincom Smalltalk Engineers presenting at Smalltalk Solutions include:
GLORP is an open-source library for object-relational persistence. It includes some very sophisticated mapping and performance features, and current plans are for it to be incorporated as the core mapping layer in a future revision of Cincom Smalltalk's database toolset. This tutorial is designed to give an introduction to the concepts, capabilities, and best practices using GLORP.
This presentation will introduce cryptographic hash functions and public key algorithms and discuss some of their applications and practical aspects. The talk will include demonstrations using the Cincom Smalltalk VisualWorks security library.
This session will go through the process of building, maintaining, updating and scaling a Smalltalk web application server and show the ancillary areas of the technology XML, RSS, XML-RPC. Also discussed will be the ease of modifying a Smalltalk server in place, without taking it offline and the transition from single user to multi-user – all without downtime.
Visit the Cincom Smalltalk booth 1133 in the exhibit hall and receive a copy of the non-commercial version of Cincom Smalltalk Winter Edition.
Cincom Smalltalk enables software developers to build applications quickly and efficiently, including scalable browser-based and client-server systems. Cincom Smalltalk delivers significant productivity over Java™, C#, C++, or Visual Basic®, allowing developers to bring their products to market significantly faster.
For nearly 40 years, Cincom has delivered innovative software and services that enable thousands of clients worldwide to simplify the management of complex business processes. We empower our clients to outperform their competition by providing ways to increase revenue, control cost, minimize risk and achieve rapid ROI.
Cincom serves clients on six continents including BMW, Citibank, Boeing, Northwestern Mutual, Federal Express, Ericsson, Penn State University, Milacron, Siemens, Rockwell Automation and Trane. For more information about Cincom's products and services, contact Cincom at 1-800-2CINCOM (USA only), send an e-mail to email@example.com or visit the company's website at www.cincom.com.
Cincom Systems, Inc.
Sheesh, maybe EVDO is the way to go. In London (where sadly, EVDO would not be helpful), t-mobile wouldn't let me roam. In JFK, at terminal nine, I had a weak WiFi signal that got me t-mobile access for a few minutes, and then dropped dead. Finally, here at Logan (yes, my routing makes no sense), I find that Comcast provides the WiFi, but they provide no way for me to login as a Comcast user (apparently, Massachusetts and Maryland are independent Comcast fiefdoms. Fitting, in a way, since I've been reading about the 12th century of late). Sigh.
Well, the good news about this plane trip is that I had a project to do that killed most of the travel time: updating the intro course for VisualWorks to VW 7.4. In the prior release, we moved packages into the base, which makes the beginning view of the product different: Instead of seeing categories in the left pane of the browser, you see packages and bundles. I've updated the materials to reflect that.
Next, I'm going to have the online tutorial materials sent to me, so that I can do the same updates to that stuff.
I managed to get to Heathrow early this morning, and I thought I'd have time to get a quick update - the airport has T-Mobile WiFi, and I have a pay as you go account. It works fine in the US, so I refreshed the browser and followed the directions. Sure enough, there's a pull down menu for non-UK users, and I was able to select T-Mobile US. Logging in brought me to an unhelful "general error; try again later" message. The same thing happened last Monday on my way in, so it's not just a one time thing. Do they actually support roaming?
In a post about the new MS Office, Runar mentions Pollock:
Previously there has been focus on how Pollock will make sure the GUI looks good, by ensuring screen updates do cause flickering. Pollock definitely also need to have focus on drawing speed.
Pollock is not really even in beta yet. We are closing in on the first supported release (see the roadmap here) - and here's the thing - don't worry about the performance issues. Our developers have been focused on the "heavy lifting" thus far, and, even before they get to serious optimization (and optimization is a large part of the internal roadmap), they know of a number of things which, when optimized, will make performance improve a lot.
We don't follow the theory of premature optimization here - we want to get the big things right before we focus on the rest of it. Rest assured, Pollock will be fast when it's ready to walk out the door.
One of the most interesting things I saw at this show was the change in mindset about development. Last year, dynamic languages were interesting, but the main thoughts were still on Java. This year? Completely different. In talk after talk, and in side conversation after side conversation it became clear that Java is regarded - at least by the attendees of this show - as a thing of past. Oh sure, it's still in use, and it will remain in use for a long while. It had no champions though, and plenty of people expressed the thought that Sun's release of 1.5 was the straw that broke the camel's back - the level of complexity being grafted onto the language was just too much. Heck, mention the phrase "Java Generics" at this conference and you were likely to hear snickering.
Via Mike Gunderloy, I found this amazingly evil piece of work: a "Mass Blog Installer" tool. Witness the brave new spam world being ushered in by the people behind this - they start off sounding like they offer a valuable service:
f you have been hosting on Blogspot, you know how fast your blogs can disappear.These days Blogger is deleting blogspot hosted blogs ... and there is absolutely nothing you can do about it. They are also blocking posts through the API with 'Captchas' and saving them as drafts all in an effort to stop the abuse of their service. Unfortunately, your hard work ends up down the drain. What can you do to save your work and stop the carnage?
Sounds good, right? Until you read down and find out what's going on:
That's right - Google can't delete your blogs if self hosted. I have tested Blogger blogs hosted on my own domains and have not once been shut down or stuck with a post captcha. Now that I have the Blog creation process automated, it is a piece of cake to crank out 100s if not 1000 blogs in one day. After many months of testing and posting, all blogs are intact and generating traffic.
Oh the joy - automated splog creation. This might be why I'm seeing more splog results showing up in my search feeds. These tools are so very proud of themselves, too:
I was shocked at the power of creating a blog network. This shot my AdSense income up to an amazing $135 per day only one month later. I can also report that the sites and blogs have been holding their traffic and income as I write this letter.
This is like that classified ad jerk you see on late night TV, but scamming Google AdSense. They even realize that what they are doing is slimy; that becomes clear when you read the rest of the letter. Ponzi was clearly born in the wrong century...
Well, it's been a great 3 days, even if I spent most of them jetlagged after traveling to London from Maryland by way of Los Angeles :) For people who like the notion of an unconference - you want to attend SPA 2007. These folks were doing a "conference for particpants" before anyone else had the idea. I'll be back next year, and I intend to arrive earlier.
If you ever have a chance to hear Dave Thomas give this talk, run, don't walk. He gave a great talk on the "received wisdom" that too many of us in the software industry follow. Chief amongst those, of course, is declarative typing. I can't summarize the whole talk - he was funny, and his slides were amusing. If Dave is speaking at a conference near you, go.
I participated in a fascinating discussion forum this morning - Laura Hill and Bernard Horan (both of Sun) organized a "fishbowl" on the topic of distributed workplaces. That works like this - there were 7 chairs arranged in a circle in the center of the room, with a large ring of chairs around them. There were 6 of us in that center ring, and discussion kicked off with our opening statements on distributed working (which we had submitted previously). From there, it was an open discussion under the following ground rules:
- Only people in the bowl could talk (fish)
- People on the outside could get up and enter the bowl at any time
- There always had to be at least one open chair in the center
What that means is that people are entering and leaving the bowl regularly. We got participation from nearly the entire audience, and the conversation ranged over a lot of stuff: whether remote working is desirable, whether it works for anyone, how you can manage agile development, how you do communication.
The talking really focused on communication - both on tools (IM, NetMeeting, IRC, phone), and on the practice - how often, ad-hoc or planned, how often you need face to face meetings, that sort of thing. It was a good time, and a good discussion. In know that Laura and Bernard were taking notes and recording the session, so if any of that comes online, I'll link to it.
Here's a talk I'm seeing at a lot of conferences - something to address the widespread worry about offshoring of IT sector jobs. Personally, I'm skeptical of governmental programs to "address" the "problem" - this is nothing new. Take textiles, for instance. Between the 18th and 21st century, that industry moved from France to the UK, on to New England, then off to the US south, on to Latin America, and now to Asia. In all that time, there have always been high value textile jobs in all the "losing" areas.
I also wonder about the supposed gap between comp sci graduates and the job market; in general, the market tends to solve those problems by itself. Put another way, I'm wary of solutions that chase ill defined problems. The bottom line is, costs in the IT sector are dropping inexorably, as they have in other industries that have globalized. There's no way to get around the existance of highly trained, rapidly industrializing populations in places like India, China (etc).
Also, I wonder if one of the problems isn't the uptick in demand for credentials before hiring into a development position. When I got into the business in the late 80's, it was quite common for people to get into software development who did not have software related degrees. I certainly didn't; most of the people who worked where I first worked didn't have software degrees either. Good comment from a professor in the room on this: no one has a shared understanding of the term "software engineering", if you go across university departments, industry, etc.
Here's a good consensus - the difficulty arises in attempting to have developers over there (wherever the offshoring location is) and the managers here (US, UK, wherever). The difficulty is that there are communication difficulties that add huge overhead to such projects. Project management in general is bad in the software field; adding a large communication disruption into that already poor discipline just makes things worse. IMHO, the companies that ought to worry are software development firms (like Microsoft), who will, over time, find that new firms in India (etc) will be at least as effective as they are, but with lower costs. The company that isn't actually in IT, but has IT needs won't be nearly as impacted.
Question: Do you have an iPod?
Answer: No, I do not. Nor do my children. My children--in many dimensions they're as poorly behaved as many other children, but at least on this dimension I've got my kids brainwashed: You don't use Google, and you don't use an iPod.
It's a nice thought, but a tad unrealistic. Witness this (rather old) post from Scoble.
The Smalltalk Industry Council Announces
New Executive Director
State of STIC Meeting and Open Enrollment Scheduled at Smalltalk Solutions 2006
March 28, 2006 - The Smalltalk Industry Council (STIC) is pleased to announce the election of Bob Nemec as the new Executive Director of STIC. Bob Nemec, Vice-President of Northwater Objects, has been an avid Smalltalk developer since 1990. Bob’s first act as Executive Director is to host a State of STIC meeting during Smalltalk Solutions 2006. The STIC meeting and STIC open enrollment is scheduled for Monday, April 24, 2006 from 5:30 – 7:30 pm at the Metro Toronto Convention Centre.
"Allen Davis has done an incredible for job for STIC during the past 5 years, it was Davis who resurrected STIC and brought Smalltalk Solutions to the success it is today. Allen’s enthusiasm and advocacy for Smalltalk will continue with Knowledge Systems Corporation remaining on the Board to support Bob Nemec. We thank Allen and look forward to many more years of service with STIC, " said Alan Knight, Smalltalk Solutions Conference Chair.
"The decision to step down was very difficult for me, although it was the right thing to do for the Smalltalk Industry Council. Due to the success of Smalltalk, I have been overwhelmed with Smalltalk opportunities and cannot dedicate the time I would like and STIC needs in order to continue to build the Smalltalk Community, "stated Allen Davis, former Executive Director for The Smalltalk Industry Council (1999-2006).
"I look forward to working with the enthusiastic and dedicated people of STIC, and the broader Smalltalk community, to raise awareness and understanding of what Smalltalk is. Smalltalk is by far the most enjoyable and productive development environment to work with; we have a chance to make that fact self evident to a broader audience." said Bob Nemec.
Smalltalk Solutions 2006 is the premier forum for bringing together Smalltalk users, developers and enthusiasts. This year’s conference will be held April 24-26, 2006 in conjunction with LinuxWorld and NetworkWorld Toronto, advanced registration ends April 23, 2006.
To register for the conference go to http://www.lwnwexpo.plumcom.ca/smalltalk.cfm. Remember STIC members receive a 25% discount off advanced registration.
The Smalltalk Industry Council (STIC)
The Smalltalk Industry Council is a cohesive Smalltalk community where information, technical issues, new ideas and concerns are openly discussed to benefit the industry. STIC members are users and vendors of Smalltalk tools, components, databases and services. The Smalltalk Industry Council has been reorganized and reformed with the core board members from Cincom, Instantiations, GemStone and Knowledge Systems Corporation.
Smalltalk Industry Council
Bob Nemec announced my June talk to the Toronto STUG:
The next Toronto Smalltalk User Group meeting will be Thursday, June 15th, with James Robertson, Product Manager of Cincom Smalltalk. James will have just finished his talk at the Syndicate conference. This will be a good time to talk about how his talk went, how Smalltalk Solutions worked as a part of Linux World & Network World, and the state of Smalltalk
I'll be up there for the Syndicate conference, where I'll be talking about blogging from a PR perspective. Make sure to join us for drinks after the STUG talk!
This a is a case study of a mobile phone operator - the idea being to specify behavior and run tests all by filling in a few forms. A look at the issues of defining and testing a web application - present some approaches, a 2005 case study, some of the tools used. Requirements:
- Underlying business logic needs to be explicit
- Marketing oriented requirements tend to be imprecise - concentrating on user stories, providing few usable test cases. They had to feed the requirements back to marketing for verification
For testing, you cannot rely entirely on vendor testing - you need to test the configuration. The testing in question here is functional testing. To create the test specification:
- specify system behavior, end to end
- highlight boundary conditions and end points
- model the tests while system functionality is still fluid
- tests should be specified before detailed APIs are specified
- maintain traceability between tests and requirements
The Problem: A Mobile Internet Content Filter. There was no software available at the time to filter inapproriate content from mobile systems. A definition: "on-net" means on the operator's portal.
The Solution: Interpose a proxy between mobiles and "off net" (i.e., general internet) content. Apply rules to determine whether the content is appropriate. Redirect on failure of that test, allow user to change the settings.
There are a few possible outcomes:
- Access Denied (can change settings to allow)
- Illegal Page (cannot view under any circumstances - some 2000 sites are so classified in the UK)
- Allowed (normal viewing)
The "Denied" category has rules that involve the operator and their classification scheme - these become policy rules. Testing types?
- Automated tests for basic stuff
- User acceptance testing (manual)
The first is the one they needed to deal with. Test cases were based on use cases, requirements, exception conditions. Did not attempt to achieve complete decision coverage, instead using representative test cases. The tools that were developed:
- XMLSpy/Authentic - Schema per data type, stylesheets per data type
- Java - Documentation Generator, batch file to execute from files, FilterTestSuite based on HttpUnit
- Directory Load Scripts - Templates for the data files
And then a demo. The tools they created allow them to store their test cases as XML docs. The test cases are created via an XSchema driven form.
For example, consider Froogle, a fantastic opportunity for Google, given how so many people clearly start their e-commerce shopping process with a Google search. I can only believe that Google is intentionally holding back on this product for strategic or contractual reasons because I can't otherwise explain the lack of progress. Similarly with Gmail, another great opportunity to leverage the community's affinity for Google, that now is two years old and hasn't progressed much since its debut. Another terrific opportunity is the Google Desktop, but even very basic capabilities (like moving a file to a different folder) remain unsupported. And Orkut, the social networking site that launched at the right time and should have leaped when Friendster stumbled, also seems deserted by its product team. And Google Base. Why did they bother? And the list goes on.
Google has said over and over again that they are an engineering led company, and point to the fabled 20% time policy as a source of pride. The downside? It tends to lead to engineers driving off after bright shiny objects without regard to their actual value. In Google's case, it's led to a bunch of products that are 80% complete, and stay in perma-beta. Why? Likely because the relevant engineers lost interest once all the hard (read: interesting) problems were solved, and no one else there has the power to herd them toward actual delivery.
After lunch (which I skipped to exercise) and a nap (ad-hoc, in front my laptop in the common room), we're on to XML database applications with Chris Wallace. He's starting off with some XQuery examples. The backing data is in an XML database (eXist).
Heh. He says that XQuery and eXist are the most fun he's had in software since Smalltalk, which he's used since 1983. The focus with these tools is on data more than functionality. He's doing all this to explore the design space (XML Databases and Documents). In terms of information systems, the focus here is on semi-structured data (RSS, anyone :) ). The problem space includes spreadsheets, documents, ad-hoc databases, and web integrated data.
The database he's using supports XQuery, XUpdate, XSLT, XQuery extensions, and free text searching. It supports a RESTful interface (Java servlets), SOAP, and XML-RPC. One of the example applications he's working on is a Faculty Online Database - currently the data exists across Access, SQL Databases, flat text files, spreadsheets, etc. The plan is to simplify all that and still support distributed data ownership. Code:
- 3000 lines of XQuery
- 3000 lines of XSLT
- 300 of XSD (One schema)
- 10 lines of PHP (not much web work done yet)
- 25 pages online thus far
When storing data, trying to use "real world" identifiers as much as possible (names, room numbers, etc). Reduces the gap between the real world domain and the system, but it does have issues - you can easily hit duplicates (example: if I mention "Dave Thomas", which one do I mean? pragDave, or Bedarra Dave?).
In terms of data, decided against using attributes - just went with more elements. Integrity? Schema validation is too weak and too restrictive. NXD stores any well formed XML. Referential Integrity? RDBMS' are "eager, integrity failures have to be repaired outside the db. NXD - stores data on demand, but integrity failures can be persisted. repair is inside the db. XML ids only checked within a document, NXD stores all nodes with internal ids.
For information systems, veracity of the model is what's important.
Functionality delivered via:
- XQuery generating HTML
- code moving to lunction libraries and XSLT as it matures
- XQuery for request input, sessions, selection of nodes, computation of views
- XSLT to generate the interface
- CSS for presentation style
Shelly Powers decries the aggregator, as it stands between the reader and the design of a site. I can't find a better way than this to say it: I don't really care about site design. I seriously doubt that it matters that much to anyone. Shelly thinks that aggregators hurt the spread of community by isolating us from the blogroll; heck, when was the last time anyone's was actually updated? I go months without thinking about it.
Consider: before the web, there were bulletin boards. They were isolated by telephone number, limited by available modems/lines, and text only. And yet, huge communities started there. In its time, USENET had (and still has, actually) a large community - and that's all text as well. If people like what you write, they'll come back. If you tell them (by linking) who else is worth reading, they'll follow. The color styles and pictures in the browser are nice, but they're secondary. If the text isn't worth bothering with, nothing else matters.
Update: Jeneane Sessum doesn't get it either. I read the content, not the pictures. Comments can be supported via the Comment API, which most aggregators support (sadly, few feeds actually offer it). I can "walk around" the part of the blogosphere I am interested in a lot faster with an aggregator than I can with a mile long bookmark list.
Product Managers are, or can be:
- On site customers (what if you don't have any yet)
- Product owners (what does it mean to own a product)
- Product sponsors (what responsibility does a sponsor have)
- Product champions (who are you fighting against)
PM is the business process that actively manages the lifecycle of the product. It's neither R&D nor sales, but the intersection of them. "Responsible for everything and authority over nothing" [ed] - very true :). The PM role in a software firm is different from the role of a PM for a "physical" product.
Focus of this "think tank" session: what does a PM do, how do they do it. What skills/traits are needed, and what sort of organizational support?
The session was a set of exercises meant to make us think about the process of product management - the outputs for that will end up on a wiki in the next few weeks; when that happens I'll update the post.
Today's invited talk is on project retrospectives, and a retrospective on the book "Project Retrospectives" by the author, Norman Kerth. The idea: after a project (any sort), it's a good idea to sit back and discuss what lessons were learned from it.
It's not enough to just gather and identify "what went wrong" and point fingers - the idea is to have the retrospective become a post project ritual that focuses on learning, not blame. For purposes of the retrospective, assume that everyone did the best job that they could at the time with the skills/tools/resources available to them at the time. Example: The campfire discussion of the buffalo hunt in "Dances With Wolves". The upshot: No one person has a complete picture of what happened - you need the perspectives of all the participants, so you can see the things you missed.
Important - you want an "atmosphere of safety" in order to get honest (and complete) feedback. The key things to learn in a retrospective:
- What worked well?
- What have we learned?
- What would we do differently next time?
- What still puzzles us?
- What needs furher work?
The way corporate culture changes is by changing the stories they tell about themselves. Constant learning implies a continual change in the way work gets done. Many organizations simply don't want to change. Some teams do want change:
- Agile teams
- Software Process Groups
- Teams at Wits end
- Consulting firms
- Highly Dynamic firms by design
- Disaster Response teams
Retrospectices can also be useful after milestones are reached, or after a merger, or after a manager/lead has been replaced. in other words, after an important event.
Good question: What do you do about people who lie, or spend their time working to undermine someone else? The idea is to focus on the events that happened, not on the people themselves. Seems to me that this might require a highly focused facilitator with many teams.
Anyone remember the disaster that was the CORBA security serice, or the CORBA resource management service? Well, it looks like the WS* working groups want to revisit the chaos. Tim Bray surveys the damage.
Hey, Chris Abraham, I'm an anti-smoking fascist. It's one thing I appreciate about California. Have you noticed that the housing prices have gone up continuously since smoking was banned there? Hmmm. Glad to hear Scotland is joining the fascist groups. When we got back from Europe EVERYTHING stank. Yuch.
Hmm. This is all good so long as the "nasty habit" being banned is something you don't like anyway. The trouble is, when the "it's not good for you" nannys get started, they don't know where to stop. Second hand smoke bothers me a whole lot less than the self righteous fanatics who want to "help" me.
Michael Feathers, Bruce Anderson, Jason Gorman, Dave Thomas (pragDave), John Daniels, James Dobson are on the panel. It's clearly not a completely serious effort :)
Web 2.0 - what is it, and where can I buy it?
Dave Thomas - a huge success in marketing, and he's not sure where you can buy it. Web 2.0 is all about making browsers suck less (AJAX, asynch updates, etc). There's no worse place for an application than a 3270 that also gets porn - are we putting more and more lipstick on a pig? He's saying that the browser should be dead, and we should be moving to smarter clients. For a lesson, look at how the next generation plays video games - why can't we produce applications that are as useful as that? We need a more immersive, useful environment.
Michael Feathers - Yes, the browser model is somewhat broken, but it's non-proprietary. It's lousy, but it works.
Audience question - what about Flash? Michael says yes, it's definitely part of Web 2.0. Jason says it's unclear what Web 2.0 even is. It feels like something I already have, but with a cooler name. Bruce - keeps thinking about Google Earth. A large part is that IT shops like the browser because of the low maintenance aspect of installation.
Audience followup - what about mashups? Browsers enable it, it looks cool, but how maintainable/scalable is it? Dave: XML should have been shot at birth. DJ's (music) are an example of mashups. HTTP's advantages: dynamic typing and port 80.
Automatic vs. Manual Tests: What do you recommend?
Jason - manual tests are run once as a sanity check, so that you know what's being done. Then move to automation.
John - don't do manual testing - automate it. You'll find that you won't need manual tests. James: what about more ad-hoc testing that still needs to be done? What about UI tests? John: Talking about system/acceptance testing more than unit testing. Michael: as many automated tests as possible is good. Manual testing is useful for "exploratory testing", when you are trying things out. James: User Interface testing, when we are talking about subjective judgements, cannot be automated.
Audience feedback - Manual testing is error prone and cannot be as predictable as automated testing. Dave: testing is a design/analytic tool as much - or more - than a bug finding tool. In this case, the question becomes meaningless. All the testing is manual, with some of it becoming automated over time as we move through development. Michael: Testing tells us about the design, and provides a frame for "holding it up". Michael: We've moved from BDUF to BTUF (Big Test Up Front). We've gone too far.
What are the best motivational techniques for developers?
Bruce - I like to see developers taken seriously. It's about being genuinely involved in the task at hand.
Jason - Need to be able to "put my stamp" on things. Being able to walk away and say "I was there".You lose motivation when you aren't taken seriously
John - I only hire developers who care about what they are doing. There are the 9 to 5 types, and the people who attend conferences like this. If you have the latter, and you give them the space to do what they are good at, then you'll get results.
Dave - No way to motivate, but tons of ways to de-motivate. It comes from a lack of respect.
Michael - Different people are motivated differently. A lot of self selection happens.
Bruce - At IBM, we get involved in large projects, where you might fear death marches. We find it's easy to attract people to the challenge.
Audience question - What about the tension between what product management wants/needs, and what developers want/need? Need more and better communication to bridge that gap. Feedback - it can be very demotivating to end up doing what you are sure is not the right thing.
Is Management the root of all evil?
John - I'm pretty sure it's no :)
Dave - Listening to managers is the root of all evil. You have a responsibility to say no if you think you are being told to do the wrong thing.
Jason - Money is the root of all evil. Managers are just the weed growing around the mony
Bruce - A good manager shields developers from the day to day "crap" that crops up.
Michael - Bruce just described good management. Too many organizations have people who cannot understand the ramifications of bad decisions.
John - it's about having a good relationship between managers and developers. It's about mutual respect toward common goals.
Audience question - Should managers come up from technical staff? Jospeh: would prefer someone who understand what's going on. We are in one of the few professions where we have managers who do not understand technology. Michael: Do leadership and management have to be the same? Dave: Some teams need a strong tech lead, some teams need a non-technical manager. It depends on the team. Michael: You want the soft skills, regardless.
I'm in Dilbert Hell. What do I do?
Consensus: Get another job, or if not possible, find a hobby.
Microsoft's Robert Scoble, who cowrote a book on corporate blogging called Naked Conversations, now seems intent on turning himself into a case study for why companies shouldn't blog. The posts on his company-sponsored blog, Scobleizer, have become increasingly shrill and antagonistic of late.
What Scoble brings to the table is an open voice. You want marketing? Go look at those stupid dinosaur ads. You want honest? You'll have to take the good with the bad. I don't always agree with Robert, but I give him a lot of credit for his openess.
First the "IT doesn't matter" thing, now this. It's almost as if Carr desperately wants attention or something.
The afternoon session I decided to attend is Michael Feather's talk. With luck, the Capucchino will keep me awake during the talk :)
For purposes of this talk, "Legacy Code" = "Large existing codebases that lack any real tests" - i.e., the language of the codebase isn't relevant. Michael started with a desire to do XP 6 years ago, but he was transitioning from a dirty codebase - as opposed to the C3 project, where they mostly abandoned the legacy codebase and started over. So, what are the possible approaches?
- Pretend the existing code isn't there
- Use TDD to create new classes, make direct changes to the old ones, hope they are correct (tends to miss code coverage)
- We'd like to be more conservative - i.e., avoid going back to the existing code for changes
- Is that viable?
Heh. His first example is a "legacy" C++ HTML generator. Sadly, it doesn't look all that different from my original HTML generation approach for the Silt server. I've gotten smarter about that over time, but it's an example I can definitely identify with. The testing approach to use here is one of documentation - the idea is to have tests demonstrate what the code does. Michael calls these characterization tests.
When you have legacy code, try not to add inline code to it. Instead, write tested code in new classes and methods, and delegate to them (IMHO, this can lead to interesting maintenance problems itself - hard to understand code). The techniques for doing this are called Sprout Method and Sprout Class. Interesting sideline here - refactoring is harder in a C++ codebase, due to the lack of good tools.
So the question is, why is he advocating a conservative approach? There are no tests for the existing codebase, so making changes can introduce unintentional (and hard to find) errors. Most of the development in this case is about preserving existing behavior. Most applications are glued together - we only find this out when we test pieces in isolation (unit tests). Some examples of glue:
- Internal Instantiation (class creating a hard coded instance of another class)
- Concrete Dependency (when a class uses a concrete class, you'd better hope that class lets you know what is happening to it)
Tools matter a lot here - having the ability to safely extract methods and interfaces in the IDE help a lot. If not, then it's all manual (and harder). Breaking dependencies can get ugly. The Legacy Code Change Algorithm:
- Identify Change Points
- Identify Test Points
- Break Dependencies
- Write Tests
- Refactor Change
What about testing expensive operations? i.e., you don't want to call the real method in test because it will take too long (computationally expensive, lots of db interaction, whetever). There are mock frameworks for various languages, and you can always use polymorphism for test purposes. The rationale here is that you want to replace behavior without changing the base method. Sounds to me like people using C++ are on the short end of the stick here :)
- Extract an interface - safe for legacy code, but can take a little time. Mock interfaces stand in for real ones. The list of things to watch out for in C++ is long.
- Extract Implementor - like extract interface, but we push the code down instead of up
Up next - a test exercise using Java or C#. Heh - I translated the Java code to Smalltalk and then did the exercise - as fast as everyone else refactored :). Interesting discussion over interfaces (Java, C++, C# - all of this is implicit in Smalltalk). The whole exercise dealt with parameterizing constructors, and then went into parametrizing methods. All one and the same thing in Smalltalk. From how these exercises are going, it's very, very obvious that it's tons easier to restructure and refactor code in Smalltalk than in the languages being used here.
What about methods in classes that cannot be (easily) instantiated? Try making it a static (Class, in Smalltalk terms) method until the mess can be cleaned up. "Utility classes" - ones with all static (Class) methods are a problem as well. Bottom line, the methods aren't where they belong. Preserve signatures, but create the appropriate methods in the appropriate classes.
Ahh, templates. Saved by dynamic typing :)
Summary: Tests are the ultimate safety net, providing an "exoskeleton" for your code. Fascinating thing at the end: We have to develop languages and tools which make it easier to recover. Smalltalk is not a silver bullet - you can write bad code using any language or toolset. However, I claim that Smalltalk makes it easier to get yourself out of the corners you code yourself into.
It's been a long set of travel, but I'm now at SPA 2006. The train from Gatwick was easy and pleasant - much simpler than driving, as I did last time. I'll be attending one of the afternoon sessions - haven't decided which one yet. Should be a good week - this is a small, fairly intimate conference.
Tim Bray wrote a long column about analysts awhile back, and I finally have time to comment on it, seeing as how I'm stuck at 30,000 feet with a bunch of flagged items in BottomFeeder. Here's an anecdote Tim used to jump into the post:
The perception of corruption, whether it’s true or not, hasn’t gone away. Shortly after I joined Sun, I was trying to figure out why large parts of the industry seemed hell-bent on re-creating CORBA, only more complex and less efficient, under the WS-* banner. One senior technology strategist, not from Sun, told me “Obvious! It’s because IBM and Microsoft paid the analysts megabucks, megabucks I tell you , to go out and tell everyone that this was where the future was, and anyone who wasn’t going that way was dog meat.” Mind you, he’d had a few beers. But that’s not the only time I’ve heard that particular suggestion.
I have to agree with Tim's quoting of an old standby for this: "Never ascribe to malice that which can be explained by stupidity". Industry analysts aren't evil, and they aren't all on the take. I'm sure some are; there are bad apples in every field - and trade analysis is hardly immune. That's not the main problem though. The analysts are looking for the same thing that IT shops and vendors are looking for: The next big thing (tm). IT managers want to know what it is, because there's safety in numbers; if "everyone" is using a certain technology, then the thinking is that support will be easy to find, and it can't be too bad. Analysts want to be ahead of the curve, so they are scanning for that "big thing" - because once they find it, they have something to point to.
What that leads to isn't corruption, but herd behavior. Without consciously working at it, IT managers and analysts reinforce their own preconceived notions, and are prone to jumping on bandwagons. Witness the rise of OO as a buzzword, relational databases before that, and Java and WS* more recently. It's not that these were necessarily bad, even - they just became reinforcing memes that spread across the tech landscape. So what you end up with is a system that can easily be construed as corrupt - the big analysts are pushing the big technologies that the big vendors want to push. I think the actual behavior is more subtle than that, but - as Tim says - it's certainly a perception problem for the analyst firms:
It’s a problem for the analysts, and their customers, and for the industry, that there’s this elephant in the room. Because I totally believe that we need analysts. I know for a fact that there are those who read people like me and Don Box and Bob Sutor and use what we say about Java or messaging stacks or ODF as serious business input. But dammit, we’re vendors, our paychecks depend on selling you expensive stuff! At least with us, our hearts are on our sleeves and the conflict of interest is screamingly obvious.
It seems that in a rational world, there’d be a place for professional intermediaries; someone who has a non-tech business to run doesn’t really have time to drill down on whether crazies like me who are dissing WS-* are right or wrong. They should be able to outsource that research. (By the way, no analyst from a mainstream firm has ever raised the WS-* issue with me, which seems a little weird).
I think analysts are going to have to do what Tim suggested - they are going to have to disclose, using journalist style ethical standards, what vendors are paying them, and how much they are paying them. As Tim said, with us vendors the bias is obvious - don't come to me, for instance, if you are looking for an objective opinion about Java (or Smalltalk, for that matter). The analysts, on the other hand, are striving to be that objective voice. They need to make sure that the audience can make a judgement call based on all the inputs.
Looks like there's a new mailing list, set up by some of the European Squeakers. This one is intended to coordinate Smalltalk meetups and parties. Check it out here.
I can tell that Gold status on American isn't what it used to be - I'm sitting in the middle seat here, and the only saving grace is the power port. We left Orange County at 8:45 am, and I have a full day of travel to look forward to - I arrive in London tomorrow morning. Then I'm hoping I can decipher the rail schedule well enough in what I'm sure will be a dazed state to get to St. Neots. Ahh, the joys of travel...
I think the best way to address James McGovern's latest post is to translate it. So, let's hone in. He says:
Lot of folks have chimed in on a previous posting on Ruby and responded with passion and supplied their own perspectives but zero facts.
Translation: "Lots of people chimed in with words I didn't understand. Many of them brought up actual examples, and that's, like, so totally unfair"
Still another perspective is that I am a thought follower and defer my entire thought process to the wisdom provided by large consulting firms. Wrong! I simply acknowledged that this is a behavior whether right or wrong hapens in corporate America.
Translation: "I'm a thought leader, damnit. Do you see anyone else following me? And when I said that big consulting firms were all that mattered, people twisted my words by taking what I said literally. Fargin Bastages..."
I still cannot stop laughing about the postings regarding me being too enterprise. These are from folks who have obviously never met me or even engaged in an open conversation. I suspect their perspectives would change if they did so...
Translation: "How dare people take my words at their literal meaning!"
He then presents the world's most constricted set of rules defining what he actually meant to say - until tomorrow, after yet another person presents him with one of those fact things - something he's clearly never understood.
The sky is a different color where McGovern works.
I have the rest of the day in LA, and then it's on to London tomorrow morning. I'm going to hate myself for setting this trip up; who knows how conscious I'll be when I get to Gatwick (at 7:15 AM local time)? That's why I've decided to ditch the rental car idea and take the train. According to the SPA 2006 site, it's possible to take a train all the way to St. Neots, which will allow me to doze off on Monday without fear of the M5. That's always a good thing :)
Apparently, it's all about Steve Gillmor:
Mike Arrington missed the Gillmor Gang taping today, even though he changed his travel arrangements to be there. I forgive him, because he's understandably starry-eyed by his lunch with Bill Gates at the Mix06 conference. But I don't forgive Robert Scoble for not inviting me, or Waggener Edstrom either.
Geez, the world will somehow manage to spin up tomorrow, even though Gillmor didn't get his lunch date with Gates. The rest of his post is even more grating than the opening. Someone needs to deliver a huge sign to Gillmor, that he can hang in his office: "It's not all about you"
Techmemeorandum notes that Office is going to be late, just like Vista (pushed into 2007). This is why I thought that the anti-trust suits against Microsoft were a waste of time; the company has spent the last decade on a dubious over-coupling mission they call integration. The upshot is this - virtually every one of their mainstream products are now mutually dependent, in ways that make timely delivery difficult to achieve.
When IT shops end up in this place, they typically start over, placing the existing code into a maintenance mode. Microsoft's options are a lot more limited; they have an enormous customer base that is dependent on backwards compatibility. If they broke that for the sake of a more maintainable future codebase, they would simply be giving people a reason to seriously look at the Mac platform.
Back from dinner (stuffed), and I have the rest of my pictures ready to go. First, a shot of central gardens from above:
Next, a shot of what looked like a Mission from the Getty:
Back inside, they have a really nice collection of medieval books - when you look at this one, bear in mind that it was all hand written!
Finally, a shot of the Getty Museum from below as we crawled along the 405 on the way back to the hotel. Except for this, it was a great day.