September 2001
- Strix: Object Persistence on Relational Backends Ling Lo
- Structured Social Play John Buehler
- Structured Social Play Tom Hubina
- Structured Social Play Christopher Allen
- Structured Social Play Ola Fosheim Grøstad
- Structured Social Play Daniel Bendiksen
- Structured Social Play Tamzen Cannoy
- Structured Social Play Robin Lee Powell
- Structured Social Play Caliban Tiresias Darklock
- Structured Social Play Travis Casey
- Structured Social Play Robin Lee Powell
- Structured Social Play Christopher Allen
- Structured Social Play Koster, Raph
- Structured Social Play Matthew D. Fuller
- Structured Social Play Bruce Mitchener
- Structured Social Play Takis Kalogiratos
- Structured Social Play shren
- Structured Social Play Daniel Bendiksen
- Structured Social Play shren
- Structured Social Play Matt Owen
- Structured Social Play Bruce Mitchener
- Structured Social Play Vincent Archer
- Structured Social Play shren
- Structured Social Play Daniel Bendiksen
- Structured Social Play Vincent Archer
- Structured Social Play John Buehler
- Structured Social Play Matt Mihaly
- Structured Social Play Marian Griffith
- Structured Social Play Travis Nixon
- NEWS: Blizzard Entertainment announces World of Warcraft Kylotan
- [BIZ] Billing systems Brian Hook
- [BIZ] Billing systems Matt Mihaly
- [BIZ] Billing systems Christopher Allen
- [BIZ] Billing systems Brian Hook
- [BIZ] Billing systems Christopher Allen
- [BIZ] Billing systems Kevin Littlejohn
- [BIZ] Billing systems Travis Nixon
- [BIZ] Billing systems Brian Hook
- [BIZ] Billing systems Daniel.Harman@barclayscapital.com
- [BIZ] Billing systems Owen
- [BIZ] Billing systems Jussi 'Sulka' Haro
- [BIZ] Billing systems Peter Tyson
- Benchmarking MUDs Chris Gray
- Benchmarking MUDs Matt Mihaly
- Benchmarking MUDs Bruce Mitchener
- Benchmarking MUDs Lars Duening
- Benchmarking MUDs Adam Martin
- Benchmarking MUDs Robin Lee Powell
- Benchmarking MUDs Chris Gray
- Benchmarking MUDs Adam Martin
- Benchmarking MUDs Chris Gray
- Benchmarking MUDs Ian Collyer
- Benchmarking MUDs Chris Gray
- Benchmarking MUDs Adam Martin
- Benchmarking MUDs Jon Lambert
- Free Time != Advancement (was: Structured Social Play) Eli Stevens
- Random American Name Generator (!) Ling Lo
- Higher barrier to entry? was NEWS: Blizzard Entertainment announces World of Warcraft Brian Hook
- Higher barrier to entry? was NEWS: Blizzard Entertainment announces World of Warcraft Christopher Allen
- Higher barrier to entry? was NEWS: Blizzard Entertainment announces World of Warcraft Derek Licciardi
- Higher barrier to entry? was NEWS: Blizzard Entertainment announces World of Warcraft Sean K
- Higher barrier to entry? was NEWS: Blizzard Ent ertainment announces World of Warcraft Daniel.Harman@barclayscapital.com
- Updated my site Koster, Raph
- Vircom T4C Brian Hook
- Vircom T4C Valerio Santinelli
- Preference for host OS Brian Hook
- Preference for host OS Jon Leonard
- Preference for host OS Bruce Mitchener
- Preference for host OS brandon@roguetrader.com
- Preference for host OS J C Lawrence
- Preference for host OS Jeremy Noetzelman
- Preference for host OS Fred Clift
- Preference for host OS Travis Casey
- Preference for host OS J C Lawrence
- Preference for host OS Travis Casey
- Preference for host OS Sean K
- Preference for host OS Vincent Archer
- Preference for host OS Phillip Lenhardt
- Preference for host OS J C Lawrence
- Preference for host OS J C Lawrence
- Preference for host OS Brian Hook
- Preference for host OS Brian Tackett
- Preference for host OS Jon Lambert
- Preference for host OS David Loeser
- Preference for host OS Brian Hook
- TEC Distribuate engine &cost of band width Stéphane Garin
- TEC Distribuate engine &cost of band width plalande@born2play.org
- [MUD DEV] Text editors in MUDs [was Structured Social Play] Daniel Bendiksen
- [MUD DEV] Text editors in MUDs [was Structured Social Play] Caliban Tiresias Darklock
- [MUD DEV] Text editors in MUDs [was Structured Social Play] Derek Licciardi
- [MUD DEV] Text editors in MUDs [was Structured Social Play] Adam Martin
- Casual vs. Hardcore gameplay Ian Collyer
- Casual vs. Hardcore gameplay Jon Lambert
- Higher barrier to entry? was NEWS: Blizzard Entertainment announces World of Warcraft Travis Nixon
- Higher barrier to entry? was NEWS: Blizzard En tertainment announces World of Warcraft Koster, Raph
- TECH: SEDA: An Architecture for Highly Concurrent Server Applications Bruce Mitchener
- Re:Play participants emails needed Marian Griffith
- [REALITY] [SOCIAL] ExistenZ Adam Martin
- [TECH] Mozilla as cross OS client for MUD/MMG ? Mathieu Castelli
- [TECH] Mozilla as cross OS client for MUD/MMG ? Chris Jones
- [TECH] Mozilla as cross OS client for MUD/MMG ? Par Winzell
- FW: [BIZ] Billing systems Dave Kennerly
- FW: Skotos TTT#44: The Global Community Christopher Allen
- [Fwd: Announce: New Mailing Lists Available] Bruce Mitchener
- BeQuest Michael Tresca
- Geometric content generation Matt Mihaly
- Geometric content generation Brian Hook
- Geometric content generation Matt Mihaly
- Geometric content generation Brian Hook
- Geometric content generation Derek Licciardi
- Geometric content generation Koster, Raph
- Geometric content generation Adam Martin
- Geometric content generation Daniel.Harman@barclayscapital.com
- Geometric content generation rayzam
- Geometric content generation Daniel.Harman@barclayscapital.com
- Geometric content generation Kwon Ekstrom
- Geometric content generation Daniel.Harman@barclayscapital.com
- Geometric content generation Brian Hook
- Geometric content generation Daniel.Harman@barclayscapital.com
- Geometric content generation Adam Martin
- Geometric content generation Daniel.Harman@barclayscapital.com
- Geometric content generation Koster, Raph
- Geometric content generation Ola Fosheim Grøstad
- Geometric content generation Koster, Raph
- Geometric content generation John Hopson
- Geometric content generation Ola Fosheim Grøstad
- Geometric content generation Dave Rickey
- Geometric content generation Daniel.Harman@barclayscapital.com
- Geometric content generation Dave Rickey
- Geometric content generation Vincent Archer
- Geometric content generation Daniel.Harman@barclayscapital.com
- Geometric content generation Ola Fosheim Grøstad
- Geometric content generation Ola Fosheim Grøstad
- Geometric content generation Dave Rickey
- Geometric content generation Adam Martin
- Geometric content generation rayzam
- Geometric content generation rayzam
- Geometric content generation Ola Fosheim Grøstad
- Geometric content generation J Aitken
- Geometric content generation Caliban Tiresias Darklock
- Geometric content generation Sasha Hart
- Geometric content generation rayzam
- Geometric content generation Adam Martin
- Geometric content generation J Aitken
- Geometric content generation rayzam
- Geometric content generation Ola Fosheim Grøstad
- Geometric content generation Dave Rickey
- Geometric content generation Ola Fosheim Grøstad
- Geometric content generation Dave Rickey
- Geometric content generation Ola Fosheim Grøstad
- Geometric content generation Matt Mihaly
- Geometric content generation Ola Fosheim Grøstad
- Geometric content generation Matt Mihaly
- Geometric content generation Ola Fosheim Grøstad
- Geometric content generation rayzam
- Geometric content generation Travis Nixon
- Geometric content generation Hans-Henrik Staerfeldt
- Geometric content generation Brian Hook
- Geometric content generation Hans-Henrik Staerfeldt
- Geometric content generation Brian Hook
- Geometric content generation Eli Stevens
- Geometric Content Generation John Robert Arras
- Geometric Content Generation Brian Hook
- Geometric content generation Hans-Henrik Staerfeldt
- Geometric content generation Brian Hook
- Geometric content generation Adam Martin
- Geometric content generation John Buehler
- Geometric content generation Hans-Henrik Staerfeldt
- Geometric content generation John Buehler
- Geometric content generation Hans-Henrik Staerfeldt
- Geometric content generation rayzam
- Geometric content generation Brian Hook
- Geometric content generation John Buehler
- Geometric content generation Daniel.Harman@barclayscapital.com
- Geometric content generation Brian Hook
- Geometric content generation Michael Tresca
- Geometric content generation Derek Licciardi
- Geometric content generation Brian Hook
- Geometric content generation Adam Martin
- Geometric content generation Brian Hook
- Geometric content generation Derek Licciardi
- Geometric content generation Robin Lee Powell
- Geometric content generation Kwon Ekstrom
- Geometric content generation Nathan F. Yospe
- Geometric content generation Travis Nixon
- Geometric content generation Nathan F. Yospe
- Geometric content generation Kwon Ekstrom
- Geometric content generation Travis Nixon
- Geometric content generation Nip
- Geometric content generation Jay Carlson
- Geometric content generation Kwon Ekstrom
- Geometric content generation John Buehler
- Geometric content generation J Todd Coleman
- Geometric content generation Peter Tyson
- Geometric content generation S. Patrick Gallaty
- Geometric content generation Eric Rhea
- Geometric content generation Paul Schwanz
- Geometric content generation Lee Sheldon
- Geometric content generation Ola Fosheim Grøstad
- Geometric content generation Lee Sheldon
- Geometric content generation Matt Mihaly
- Geometric content generation Ola Fosheim Grøstad
- Geometric content generation Matt Mihaly
- Geometric content generation Ola Fosheim Grøstad
- Geometric content generation Jon Lambert
- Geometric content generation Ola Fosheim Grøstad
- Geometric content generation Eric Rhea
- Geometric content generation Matt Mihaly
- Geometric content generation Eric Rhea
- Geometric content generation Ola Fosheim Grøstad
- Geometric content generation Koster, Raph
- Geometric content generation Brian Hook
- Geometric content generation Ian Collyer
- Geometric content generation John Buehler
- Geometric content generation Eli Stevens
- Geometric content generation Ian Collyer
- Geometric content generation John Buehler
- Geometric content generation gamaiun@yahoo.com
- Geometric content generation Derek Licciardi
- Geometric content generation Hans-Henrik Staerfeldt
- Geometric content generation Koster, Raph
- Geometric content generation Matt Mihaly
- Geometric content generation Hans-Henrik Staerfeldt
- Geometric content generation Kwon Ekstrom
- [DSN]Geometric content generation[LONG] Derek Licciardi
- [DSN]Geometric content generation[LONG] Matt Mihaly
- LTM article Trump
- LTM article Travis Nixon
- LTM article J Todd Coleman
- LTM article Travis Nixon
- LTM article Matt Mihaly
- LTM article Sellers, Mike
- LTM article J Todd Coleman
- LTM article Daniel.Harman@barclayscapital.com
- LTM article Adam Martin
- LTM article Steve {Bloo} Daniels
- MMORPG Construction Kit Redux Lee Sheldon
- Request for ideas Eli Stevens
- Request for ideas J C Lawrence
- Request for ideas Jon Leonard
- Request for ideas Eli Stevens
- Request for ideas Timothy Dang
- Request for ideas Hans-Henrik Staerfeldt
- Request for ideas Dickinson, Dallas
- Request for ideas Matt Mihaly
- Request for ideas Bruce Mitchener
- Request for ideas Adam Martin
- Request for ideas Jon Leonard
- Request for ideas Jon Leonard
- Request for ideas Vincent Archer
- Request for ideas Matt Mihaly
- Request for ideas holding99@mindspring.com
- Request for ideas Freeman, Jeff
- Request for ideas Robin Lee Powell
- Request for ideas Andrew Hefford {Coregen}
- Request for ideas Koster, Raph
- Request for ideas John Buehler
- Request for ideas Christopher Allen
- Request for ideas Chuk Radder
- Request for ideas Nicolai Hansen
- Request for ideas Ben Chambers
- Request for ideas Marian Griffith
- Request for ideas Hans-Henrik Staerfeldt
- Request for ideas Ian Collyer
- Request for ideas Freeman, Jeff
- Request for ideas holding99@mindspring.com
- Request for ideas Patrick Dughi
- Request for ideas Christopher Allen
- Request for ideas Adam Martin
- Request for ideas Matt Mihaly
- Request for ideas Leland Hulbert II
- Request for ideas Travis Nixon
- Request for ideas Marian Griffith
- Request for ideas Ben Chambers
- Request for ideas Derek Licciardi
- Request for ideas John Buehler
- Spoofs Eli Stevens
- Spoofs Brian Hook
- Spoofs Sean K
- Spoofs Daniel.Harman@barclayscapital.com
> From: Brian Hook [mailto:bwh@wksoftware.com]
> The classic illustration is they inadvertently illustrate why C++
> is basically broken -- it ties the interface and implementation to
> each other tightly. So when B inherits from A, you're never sure
> (from the outside) if it's inheriting the interface (for
> polymorphism) or the implementation (for specialization) or both.
Which is pretty much the problem COM solves. Of course convincing
developers to create versioned interfaces rather than just expand
old ones is something else (at least when you are writing in house
apps and have full deployment control).
> They go on to make an even more interesting assertion: extension
> by aggregation is generally preferable to extension by inheritance
> for the above reason. They almost seem to actively discourage
> subclassing. I have to admit that I'm fairly guilty of using
> "is-a" vs. "has-a" a lot more than I should, but I'm slowly
> getting over it. Hell, I'm using callbacks for a lot of stuff now
> instead of polymorphism because, in the end, it's actually quite a
> bit cleaner than subclassing everything just to minorly extend its
> behaviour.
I've gone off the typical C++ inheritance pattern as it either ends
up bloated, inflexible or messy. I've started to use the same
approach ATL uses in its design whereby templates are used to keep
the code concise and flexible whilst allowing you to insert code
anywhere in the hierarchy.
I had a bit of text here that tried to explain the approach and it
occured to me that I wasn't doing a very good job. Below is an
extract from a fairly good overview explaining the paradigm and a
link for the full (and overly long for this list) document.
8<-------------
Base classes with templates
If you've been waiting to learn what I mean by "upside-down
inheritance," then wait no longer. Traditionally, when you derive
from a class, everything above your immediate base class is
fixed. This was the key design problem we encountered in Designs #1,
2, and 3 because we lost flexibility every time we introduced a base
class.
ATL solves this problem by allowing the developer to use template
arguments to specify the base class of a base class. The classes I
used as examples in Design #4 are quite similar to the classes in
ATL. Here is what an ATL definition would look like (the list of
base classes to CMyControl has been heavily edited).
class CMyControl :
public CComObjectRootE<
CComSingleThreadModel >,
public CComControl< CMyControl,
CWindowImpl< CMyControl, CWindow > >
{
};
The first template parameter to CComControl is the most derived
class so CComControl can access siblings in the hierarchy. This
works just as it did for AxControlImpl in the last section.
The second template argument is the definition of what CComControl
should use for a base class. This allows you to insert your own
classes into the class hierarchy, thus making ATL extremely flexible
if you need to change its behavior. If you browse your own ATL
project, you may not see this template argument, because ATL
automatically uses the default if it isn't specified.
For example, this list shows the derivation hierarchy of CMyControl,
with the base class at the top and the most derived class at the
bottom:
CWindow
CWindowImplRoot<CWindow>
CWindowImplBaseT<CWindow>
CWindowImpl<CMyControl, CWindow>
CComControl<CMyControl,
CWindowImpl<CMyControl, CWindow> >
CMyControl
The two classes in blue are both defined by the template arguments
to CComControl and can therefore be replaced or overridden by the
developer. For example, you could subclass CWindow and create
CCenteredWindow. You would then change the template argument to
CWindowImpl, and your new class would be inserted into the
hierarchy.
Remember that most functions are not virtual. If you use
CCenteredWindow to override functions in CWindow, then your override
will be called, not because it is virtual, but because it is the
most derived implementation of the function.
The reason I call this upside-down inheritance is that the most
derived class defines the base class and therefore defines the
behavior of the base class. This is the opposite of the typical
case, where the derived classes have little or no control over the
behavior of the base class.
8<-------------
http://www.devx.com/free/mgznarch/vcdj/1999/julmag99/atlinherit1.asp
If you've seen all this before then its probably not very
interesting, but when I first saw it I was impressed.
Dan
- research in online games Manuel Oliveira
- research in online games Travis Nixon
- How Many Developers Does It take to Screw in a Lightbulb? [Poll] Lee Sheldon
- in-game vs web-based boards (was: Geometric content generation) Bruce Mitchener
- in-game vs web-based boards (was: Geometric content generation) Koster, Raph
- in-game vs web-based boards (was: Geometric content generation) Vincent Archer
- in-game vs web-based boards (was: Geometric content generation) Bruce Mitchener
- in-game vs web-based boards (was: Geometric content generation) Robin Lee Powell
- in-game vs web-based boards (was: Geometric content generation) Daniel.Harman@barclayscapital.com
- in-game vs web-based boards (was: Geometric content generation) John Buehler
- in-game vs web-based boards (was: Geometric content generation) Daniel.Harman@barclayscapital.com
- in-game vs web-based boards (was: Geometric content generation) Koster, Raph
- in-game vs web-based boards (was: Geometric content generation) John Buehler
- in-game vs web-based boards (was: Geometric content generation) Bruce Mitchener
- in-game vs web-based boards (was: Geometric content generation) Daniel.Harman@barclayscapital.com
- in-game vs web-based boards (was: Geometric content generation) Steve {Bloo} Daniels
- in-game vs web-based boards (was: Geometric content generation) Daniel.Harman@barclayscapital.com
- in-game vs web-based boards (was: Geometric contentgeneration) Ola Fosheim Grøstad
- in-game vs web-based boards (was: Geometric content generation) Travis Nixon
- in-game vs web-based boards (was: Geometric content generation) Daniel.Harman@barclayscapital.com
- Fwd: [CLIENT-DEV] Software Packages for MOO Bruce Mitchener
- Portable Class C Christopher Allen
- Portable Class C Vincent Archer
- [Meta] Portable Class C Dominic J. Eidson
- RP in EQ? Matt Mihaly
- AO Mess Vincent Archer
- Lum the Mad is closing Valerio Santinelli
- Historic lessons on fluid identity Marian Griffith
- Historic lessons on fluid identity Matt Mihaly
- Historic lessons on fluid identity Marian Griffith
- Historic lessons on fluid identity Ola Fosheim Grøstad
- Historic lessons on fluid identity Matt Mihaly
- Historic lessons on fluid identity Marian Griffith
- Historic lessons on fluid identity Marc Bowden
- Historic lessons on fluid identity Jon Lambert
- Historic lessons on fluid identity John Buehler
- Historic lessons on fluid identity David Lindsey
- Historic lessons on fluid identity Matt Mihaly
- Lum the Mad is closing--sort of Koster, Raph