ot2004

Getting your story straight - User stories in XP

March 30, 2004 5:59:15.357

This session is going to talk about:

  • What an XP story is
  • How stories differ from Use Cases
  • Where analysis fits in the XP Process

On site customer - proxy for all the stakeholders (ed. - politics). The on site customer is used instead of documentation.

Q - What about maintenance phase, which is 80%? What about doc for that?
XP - XP is weak in this area.

On site customer needs to know the system requirements, Communicates context, required outcomes. Prioritizes work based on business value. Available to answer questions

Stories
Stories should be of a size where you can build a few of them in an iteration. Stories are time boxed by definition, and should be between 1 and 5 "ideal" programming weeks.

Q - What about projects that may well span much more time than that?
A - XP is not a silver bullet - not all problems can be solved via stories").

Story format is not important. Has a title, concise problem statement, sketches of screen layout, etc.). Now the group is discussing how you fit in things like refactoring (etc). Some things aren't part of the explicit customer stories, but are part of their implicit desire for a maintainable, working system. Side note on my part - I can see an RSS feed for stories being a very nice fit :)

Acronym Invest

  • I Independent
  • N Negotiable
  • V Valuable
  • E Estimable
  • S Small
  • T Testable

Unit tests are not enough, we need acceptance tests as well - "When I do tis action, I expect this result". Ideally, test suite should be automated. The tests help you collaborate with the customer and iterate towards "what they meant" as opposed to "what you did". This is easier said than done, IMHO.

So - why stories on index cards? Because you can't overdo it - can't fit much text on a card. Easy to get everyone involved.

Pitfalls

  • System requirements may be too large to fit in customer's head
  • Customer does not have time to do their end
  • Customer is not on site
  • Customer blind spots (missing tests)
  • Losing parts of stories
  • Customer team, many voices
  • If customer spends "too much" time with the team, may lose touch with business stakeholders

Shoring up - Multiple customer teams? Story repositories?

Exercise
We took a simple order entry (CRUD) system. Split into roles (customer, QA, developers) and develop stories. Then, passed stories along to next table to look. As it turns out, the stories we received were much more complete than the ones we sent along - we were very incomplete. basically, we did not include enough story detail, and mostly omitted acceptance tests. The results were mixed - two groups created stories with tests, two groups (like ours) created decent stories and tests (within the time constraints). Very interesting exercise, opened my eyes on this area.

 Share Tweet This

ot2004

Dispersed Development

March 30, 2004 7:18:56.934

This is a case study presented by John daniels and Paul Dyson

What they are going to cover:

  • Multiple teams - each team in one office? Not the topic
  • Satellite Workers - most in one office, some remote workers. Not the topic exactly
  • Dispersed team - Every team member is remote - this is what they are covering

Why do it?

  • Cost (lower)
  • Get people who do not want to travel/relocate
  • Constrained by circumstances - (personal or business)

Case study, source: JD. Two FNL projects covered here. Both were part of a larger project

  • Specialized Workflow engine, 2 people, fixed price, 5 months, server based (EJB), no UI
  • Information management system with 4-6 people - T&M. Lot of interdependence between this part and others. Large EJB/J2EE project, 6 months

Case study - source: PD

  • Integration of web services provision for internet platform. 4-5 people, fixed price, Java web services, no UI
  • 4-5 people, 9 months, Java, multiple interfaces, migrated from office environment. Tried to develop a product from (1)

Working Environment

Needed:

  • Full broadband (beware upload chokes!) - needed cable/DSL
  • Phones plus conf calls
    • Could use VOIP for one to one
  • Powerful machines for team.
    • Beware desktop sharing over net with large displays
    • Install complete platform at each site - so need power at each site
  • Wiki for sharing
  • Version control system that works in this fashion
  • NetMeeting for collaboration
    • VNC or equivalent
  • IM for chat/see who's around
  • Security (physical and cyber) - in practice, ignored many of the customer requirements for physical security)
    • Firewall
    • IPSec encryption (same router at each site)
    • Encrypted email (PGP plugin)
    • if appropriate, encrypt HDs

Issues

  • Tool support for this is currently very weak (very ad-hoc)
  • Supporting multiple/varied desktops is very hard. Everyone ends up being an SA.

Interacting with the customer

  • Initial face to face meeting (ongoing)
  • cannot support regular XP model of an onsite customer
    • More expectation mgmt needed - lack of shared experience in team
    • More formal review periods
    • Need to schedule customer time, as it is not going to happen otherwise
    • Need more doc - without direct interaction, necessary
  • Issues need to be resolved by phone/chat/wiki
  • Customers had no access to the environment (VPN or servers)

FNL Example
  • Customer had already donse some prototyping
  • Customer had done extensive business analysis
  • Jointly produced feature list
  • Had access to their intranet and repository
  • They were happy to use dispersed dev - saved desks/space

e2x

  • Many onsite meetings for clarification
  • 2 - 3 week iterations, delivery after each
  • 1-2 days onsite to assist with integration at each step
  • 1 week onsite to really integrate

This latter project was hard

General approach

  • Evolutionary approach
  • Short iterations
  • Daily "stand up" meetings
  • features vs. tasks - used tools like the Wiki and spreadsheets to manage the difference

One thing learned - used Wiki as a "virtual wall" of cards for the project. Very difficult to enforce without discipline. Worked well, but the team needed to think about it. The actual development process was not a lot different from normal - other than the need for on site delivery and integration - in a full on site job, would have been more natural.

Designing the System
Needed to do early architecture/design work in up front face to face meetings. Worked better face to face, later on used shared desktop with virtual whiteboards. Did this in UML, used Rose (somewhat). The process was API driven (from the EJBs). Design doc was produced after the fact, not during or up front. Revisiting the design decisions were more important than in a "normal" XP process, as there is less lunch/coffee (etc) side conversations. Needed to make up for that lack. Ran up against poor tool support for dispersed diagramming.

Team Organization
mixed pairing with "buddying" - work alone, but check in with buddy on a regular basis. When pairing this way, agree on how work was to be done and split it up. Work as a pair until complexity was understood, then just go off and do it. One common split - tests vs. implementation. Most tasks were paired, there was the odd singleton task on the e2x project. In response to a question, code review and code quality takes extra work.

Programming Technology

  • Eclipse
( CVS
  • Eclipse and Tortoise clients
    • Server running on spare PC (Server hosting)
    • e2x later switched to the tool they were building (Cyclex)
  • Pair programming with NetMeeting
    • Slight delay over wire if you are not the driver (mostly ok)
    • re-synch to version control to switch driver
    • Mostly worked w/o problems!
  • Varying degrees of continuous integration as a result (IMHO, not a lot different from normal process issues)

  • Process for programming tasks
    • Sketch the ifc
    • Code the tests
    • Run new tests
    • Code the implementation
    • Run new tests
    • Iterate until pass
    • Run all tests until integrated
    • Check in
  • test focused rather than simply test driven
  • Updated user abd design doc before each software release

Project 2 FNL

  • Used customer repository
    • No Eclipse integration
    • Couldn't use NetMeeting while connected to their repository - made pairing very tedious
  • Pairing over NetMeeting via ADSL
    • Once VPN worked, easy
    • audio and desktop sharing worked well over VPN

Project e2x

  • Who's got the monkey?
    • Used an actual "monkey" toy in the office, what to do remotely?
    • Use IM (did not work as well)
  • Lack of "overheard" conversations
    • Interruptions are worse than when co-located (other phones, door, etc)
  • Latency makes swap over a problem
    • Poor support in CVS
    • Supported in Cyclex

What about Testing?

  • General
    • Focus on functional tests - are unit tests still important? They think less so
    • Used JUnit
    • Automated one click testing critical
  • FNL
    • When paiting, both developers had to get all tests to pass on their machines before it was agreed to be done - the "it works on my machine" problem

General Advice

  • Shared understanding of the tasks is crucial
  • e2x: Does work with people you don't know. Works better with people you do know
  • FNL: Only employed people that they knew already
    • Minimized start up time
    • Minimized cultural/personal diffs
  • Face to face - especially with customer - is still crucial!
  • Important to establish working etiquette as you go along
  • Allow time for setting up the infrastructure (VPNs, databases, etc)
  • Test focused
  • Maximum team size limit? They have done 5-6

Discussion session

  • One thing that comes up is that all interaction has to be more considered - and somewhat more formal - than in an office environment. John Daniels: This form of pairing is actually more productive (admittdely, anecdotal).
  • There are times and tasks where people work more efficiently alone. Remote development with buddying allows for that

 Share Tweet This

development

Anti-usable libraries

March 30, 2004 7:20:33.608

Ian Bicking points to an interesting post that takes Java to task. Bob Congdon also comments, and points to this take on the topic from a Perl guy. Sounds to me like there's a growing desire for more dynamic languages, even inside the Java community...

 Share Tweet This

movies

No No No....

March 30, 2004 8:09:50.694

Sci Fi Wire reports that there will be a new X-Files movie. The series went off the rails a good three years before it ended, and the first movie was pointless. We need more... why?

 Share Tweet This

ot2004

How to fail at XP

March 30, 2004 10:14:15.267

This one comes from Keith Braithwaite of WDS Global and Steve Freeman of ThoughtWorks UK.

We are going to

  • Seed some stories
  • Break into groups and share stories
  • Each group to discuss their stories and extract 3 anti-patterns
  • Each group will present their anti-patterns
  • Pick top 3, discuss

Dissenters should be tolerated as long as possible, but no longer:

  • Some people take time to convert, give them time
  • One "Professional Skeptic" can bring everything to a halt
  • Special treatment for the squeaky wheel can cause resentment amongst the rest - possible on a non-XP team, virtually impossible on one

Proxy customers must remember their place

  • Very few people saying they are doing XP are - most have a proxy customer, not a real one (Product Manager?)
    • Knowing the solution domain well does not imply knowing the business domain well
    • Having a proxy available when the real customer is not available can help
      • Can blow up if they forget that they are not, in fact, the customer - end product will then answer the wrong question(s)

Must be prepared to pay the cost of fixing the mess

  • Decent engineering is expensive to retro-fit
  • Customers will not see any progress from this - they will start to think you are "wasting time". Unclear how to do this well. Only real solution is constant checking, or deal with catostrophes as they occur
  • Probably won't like the extra discipline... they don't feel the pain

You need to be doing other good stuff beyond XP. There's not a lot to XP - it's light. What's not part of XP that is necessary?

  • Small design up front doesn't hurt, and will definitely help. Not BDUF....
  • Many people do not absorb the rigor required - especially if they have only "read the books" and not discussed it
  • Version control - surprising number of teams don't
  • Test/Code/Refactor is necessary but not sufficient. Have to have skill, it's not a silver bullet. There are process/interpersonal issues as well. You can run down refactoring rabbit holes, for instance....

Don't frighten the customer

  • Most orgs adopting XP have other, non-XP projects. Don't be a full-time evangelist
  • Over emphasizing it can be dangerous, and get you labelled as a "religious fanatic"

Stand up to the Customer

  • Customers drive the project
    • Doesn't mean they are always right or know what they always want
    • Developers can be frightened of customer, and not question them, even when they "know" they are wrong
    • This can end up delivering the wrong solution to the wrong problem

Step up to the customer role

  • The "Real" customer is unavailable
    • lack of feedback and direction increases risk - recall the "remember your place" in the proxy customer role
    • Someone in that role is better than no one...

The exercise - come up with a few anti-patterns and proposed solutions. We came up with:

Create a Customer

  • There is no customer
  • Without a customer, rat holes abound
  • Some projects - such as vendor products - lack a single definable customer

Get a new Bo peep

  • Need a working team
  • Coach leaves
  • Lost Sheep after coach leaves

Hire experienced people

  • The blind leading the blind
  • They fall off the clock
  • There's no substitute for an experienced coach

Other examples

Timely shutdown

  • No customer - shut down the project (don't let marketing run wild
  • Seeing the Forest and the trees - Lots of apparent chaos - step back, find the ball
  • Right Rewards - Align incentives and development goals with reality and actual business goals

Personal Space

  • 24 hour pair programming
  • Not accomodating the individual
  • Cabin fever - learning needs

Single Voice

  • You have multiple customers
  • You cannot serve two masters

Escape from refactoring

  • Refactoring paralysis
  • Stalled/No progress
  • "The perfect is the enemy of the good enough"

Quarantine

  • Small XP team in large company experiencing growth
  • XP Team absorbed back into "mainstream" - XP practices lost
  • Protect the team, keep it separate

Others I didn't quite get down - "Stealth XP" and "Explicit XP"

So we have a vote to determine the top three:

  • Timely shutdown
  • Personal Space
  • See forest and trees

The voting results came back differently than at the Benelux conference - they all came back with issues surrounding customer relations, whereas we came back with technologist/team issues. Likely because this group is a technologist, but not necessarily doing XP. The Benelux conference was an explicitly XP Conference.

 Share Tweet This

marketing

Windows in China?

March 30, 2004 10:14:32.704

Interesting comments on software and piracy from Steve Ballmer in Information Week relative to piracy and marketing:

In fact, our market share relative to Linux is better in China than almost any other country in the world. It might be our strongest country. You might say, hmm, that's odd. But countries that have high piracy, you could say in a country like that, our acquisition cost is the same as Linux. I don't mean to sound facetious, that's not where we want to be, but really, for most people in China, Windows and Linux cost the same amount of money. I was in a book store when I was in Beijing last time, and I see all these copies of Windows in a funny-looking package for $2.50. Then, way in the back, behind a lock and key, I actually found a Microsoft Windows for $99. It was our copyright--you couldn't see it, it was collecting dust, it was behind lock and key. The $2.50 version was the popular version.

Now that's fascinating. Ballmer has seen piracy first hand - of Windows - and seems to recognize that it helps his company in China in the short term. Eventually, there will be better IP control in China - but in the meantime, the market is figuring out what it likes. Attempting to shut that down will only hurt them. There's a lesson in that...

 Share Tweet This

rss

Interesting comment on the validator

March 30, 2004 12:02:35.167

Dare (in Sam Ruby's Comments):

Sam, Thanks for adding this to the validator. On a related note I'd like to thank you and Mark for writing the feed validator. I've lost count of the amount of times I've gotten mail or bugs filed about how some feed doesn't work in RSS Bandit which was quickly resolved by sending the person to the Feed Validator.

I don't think I'd say that sending someone to the validator solves a problem - I've taken that tack with users, more than once. It might work with a tech user; it's generally not going to wash (and hasn't washed for me) with general end users. Like it or not, users consider a failure to read available content to be a bug in the aggregator. It really doesn't matter who's fault it is; all the end user knows is that they can't read the content. That's why my tack has been to have the parser log errors but not blow up, if it's at all possible. I flag feeds with errors visibly, so that users who care can notify the source provider.

Even then, it's not that simple. I've notified source providers that there's a problem before, and more than once the issue has not been solvable by them - the error is part of the template used by their provider, and they have no easy way to fix it immediately. To my mind, simply pointing at the validator and saying "Not my problem" is punting

 Share Tweet This

ot2004

Naked Objects

March 30, 2004 16:56:56.081

Naked Objects - a BOF session after the end of the normal day here. Naked Objects - oddball thing about the name - book lookup on Amazon yields some "interesting" nearby subjects

The idea - to get rid of all the extraneous things - reduce to the leanest, bare essentials. Four layers in classic architecture:

  • Presentation
  • Application/Controller
  • Domain Object Model
  • Persistence

Naked Objects eliminates the controller layer - encapsualtes all business functionality on the entity objects (note - this elides any issues with session access to behavior that is permission based). Make the presentation layer generic. Make the persistence layer generic. In theory, generate the presentation and persistence layers from the domain model. I detect MVC being reinvented in the Java sphere :)

An example - conference registration:

  • BOF
  • Delegate
  • Room
  • Resources
  • Company

Noting that a delegate can be part of a company. The demo proceeded using Together/J to build the domain using UML (ed. - I am historically very wary of this kind of tool and development model. In particular, I find it easier and faster to just use a browser :) ). After building the four domain classes, a build yields a simple set of classes that have some basic UI behavior (not unlike a Smalltalk inspector, although less powerful than Trippy to be sure). Relationships? There's a visual programming way of doing that (like PARTS, noting that we've been there, and it doesn't scale...). Important note on that being that the Together/J linking behavior is not a necessary part of Naked Objects - it's a part of Together/J that is independent of what you are doing.

My main concern would be the assertion that we can make the UI generic. In my experience, lots of work ends up going into the UI that is only marginally related to the domain - ways that the UI can be configured by the end user (in BottomFeeder, for instance, the ability to zoom/unzoom different parts of the UI, and how that depends on the current UI state. I guess I just have a hard time with the notion of a generic UI. It flies in the face of what I've had to do with Bf.


Now a second session on ModelScope - a prototyping tool. The notion is model driven prototyping, using state transition diagrams. The tool interprets that to create the model. No code generation from the tool - it generates models. Events change the system, but may not be associated with a single object - thus the usage of state transition diagrams. No GUI for the front end, so things are loaded from a front end text file. They have an engine that generates models.


MODEL OT2004

OBJECT BOF
	NAME BOF Name
	ATTRIBUTES BOF Name String
	STATES proposed scheduled cancelled
	TRANSITION @new*Propose=proposed*Schedule=scheduled @any*Cancel=cancelled

OBJECT Room
	NAME Room Room
	ATTRIBUTES Name Name	String
	STATES available
	TRANSITION @new*Make Available=available available*Schedule=available

EVENT Propose
	ATTRIBUTES BOF BOF 	BOF Name String

EVENT Schedule
	ATTRIBUTES BOF	BOF	Room Room

EVENT Cancel
	ATTRIBUTES BOF	BOF

EVENT Make Available
	ATTRIBUTES Room	Room	Room Name String

Then you run the model generator (ed. - Java based - wouldn't Smalltalk or Lisp be way, way easier for this sort of thing?). You get a model that allows you to work with the state transitions as they have been defined. Hard to tell much at this point - needs more fleshing out.

 Share Tweet This

humor

World ending events

March 30, 2004 17:43:57.775

Ok, Likely everyone's seen this one already - but I couldn't resist. Via Madbean:

"The most likely way for the world to be destroyed, most experts agree, is by accident. That's where we come in; we're computer professionals. We cause accidents. -- Nathaniel Borenstein"

Heh

 Share Tweet This

ot2004

How to design Good APIs and Why they Matter

March 31, 2004 4:05:06.090

Plenary session on 3/31 - how to design a good API - and why it matters. Given by Joshua Bloch, senior staff engineer at Sun. The need for good API's remain as languages and platforms change - what do we mean by APIs here - the public interface to a component or sub-system. There are going to be examples (good and bad) given.

Why is API design important?

  • APIs can be amongst a company's greates assets
    • Customers get attuned to the apis that they have studied, and write (and buy) code that is aligned with those APIs
    • APIs capture and retain customers
  • A badly designed API is an unending source of support calls - and public APIs are forever. Once it's loose, you can't change it - you can only add to it

If ypu program, you are an API designer. Each module you create ends up with an API - either real or ad-hoc. Useful modules tend to get reused. Once you have users, you are not at liberty to change it - people rely on it. These "private" apis can be an asset or a liability.

Good?

  • Easy to learn
  • Easy to use, even w/o doc
  • Hard to misuse
    • Bad ones will be easy to misuse
  • Easy to read and maintain code that uses it
  • Sufficiently powerfil to satisfy requirements
    • But not too powerful
  • Easy to extend
  • Appropriate to audience - no such thing as a "perfect" API for everyone

Methodology for API design - there are a few things that tend to lead to good API design. Gather requirements, and be skeptical. The audience will tell you what they want (may be different from what they need). Extract the real requirements from what you get told and what you observe. Use Cases are the best way to do this - what are the easiest things to accomplish with that API? Do the Use Cases look good when using the API? If not you have a problem. It can be easier to build something more general than what you are asked for - but don't go to "framework-itis

Start with a small (1 page) spec. Agility is good at this point. Bounce the spec off of as many people as possible. Keep the spec to a short description and method names - flesh it out only as you gain confidence. Shop it around while it's simple. When you get a large spec, it's hard to change (and involves politics).
Write the API before you implement it. Saves an implementation that may be useless. Start coding to it when it's a 1 page spec to test (TDD driven API design?). Continue to write code against the API as you develop as a constant check against it.

Writing to an API (Service Provider Interface) is even more important.

  • Interface for supporting multiple implementations
  • Example - Java Cryptography
Write implementations against it before you release it to avoid large risk of failure - more than one (3 or more is best).

Keep expectations realistic. Won't be all things to all people. "Aim to displease everyone equally". Say you have 6 customers - 5 happy, one angry - not good. 6 grumbling "can work with it, but..." - likely ok. Expect to make mistakes - you'll make them, and you'll have to evolve (NOT change!) the API.

General Principles - should do one thing, and one thing well. Use good naming. If it's hard to name, it's a bad sign of code smell. Bad names mean poor understanding. Be open to refactoring (splitting and merging modules). The API should be as small as possible but no smaller (Occam's razor). When in doubt, leave it out - in terms of classes, methods, functionality - they can be added later, but once it's there, it's there. Conceptual weight is more important - how long will it take to learn the API? A Java example - if you implement an interface that is already there, people have a guide.
Implementation should not impact the API. Implementation details constrain you and confuse users. Don't over specify (e.g., don't specify the details of a hash function...). Don't let implementation details leak into the API. Exceptions, on the wire, or on disk formats are good examples where leakage can hurt. The initial Java String hash function (which they almost had to live with) was very bad. Actual is better, but still specified (bad).

Minimize accessibilty - maximize information hiding. Make instance variables private (i.e., in ST, no accessors). APIs are a "little language" - be consistent - parts of speech and basic names. Intention revealing names important.
Documentation matters, a lot. Reuse won't happen without good design and good documentation. Document every class, every interface, every method, constructor, parameter, exception (ed. - most methods should not need doc - especially internal, non API ones. API methods, likely should. IMHO, intention revealing names should do most of this). If there are state constraints, doc that, or risk unusability.

Consider performance implications of an API.

  • Mutability?
  • Constructor instead of static factories
  • Implementation type instead of interface

ed. - These are issues that, IMHO, most people should never have to worry about....

Bad API designs are permanent. Example: In AWT, Component.getSize returns (mutable) Dimension object. Each getSize call allocates a Dimension (ed. - that's a GC issue. VW has never had an issue here....)
API's must co-exist with the platform. Obey naming conventions, avoid obsolete stuff, etc. Take advantage of any language features. Avoid any language/platform specific traps

Class Design

  • Minimize mutability - classes should be immutable unless there's a good reason... not sure I agree with that...
  • If mutable, keep the state space small and well defined
    • Date and Calendar are bad examples
    • Timer is good

Seriously, I don't know that - other than (previously mutable) Strings in Smalltalk, this is ever something I've had to worry about...

Subclass only when makes sense

  • Liskov substitutability principle
  • Inheritance violates encapsulation - he says you should use final - I disagree violently. To me, this is a classic engineer's mistake of assuming all possible future uses of a class or library. You can't see that. Now, admittedly, making classes interface compatible rather than inheritance compatible is safer - but "fragile base class" is more of a Java/C issue. Final is a bug.

Method design

  • Don't make the client do anything the module should do - reduce need for boilerplate. There's an example of this from the DOM code in Java. If you require boilerplate, then your library is missing a few things. Think as a user of the API and encapsulate that sort of thing.
  • Don't violate the "principle of least astonishment" (old Smalltalk adage :) ). Spending time on the API to make it easier is more important than performance. Example - method called "interrupted" in Thread clears state as well as reporting it.
  • Fail fast - he likes strong static typing, but he's wrong :) In general, good principle goes with "least astonishment" - fail early when it makes most sense. Ironically, his properties example shows the limits of declarative typing. put() in HashTable accepts any objects, but actually enforces Strings in code.
  • Don't make the client play "20 questions" when asking for state.
  • Provide programmatic access to all data available in String form - otherwise people will parse them. This ends up turning those strings into a de-facto API.
  • Overload with care - no two with same number of args (ed. - not a Smalltalk problem due to keyword messages :) )
  • Use appropriate parameters and return types - "least astonishment"
    • Favor interfaces
    • Don't use Floats for money (amazing that this still comes up!)
  • Use consistent parameter ordering - note again that keyword messages solve this whole problem :)
  • Avoid long parameter lists - long ones cause problems (going to doc) - especially bad - long lists of identical types (again, solved by keywords...)
  • Avoid return values that demand processing - he says not to return null (Wrong!) - In Smalltalk, answering nil is a well understood and widely used pattern.
  • Don't use exceptions for control flow, only for errors. Don't fail silently!
  • Favor unchecked exceptions. Checked exceptions cause boilerplate. See Parcel loading in Smalltalk for examples of this and the previous...
  • Include failure/capture information with the exception

Refactoring
The examples are showing the Collection hierarchy in Java as a replacement for the older Vector stuff. Another example shows a cleanup of some Thread code (replace Strings and keys with key objects).

Summary
Can be rewarding and valuable for companies and teams. Suggests that these rules are guidelines, not hard and fast rules. API design is not simple. "Perfection is unachievable"

 Share Tweet This

ot2004

Easy Discovery - network resources

March 31, 2004 7:25:29.058

Laura Hill and Bernard Horan of Sun (R&D group)

Examples

  • Remote Door Bell - say you are working outside, doorbell rings. Nice if the doorbell muted the radio and rang itself on the radio (or on the mobile phone, etc). Not possible if all devices are using fully proprietary interfaces. Bernard showed his Bluetooth enabled phone controlling volume on the Bluetooth enabled notebook as an example.
  • Elder hospice care facility to monitor safety/health of resident(s)
    • Health stats
    • Intrusions
    • Fire, etc
  • Small scale home security syste
    • Wireless, battery operated
    • Elements discover each other on net
    • Each item in system does its own task (video monitiring, etc)
    • Nice if it could be set up to notice "normal" anomalies (a cat, for instance, should not set off the network)
  • Imaging
    • Being able to easily discover an available printer on an ad-hoc (WiFi) network
    • Variable pricing, etc

A 40 minute team exercise - come up with a new service/idea that plays into discoverability. We came up with the notion of personal location identification cutting across devices and locations:

  • Phone (land and mobile)
  • PDA
  • Email
  • Home and other locations recognizing you and configuring themselves to your known desires
    • Privacy settings issues

First group - Jack Black finds himself in a strange city with a PDA, and may be in danger of sobering up if he does not find a bar. So his PDA should be able to have that critical information available and route him to the nearest bar:

  • Local Customs (tip, etc)
  • How late is bar open?
  • How close? How do we get there?
  • When Jack's blood alcohol level drops below a certain level it notifies him that it's time to drink. Also takes account of current monetary level, and which location is closest
  • Environment needs to be able to deal with any local environment automatically. Not all locations will have services that work for this.
  • Should be able to translate across language barriers
  • Should have privacy, security, abiding by local laws

Second group - Intelligent Visitor Filtering doorbell

User Requirements

  • Filters visitors based on context and learned preferences
    • Time of Day
    • State of House
    • Who is present in house
    • Contents of the fridge
    • Learned preferences of the homeowners for visitors based on context

Task Requirements

  • Need for discovery of context of house and home owner
  • Need for discovery of purpose of visit
  • Comparison of visit purpose with context with preferences, assessment of significance of vist for homeowner/those present

Next step - how to create a solution - the two more general groups (ours and the intelligent filtering) will need to focus in more. They gave us a large handout with a whole bunch of descriptive technology refs and Discovery Protocols. I'm not going to describe all of them.

Descriptive tech

Discovery Protocols

For our scenario, we came up with Bluetooth as the best mechanism for initial broadcast of identity information - providers would then do additional queries through some other mechanism (Web Services, JXTA, whatever).

Intelligent Doorbell Scenario - doorbell is not a doorbell, but delegates the task to whatever service should find an appropriate person - it may end up being the ring by default. The person hitting the doorbell will be queried as to what they offer/want, and appropriate proxies will be notified. So with that, they went with Jini, mostly for the Pub/Sub capability. If BlueTooth did that, they would have considered it. If JXTA did that well, might consider it.

The Jack Black drinking system - Ended up with the business part (getting the alcohol) and the discovery part. Missing part - bringing up the network. Ended up a need for multiple services from the list - possibly BlueTooth, possibly Web Services, possibly OWL-S.

Notes - no one brought up security, although we did bring up privacy. There seemed to be an "assumption that it would be secure" - meaning that no one took responsibility for it :) Not that we've seen that before :)

 Share Tweet This

marketing

Shifting paradigms without a clutch

March 31, 2004 7:25:47.426

Here's a poster put up by egg at ot2004 -

"Inside every Clarke Kent there's a superhero. Leave the bow tie and braces at home"

"We'll supply the kryptonite"

Ok then... get ahold of them if you want to have all your power taken away :)

 Share Tweet This

development

AOP Worries?

March 31, 2004 14:15:46.968

I'd really like to see someone who knows a thing or two about AOP address these concerns

 Share Tweet This

ot2004

ot2004 Wraps up

March 31, 2004 14:35:27.167

It was a great conference - I really enjoyed it. The Robinson Centre was a very nice place to have a conference - the rooms were comfortable, the meeting rooms were very nice, and the central lounge area was comfy - nice couches, and WiFi provided by ThoughtWorks - that WiFi setup made all these posts far easier to make than they would have been otherwise. There was a lot of interest at the Cincom booth - lots of people seemed to be pleasantly surprised that Smalltalk was alive, kicking, and ready for anything.

I suppose I should mention my own session, which ran during the last time slot - I spoke about blogs and RSS. Martin Fowler had some good suggestions for me on the organization of the slides - I'll be revising them before I give this presentation again. The discussion was very lively - as it turned out, a lot of the audience (about 20 or so) didn't have a good grasp of what RSS was before the talk. I plan to be back next year - great show, wonderful time!

 Share Tweet This

StS

VW Tools Development at StS 2004

March 31, 2004 14:40:07.539

Interested in how tools are evolving in VisualWorks? Then you'll want to listen to Vassili Bykov's talk at StS 2004:

Inside the VisualWorks Tools
presentation
Vassili Bykov: Cincom
Tuesday 2:30:00 pm to 3:30:00 pm

Abstract: Over the past few years, VisualWorks toolset has undergone extensive changes and enhancements. They are not limited to user interface changes; a number of frameworks have been added that VisualWorks application programmers can build upon. This presentation will demonstrate some of these additions and show how they can be used in other applications.

Bio: Vassili Bykov is the Tools project lead for VisualWorks Smalltalk. Since joining Cincom in July 2000 he has been working on modernizing the look and feel of VisualWorks IDE. His interests range from information and graphic design to fundamentals of programming language semantics, and he finds a good balance between them in his current position. The focus of his current work is bringing the future VisualWorks user experience closer to the expectations of a typical user while retaining and enhancing the interactive and direct feel traditionally expected of Smalltalk environments. Prior to this, Vassili was an object technology instructor with The Object People and a member of Toplink/Smalltalk development team.

See you in Seattle!

 Share Tweet This

development

Edit Continue vs. Test-Driven Development

April 1, 2004 19:41:36.964

Spotted this on edit and continue in jaybaz_MS's WebLog:

You now have a situation where a simple unit test is only a couple function calls away from any bug.  Compare to the Einstein case I mentioned earlier, and you'll see that complex repro scenarios are comparitively rare.  You can reproduce the faliure in seconds - just run the unit tests.

When that cycle is so short, E&C doesn't help nearly as much. 

The "Einstein" reference is in relation to an internal to MS view on various developer types; I'll have to post on that at some point. Here though, I see something interesting - MS is only just starting to support the kind of immediacy (edit and continue) that Smalltalk supports so much better than they do - and their developers just don't see the value. Amazing. I used a TDD approach when developing my MarkupHelper (for the blog posting tool), and it was so much easier to do since I could look at stuff in the debugger and change it right there - without having to run back to some different tool. Interesting difference in viewpoints at the very least...

 Share Tweet This

travel

Back home

April 1, 2004 19:41:49.265

Well, almost back home. I'm tapping this out in a cab while it crawls through rush hour traffic on the BW parkway - I arrived at DCA not too long ago. It's a rainy, nasty day; it was actually nicer in the UK (London) this morning when I woke up. That was 12:30 am local time, so I've been up a long while now as well - adding to the generally odd feel that these long travel days acquire. No luck with the wardiving while I've been stuck in traffic either - I've stumbled on one WiFi spot, and that was WEP protected. So much for moblogging from the cab :)

One thing's for sure; this ride back home shows me why I'm so glad I work out of a home office most of the time - I can't believe that people put up with this kind of traffic on a daily basis!

 Share Tweet This

general

Why I hate Windows, reason 9001

April 1, 2004 19:46:10.541

So I get home, greet the family, boot the laptop. It refuses to find the WiFi in the house. Check the other system that uses WiFi - yes, it sees the network. Pull the card in and out of the machine a few times, swear a lot, swap cards. Nothing. Disable the wireless card, enable it, pull it out, put it back in, nothing. Then, after 45 minutes, for no apparent reason, it finally spots my network. The maddening part? It was offering to connect to my neighbor's network the entire time. Grrrrrr.....

 Share Tweet This

humor

RSS Humor for syndication geeks

April 1, 2004 20:10:56.003

Well, I thought this was funny :)

 Share Tweet This

itNews

Print noticing blogs

April 2, 2004 8:40:46.178

PR Opinions points to the interest and influence (still unclear) of blogs in the tech journal sector. Personally, I find that I'm reading fewer journals...

"We literally have a daily discussion on this topic. We have a lot of top people writing columns and perspectives but we know that the bulk of our readership still comes to us for the news. In one sense, my editor for opinions, Charles Cooper, writes a column that's sort of a blog, and we have this "Your Take" feature now, whereby readers can respond to his column, but it is not a two-way thing. I think with news the question is which blogger do you really trust. There are so many of them. It seems to me like it's a pretty incestuous thing going on. One journalist points to another journalist's blog and other bloggers point to other people's blogs, and you somehow think that this is the most popular thing. But is it credible? I don't know."

Interesting to see how this plays out over time.

 Share Tweet This

law

Delusions of relevance

April 2, 2004 9:32:33.833

Despite all the revelations about old AT&T , Novell (etc) Unix related stuff, SCO still thinks they can win. Now, IANAL, and I've seen judges and juries do some, ummm, interesting things. Read the interview.....

 Share Tweet This

general

Hidden presentation commenting

April 2, 2004 9:44:18.500

Mark Pilgrim posts on the trend towards backchannel conversations during a presentation (typically IRC or IM). This is nothing new; I have IRC and IM conversations going on all the time during phone conferences. To a large extent, this is the responsibility of the speaker(s). If they can't keep the audience's interest, who's fault is that? Certainly not the audiences. And what about blogging a session? I've just blogged ot2004, and that's certainly a form of back channel conversation. This point stands out to me:

I can not be any clearer: I wholeheartedly support this. Despite hysterical objections from the usual suspects, I have seen the benefits of the backchannel firsthand. At ApacheCon last fall, Ken Coar announced during the initial keynote that there were IRC channels set up for the conference (one for each presentation room, and a main one for the conference in general). When I presented, I went so far as to put the address of the IRC channel on my first slide, to remind people where they could talk about me behind my back for the next 45 minutes. A friend in the audience forwarded me a copy of the channel transcript afterwards, and I discovered that several of the best questions came out of discussion in the backchannel.

There are people who know, and there are people who raise their hand and ask questions out loud, and they aren't necessary the same people. But if these people get together in real time, a question gets asked that otherwise wouldn't get asked, and it gets answered, and everyone benefits. Real-time is important; after the presentation ends and everyone shuffles off to the next one, it's too late.

My experience with public speaking is similar - there are people who won't ask questions in public, and people who will. A back channel provides one more way to surface some of those hidden questions. Anything that creates more conversation can't be all bad :)

 Share Tweet This

itNews

Sun/MS deal

April 2, 2004 14:17:34.182

Scoble points to the much publicized Sun/MS deal - and blogosphere reaction is very positive so far. My read? This is very much like the MS/Apple deal - it will have the effect of propping up one of MS' competitors enough to keep the justice department at bay. One things for sure - MS has been truly blessed in terms of who they have had to compete with :)

Update: This post from Ted Neward is very representative of the general comment trend. The basic thought seems to be "they made up and are playing nice". Nope. Let me boil it down

  • Sun lost (count the declining revenue quarters and the headcount cuts)
  • MS won - and to prevent the Justice department from seeing it as killing a competitor, they are paying to prop Sun up. You know, just like they paid Apple to prop them up

This is easily played as a win-win, but what it amounts to is the best that Sun could get from a really, really bad situation

 Share Tweet This

StS

Deploying Smalltalk Apps at StS 2004

April 2, 2004 17:49:06.764

Come hear an experience report on deploying Smalltalk apps in an enterprise system at StS 2004 - Register now:

Pragmatic Enterprise Software Delivery
presentation
Angus MacArthur and Sean Morrison: Ontario Teachers' Pension Plan
Tuesday 4:00:00 pm to 4:45:00 pm

Abstract: Ontario Teachers' Pension Plan (OTPP) is the pension fund for all of the public school teachers in Ontario, Canada. The Plan services 250,000 current and retired teachers and controls 68 billion dollars (CND) in assets. The internal software development team builds and supports multiple applications, most of which are variants upon a common base. These applications serve hundreds of internal and thousands of external users.

The presenters intend to introduce a sampling of the tools and processes they have developed (in Smalltalk) that alleviate the tedium and risk in the building, testing, and deploying of software. Specific topics will include software QA, automatic build creation and configuration management.

Bio: Angus MacArthur has been working in Smalltalk for over a decade in a variety of industries.

Sean Morrison has been developing software in Smalltalk and Jave at OTPP since graduating from the University of Ottawa in 1999. He is also active in the Toronto Smalltalk Users' Group.

 Share Tweet This

development

I know what they mean, but...

April 3, 2004 10:31:55.620

I really, really wish that people would stop using the term loose typing when they mean dynamic typing. ISerializable has a post mentioning Python that way this morning....

 Share Tweet This

itNews

Being cynical...

April 3, 2004 10:49:55.515

I guess I'm not the only one who was cynical about the Sun/MS agreement - Wired ascribes it to Sun's desperate position in the industry. The Register characterizes it as "Sun throwing in the towel". Just ask yourself - would a Sun that had experienced rising revenues for 11 straight quarters (instead of declining revenues, as they have) - have made this deal? I think not. It's no coincidence that this announcement came on the heels of a 9 percent layoffs anouncement. I'm also somewhat surprised that they promoted this genius to be President and COO. Maybe Schwartz can figure out how to stop Java from being a money spring for anyone but Sun - but I have my doubts about that.

An interesting side note on that point is this from the Wired article:

Daryl Plummer, chief fellow for emerging technologies at the research firm Gartner Inc., said the news that most concerned him Friday was that Sun's 9 percent staff cuts would be across the board - even in research and development, which Sun has fiercely protected in previous rounds of layoffs.

"Cutting R&D is a sign of fiscal responsibility," Plummer said. "However, any cuts in R&D will be unfortunate since Sun relies so heavily on innovation, and they're trying to change the mind-set of the industry - simplifying architecture, getting operational flexibility from chip design to software innovations. It's important they keep that innovation alive."

I've been wondering for years as to when the finance guys would finally blow a gasket at Sun; it looks like that happened. Not necessarily a good sign at this point, and the way Sun did cuts does not, to my mind, usually pan out. Giving everyone a haircut is a great way to cripple the good with the bad. Far better to pick winners and losers, and just shoot the losers. The more I watch Sun, the more I see a bigger version of ParcPlace Systems - losing money hand over fist, and utterly baffled as to what business they are in...

 Share Tweet This

continuations

Re: Modal Web Development

April 3, 2004 11:07:03.984

Avi wants to have people refer to Seaside (and similar web frameworks as "modal web development" instead of as "continuation based". Has the term "continuation based" already gotten too much buzz to make such a change? I guess we'll find out. I mentioned Seaside a few times at ot2004, and described it as a "continuation based" framework. I guess I helped the old meme along :)

 Share Tweet This

StS

Bar Codes and Smalltalk

April 4, 2004 9:53:43.783

Need to deal with hardware in your Smalltalk application? If so, see what Dan Antion has to say about Bar Code Readers - register today to see what Dan's on about:

SmallBars - a bar code library for Smalltalk
presentation
Dan Antion: American Nuclear Insurers
Tuesday 4:45:00 pm to 5:30:00 pm

Abstract: The bar code library includes support for UPC and Non-UPC linear bar code symbologies. Each symbology is represented in the library as a distinct class, and can be created from strings by a variety of convenient class methods. Every symbology includes support for calculating required and optional check-digits. Symbologies also support the conventional display of human readable characters. The library generates bar codes as device-independent bitmaps so they can be easily printed, displayed or transferred via the Clipboard. The library does not require any installed or licensed fonts. The library was developed for VisualAge Smalltalk and is being ported to Dolphin Smalltalk.

UPC Bar codes include:
    EAN-13	EAN-8
    JAN-13
    UPC-A	UPC-E
    BOOKLAND
Non-UPC bar codes include:
    Codabar	Code 11
    Code 39 (also known as Code 3 of 9)    
    Extended (full ASCII) Code 39
    Code 93
    Code 128	EAN-128
    Standard Code 2 of 5
    Interleaved Code 2 of 5
    MSI (MSI/Plessey)
    POSTNET

The demonstration will discuss bar code technology, the more popular symbologies, library design and usage.

Bio: Daniel Antion is Director, Information Services for American Nuclear Insurers. He is responsible for all systems development activities in addition to managing general information technology efforts. Prior to joining ANI, he worked in systems development for several companies. He also worked as a consultant for Coopers & Lybrand and KPMG Peat Marwick, specializing in information systems and consulting services to financial institutions. An enthusiastic fan of Smalltalk, Dan has made presentations at Smalltalk Solutions and OOPSLA.

See you in Seattle!

 Share Tweet This

blog

Email to Blog?

April 4, 2004 16:19:13.738

Scoble is impressed by such small thing...

It adds a new folder to Outlook. OK, let's say Bill Gates emailed me right now. Let's say I wanted to post that email out to the world? In the old world I'd need to open up Radio UserLand, copy the email, clean up the HTML, then click post.

New "Kunal's" world? Copy the email over to the folder. It's posted. Done. No more work.

Umm, color me underwhelmed. Sure, it's nifty. But it's hardly that big a deal. It's also specifically tied to a mail client that I wouldn't use if you paid me - Outlook. Not to mention that there are very, very few emails that I would want to post to my blog unchanged - under virtually all circumstances I would want to add comentary of one sort or another. One more thing - if the blog server has a mail interface, one could accomplish the same thing via forwarding - from any email client on any platform. Yawn...

 Share Tweet This

itNews

That had to hurt

April 5, 2004 9:21:41.184

This interview with Jonathan Schwartz had to be painful for Schwartz, based on some of the comments he (and other management at Sun) have made about MS in the past.

 Share Tweet This

StS

An update from the Cincom Smalltalk Protocol team

April 5, 2004 10:06:18.567

If the work being done on things like Web Services, CORBA, related technologies is of interest to you, then you'll not want to miss this talk

Cincom Smalltalk Protocol News
presentation
Leonard Lutomski, et al.: Cincom
Tuesday 4:00:00 pm to 5:30:00 pm

Abstract: Cincom Smalltalk protocol developers will present the latest advances in the communication and security frameworks of Cincom Smalltalk. The highlights will include live demonstrations of ObjectStudio-VisualWorks interoperation over Opentalk, Opentalk-IIOP, new Web Services tools, the new ASN.1 marshaling framework, SSL/HTTPS, and more. At the end, the protocol developers will outline and discuss their future plans with the audience.

Bio: Leonard Lutomski manages the Cincom VisualWorks Protocol Team. Martin Kobetic, Tamara Kogan, and Sean Glazier are senior VisualWorks developers and members of the Protocol Team. Martin concentrates on networking frameworks and security; Tamara is responsible for WebServices and NetClients; Sean addresses both security and VisualWave. Andreas Hiltner is a senior Cincom ObjectStudio developer, active in advancing the ObjectStudio Opentalk port.

See you in Seattle!

 Share Tweet This

development

Situated Software vs. large solutions

April 5, 2004 10:54:44.253

Clay Shirky has a fascinating article up discussing what he calls situated software - software that doesn't attempt to be al things to all people or scale - software that makes use of tacit assumptions in a small group setting:

We've been killing conversations about software with "That won't scale" for so long we've forgotten that scaling problems aren't inherently fatal. The N-squared problem is only a problem if N is large, and in social situations, N is usually not large. A reading group works better with 5 members than 15; a seminar works better with 15 than 25, much less 50, and so on.

This in turn gives software form-fit to a particular group a number of desirable characteristics -- it's cheaper and faster to build, has fewer issues of scalability, and likelier uptake by its target users. It also has several obvious downsides, including less likelihood of use outside its original environment, greater brittleness if it is later called on to handle larger groups, and a potentially shorter lifespan.

I see my students making some of these tradeoffs, though, because the kinds of scarcities the Web School was meant to address -- the expense of adequate hardware, the rarity of programming talent, and the sparse distribution of potential users -- are no longer the constraints they once were

You really have to read the whole thing - the simplest summary seems to be that you don't need to always make software general - in many situations, you can take advantage of the social context the software lives in without trying to generalize it

 Share Tweet This

tv

Farscape redux

April 5, 2004 10:59:56.987

Sci Fi Wire reports that a new Farscape mini-series is in the works. Now, if only it doesn't get as downright stupid as the last season was....

 Share Tweet This

blog

Scoble's email blog

April 5, 2004 22:01:58.461

So here's the blog that Scoble was absolutely gushing over the other day. It looks like what Scoble described - a bunch of posts that originated as email to Scoble. Hmmm. Exactly how is that useful? I get the whole linkblog idea - point to interesting content with (maybe) a sentence or two about each one. But a blog made up of some of the inbound emails? It's the commentary from the blogger in question that interests me....

 Share Tweet This

StS

Embedded Systems at StS 2004

April 6, 2004 11:55:56.405

Interested in Embedded Systems work in Smalltalk? Then don't miss Maurice Rabb's talk on the topic! Register today to check it out:

Microlingua
presentation
Maurice Rabb: Katalytyk, LLC
Wednesday 8:30:00 am to 9:15:00 am

Abstract: Dynamic object-oriented programming languages are rarely used in small or real-time embedded systems. The presentation will discuss implementation techniques originally developed to enable Smalltalk to run efficiently on tiny consumer electronic products such as animated watches. The work has application in other domains including wireless, medical, industrial, and military equipment.

Topics will include developments since Smalltalk Solutions 2003. One of Smalltalk's most cherished aspects is its expressive power. Microlingua introduces a fast and consistent conceptual model for handling numerics, im|mutability, execution context, and concurrency. It improves the safety and power in expressing these fundamental concepts.

Bio: Maurice Rabb is the principal of Katalytyk, LLC in Chicago. He specializes in new product development, conceptual blockbusting, and the creative application of technology -- in short, acting as a human catalyst. Mr. Rabb earned his BS and MS in engineering from Stanford University.

See you in Seattle!

 Share Tweet This

cst

NC Downloads update

April 6, 2004 12:12:16.328

There has been a bug in the NC download application for a while now - if the email the server sent failed to go, then it was just lost. I fixed that this morning - the server is now logging such errors, and running a background process to attempt resends. That should clear up one of the bigger issues with the download application. There's another issue with bad error messages, which I intend to take a look at this afternoon. Thanks for your patience!

Update: - as it turns out, one of the larger issues was error reporting - the application would tell the end user "username is already in use" regardless of why the username was invalid - very confusing, and a big error on my part. I've fixed that, so the application should be clearer about issues now.

 Share Tweet This
-->