»  Jeff Alexander
»  Eric Arseneau
»  Cristina Cifuentes
»  Katy Dickinson
»  Gilda Garreton
»  Steve Green
»  Vipul Gupta
»  Karl Haberl
»  Mick Jordan
»  Jonathan Kaplan
»  Owen Kellett
»  Roger Meike
»  Seth Proctor
»  David Simmons
»  Doug Simon
»  Jordan Slott
»  Poorna Udupi
»  Jim Waldo
»  Derek White
Sun Microsystems Laboratories Blogs

November 23, 2009

Jordan Slott's Blog

dot Wonderland: Redux

Way back in v0.4, I wrote a blog, dot Wonderland, that described the contents of the "dot" directory that held meta-information, configuration information, and cached assets for Project Wonderland. It was meant to be an under-the-covers peak into some operational details for those who were interested and users, who like me, just love to twiddle with files every once in a while. I've been meaning to update that blog post for v0.5, so here we go.

In that earlier blog, I posted an important disclaimer that is worth repeating: modify the .wonderland and .wonderland-server directories at your own risk! Since the information contained in these directories are implementation details and not part of any public API, anything posted here is subject to change without notice.

The .wonderland-server/ directory

In Version 0.5, the files associated with the Project Wonderland server and client are now kept in two separate directories: .wonderland-server/ and .wonderland/, respectively. The structure of the .wonderland/ directory has not changed much since v0.4, so the information described by the dot Wonderland blog is still mostly correct. There are some changes, and I'll talk about those in another blog.

In this blog, I'd like to focus on the files pertaining to the server, in the .wonderland-server/ directory. First off, Project Wonderland keeps files for each revision of v0.5 in separate directories. If you are working with the main line source code (aka the 'trunk'), then files are stored beneath the 0.5-dev/ directory. If you are working with 0.5 User Preview 2, then files are stored beneath the 0.5-preview2/ directory. Once v0.5 is finalized, I'd imagine the files would be stored under the 0.5/ directory.

Keeping the files for each of these sub-versions separate really helps development: we can run and debug each of these different subversions on our development machines at the same time. Users who upgrade from, say 0.5 User Preview 1 to 0.5 User Preview 2, need to manually copy some files if they wish to keep state across these sub-versions. Hopefully the details contained in this blog will make this process a bit easier.

Log files, runtime state, worlds

If you take a look at the ~/.wonderland-server/0.5-dev directory (here, '~' denotes the user's home directory), you'll see three subdirectories: log/, run/, and wfs/.

Log Files

The log/ directory is perhaps the easiest to explain, so let's start there. The directory is only one level deep and contains a bunch of text files (with the .log file extension) -- they are the log files for various Project Wonderland server components. The primary one is the web server log, the latest of which is web_server.log.0 (older versions from previous times the Project Wonderland server was run can be found in web_server.log.1, web_server.log.2, etc).

There are three other log files that always appear in this directory: one for the Darkstar server (darkstar_server.log), one for the Voice Bridge (voice_bridge.log), and one for the Shared Application Server (shared_application_server.log). You may also view these web files via the Web-based Administration UI.

A fourth log file (darkstar_server_snapshot.log) is only created if you take snapshots of your world (see WFS: The Wonderland File System in v0.5 for more details).

Worlds and Snapshots

The wfs/ directory contains all of the initial worlds and world snapshots. Each is stored as a collection of XML-formatted files. The structure of the way these XML files are stored on disk is defined by the Wonderland File System (WFS). WFS has evolved in v0.5 since earlier releases, and the WFS: Wonderland File System in v0.5 blog succinctly describes the contents of the wfs/ directory.

Not mentioned in the blog, however, is the recordings/ directory that you may see underneath the wfs/ directory. The recordings/ directory contains the state stored by the Event Recorder, an experimental module that performs 3D recordings inside the virtual world.

The run/ directory

I left the run/ directory as last to describe for a reason: it's fairly complicated. This directory contains all of the installation information for the Project Wonderland server (including its various server parts, including the Darkstar server, Voice Bridge, and Shared Application Server). It also contains the "live" state of the virtual world (in the form of BerkeleyDB, an embedded database), an up-to-the-minute persistence mechanism that is implemented by the Darkstar middleware layer. The run/ directory also contains the content area for the embedded WebDav server that is bundled with Project Wonderland.

Here's the directory listing that I current see in ~/.wonderland-server/0.5-dev/run:

content/ docRoot/ webserver/ darkstar_server/
shared_application_server/ wonderland.version deploy/ voice_bridge/
wonderlanddb/ derby.log webdeploy/

Perhaps it's best to start off by describing which directories you can ignore for now: docRoot/, webserver/, darkstar_server/, shared_application_server/, deploy/, voice_bridge/, wonderlanddb/, and webdeploy/. These directories either contain information regarding the implementation of Project Wonderland's modular server architecture (i.e. deploy/ and webdeploy/), it's embedded web and application server (i.e. doctRoot/ and webserver/), or one of the server components that help implement the virtual world (i.e. darkstar_server/, shared_application_server/, voice_bridge/, and wonderlanddb/).

This leaves the following directory: content/. This directory serves as the content root for the WebDav repository. (WebDav, if you are not familiar, is simply an extension to HTTP, and let's us manage content on the web server remotely by clients). Some of the content stored in this directory is visible to ordinary users via the Project Wonderland client: the Content Browser (Tools -> Content Browser) displays all of the content found beneath the system/ and users/ directories here. For example, if a user drags-and-drops a model or an image or a PDF file into the Project Wonderland client, it gets uploaded to his/her space beneath the users/ directory.

The content/ directory also contains other information that is not visible to ordinary users, but is nonetheless important. It is information that is needed by the client software, so placing it in the WebDav content area was natural and eased its distribution. In fact, all modules installed into Project Wonderland are stored beneath the modules/ directory, and more specifically, the modules/installed/ directory. Feel free to browse the modules/installed/ directory for a bit: it's layout is relatively simple. You'll see a directory per module and the contents of the module JAR file expanded beneath that directory, along with some XML-formatted text files that describe the module. There is no other hidden registry of installed modules: its existence in the modules/installed/ directory is all that is necessary. (Incidentally, if you are ever in a position where you'd like to manually remove all of the installed modules in the system, simple clear out the modules/ directory and restart the server. On the flip side, to install a module, it's best to go through the normal mechanisms, e.g. the Web Administration UI).

The final directory beneath content/, the checksums/ directory, contains checksums computed for various assets in the system. These checksums are computed when a module is installed and is used by the caching mechanism in the Project Wonderland client to determine when it needs to download a new asset, for example.

Migrating Important Data from One Version to the Next

If you've built a world, in say 0.5 User Preview 2 and want to migrate the state of that world to, say the latest trunk, then the information above should provide you with the means. By and large, it's a simple matter of copying the proper files from one directory to another. I've tried this out myself by building a simple world in 0.5 User Preview 2 and then migrating the files so that I have the same world if I want to use the most recent Project Wonderland codebase (the trunk).

Using 0.5 Preview 2, I first installed the Clickable Link module (from the unstable/ section in the wonderland-modules workspace) [1] and created a simple world in 0.5 User Preview 2. I dragged-and-dropped a PDF file, which created a PDF Viewer in-world. I added a Sticky Note. I imported a 3D (.kmz) model using the Insert -> Model menu item and uploaded it to the server, placing it in a module named SatelliteModel. I then took a snapshot of the world (to preserve its state) and exited the client and killed the server.

Next, I ran the server using the trunk codebase. This populated the ~/.wonderland-server/0.5-dev/ directory. I then installed the Clickable Link module [1]. (I'm just using Clickable Link as an example; you will need to re-install any modules you had installed manually when using 0.5 User Preview 2). I then killed the server for the time being.

As a next step, I manually copied over key directories from the 0.5-preview2/ directory into the 0.5-dev/ directory. Here's what I did:

  1. Copy the SatelliteModel/ directory in the ~/.wonderland-server/0.5-preview2/run/content/modules/installed/ directory to the ~/.wonderland-server/0.5-dev/run/content/modules/installed/ directory. Since I imported the model via the Insert -> Model menu item, it packaged the model into a module and installed it on my server. This first step copied that module from my old installation to my new installation. (You should do this for any model you installed this way). Related to this is Step 2. Note that models that have been dragged-and-dropped into the world are uploaded to WebDav, and migrated in Step 3 below.
  2. Copy the SatelliteModel/ directory in the ~/.wonderland-server/0.5-preview2/run/content/checksums/modules/ directory to the ~/.wonderland-server/0.5-dev/run/content/checksums/modules/ directory. When modules are installed, the system computes checksums for certain of their assets. Since I manually copied the module from the previous installation (Step 1 above), the checksum-generating step did not occur for my new installation. Manually copying the old checksum computation should be sufficient.
  3. Copy the users/ directory in the ~/.wonderland-server/0.5-preview2/run/content/ directory to the ~/.wonderland-server/0.5-dev/run/content/ directory. This copies over all of the content that was uploaded to the server when I dragged-and-dropped content into the world. (If you placed content in the system/ directory, you may wish to copy that over too).
  4. Copy the snapshots/ directory in the ~/.wonderland-server/0.5-preview2/wfs/ directory to the ~/.wonderland-server/0.5-dev/wfs/ directory. This copies over the snapshot I took after I created my world in 0.5 User Preview 2.

After these four steps, I restarted the server running the latest Project Wonderland codebase and restored to the snapshot I took in 0.5 User Preview 2 that I copied over to my new installation. After I restarted the client, I saw the world as I left it in the previous version of the software.

While these manual steps should not take too long to do, a migration tool to perform the migration automatically would be a big help. If you are interested in writing such a tool, I think it would make an excellent contribution from the community.

[1] When I wrote this blog, the Clickable Link module was kept in the unstable/ section of the wonderland-modules workspace. It has since been promoted to the stable/ section and is now bundled with Project Wonderland.  

by Jordan Slott on November 23, 2009

November 21, 2009

Katy Dickinson's Blog

Grange Hall

I was recently in a Lions Club meeting at the Prunedale Grange Hall on California's central coast. These halls are buildings of The National Grange of the Order of Patrons of Husbandry, a fraternal organization for American farmers, founded in 1867. The Grange is the oldest surviving agricultural organization in America, important politically after the Civil War.

Meeting in a Grange Hall felt a little like doing business in Boston's Faneuil Hall, a building still in use but suffused with history. On the wall was this Mission Statement:

      The Granges of California provide opportunities to enhance your communities today for the generations of tomorrow by promoting growth through family, community, and grassroots legislative action.

The dents in the wooden floor were testimony to heavy use of the Prunedale Grange.

DSCN6894 DSCN6934 DSCN6909

Images Copyright 2009 by Katy Dickinson

by katysblog on November 21, 2009

November 20, 2009

Katy Dickinson's Blog

Famous Women in Computer Science

I recently read a University of Bristol (UK) web page about women behind important advancements in Computer Science: "Famous Women in Computer Science". I don't know the University of Bristol's selection criteria (other than "women" and "Computer Science") but their list seems too short. Last week, I sent email to Sun's Women in Engineering to ask, for curiosity's sake, "Who would you add to this list?"

Below is the original list, the names added by the Sun women, plus some references. The list is uneven and I am sure there are many more who should be added but here is what I have so far...

Original List (alphabetized, not original order):

    • Frances E. Allen, 1st female IBM Fellow, 1st female recipient of ACM's A. M. Turing Award (2006), WITI Hall of Fame 1997, IEEE Fellow 1991, ACM Fellow 1994
    • Anita Borg, founding director of the Institute for Women and Technology (IWT), which became the Anita Borg Institute, WITI Hall of Fame 1998, ACM Fellow 1996
    • Carly Fiorina, CEO Hewlett-Packard 1999-2005
    • Adele Goldstine, authored the Manual for the ENIAC in 1946
    • Shafi Goldwasser, RSA Professor of Electrical Engineering and Computer Science at MIT, and of computer science and applied mathematics at Weizmann Institute of Science in Israel, ACM Grace Murray Hopper Award 1996
    • Grace Murray Hopper, developed the 1st compiler for a computer programming language, US Navy Rear Admiral, in 1973 became the 1st person from the USA and the 1st woman of any nationality to be made a Distinguished Fellow of the British Computer Society, IEEE Fellow 1962 (1st woman awarded)
    • Augusta Ada King (Countess of Lovelace), 1843 wrote a description of Charles Babbage's early mechanical general-purpose computer, the analytical engine. She is credited with being the 1st computer programmer.
    • Barbara H. Liskov, Ford Professor of Engineering in the MIT School of Engineering's Electrical Engineering and Computer Science department, 2nd woman to win ACM's A. M. Turing Award (2008), 1st US woman to be awarded a PhD from a computer science department in 1968, ACM Fellow 1996
    • Kay McNulty, Betty Snyder, Marlyn Wescoff, Ruth Lichterman, Betty Jennings, and Fran Bilas, original programmers of the ENIAC, WITI Hall of Fame 1997
    • Jean E. Sammet, IBM computer languages FORMAC and COBOL, ACM Fellow 1994
    • Erna Schneider, in 1971 awarded one of the 1st software patents ever issued, at Bell Labs, she became the 1st female supervisor of a technical department
    • Eva Tardos, Professor and Chair of Computer Science at Cornell University, ACM Fellow 1998
    • Meg Whitman, CEO eBay 1998-2008

List Additions (suggested by Sun Women in Engineering)

    • Carol Bartz, President and CEO of Yahoo! (starting in 2009), previously Chairman, President, and CEO at Autodesk (1992-2009), WITI Hall of Fame 1997
    • Lenore Blum, Distinguished Career Professor of Computer Science, Carnegie Mellon University
    • Safra A. Catz, President Oracle Corporation since 2004, CFO Oracle since 2005, Member Oracle Board since 2001
    • Diane Greene, VMWare co-founder and CEO (1998-2008)
    • Helen Greiner, 1990-2008 Co-founder, Board Chair of iRobot, Anita Borg Institute Woman of Vision - Innovation award winner 2008, WITI Hall of Fame 2007
    • Wendy Hall, Professor of Computer Science, University of Southampton, UK, 2008 ACM President, 2009 Dame Commander of the Order of the British Empire (DBE), 2009 elected a Fellow of the Royal Society (FRS)
    • Mary Lou Jepsen, Founding CTO of One Laptop per Child (OLPC), Founder and CEO, Pixel Qi, WITI Hall of Fame 2008
    • Maria Klawe, 5th president of Harvey Mudd College (1st woman in that role), previously Dean of the School of Engineering and Applied Science at Princeton University, 2002 ACM President, ACM Fellow 1996
    • Sandra Kurtzig, founder and CEO of ASK computers (1972-1991)
    • Susan Landau, Sun Microsystems Distinguished Engineer, Anita Borg Institute Woman of Vision - Social Impact award winner 2008
    • Evi Nemeth, Associate Professor Emeritus of Computer Science, University of Colorado, Co-author of the best-selling UNIX System Administration Handbook (Prentice Hall, 1995)
    • Radia Perlman, the 'Mother of the Internet', 1st Sun Microsystems female Fellow, 1st Anita Borg Institute Woman of Vision - Innovation award winner 2005, IEEE Fellow 2008
    • Janie Tsao Co-Founder of Linksys (1988-2003), 1st Anita Borg Institute Woman of Vision - Leadership award winner 2005
    • Jeanette Wing, President's Professor of Computer Science (former CS Department Head), Carnegie Mellon University, Assistant Director, Computer and Information Science and Engineering Directorate, National Science Foundation, IEEE Fellow 2003, ACM Fellow 1998

Other References

by katysblog on November 20, 2009

November 19, 2009

Katy Dickinson's Blog

Chocolate Dinner for SMUM

DSCN5891

On 17 October 2009, Saint Timothy's Episcopal Church ("St. Tim's") in Mountain View, California held a fund raising formal dinner and auction called "A Feast of All Things Chocolate" to benefit Santa Maria Urban Ministry or SMUM. Peggy Aoki was the head chef, assisted by Jennifer Ezell of St. Tim's. The cooks clearly had fun putting together the meal, especially the desserts. Both dark and white chocolate fountains were offered for dipping strawberries and cake. My favorite was the ganache in shortbread boats. St. Tim's youth served the dinner. The event was hosted by the Vestry (elected church leaders). We won certificates for two custom made cakes in the silent auction.

My husband John Plocher and I are on the SMUM Board of Directors and were asked to speak about SMUM and why we support it. Some of what we said:

Santa Maria Urban Ministry was founded as an outreach ministry of the Episcopal Diocese of El Camino Real in 1983, providing emergency food to the residents of San Jose's inner city. SMUM is a partner agency of the Second Harvest Food Bank, and has been designated to serve those in need within the eight Central San Jose zip codes. SMUM provides basic services to meet short-term needs, such as food, clothing and referral services, and by supporting long-term transformation through education, counseling and seasonal programs.

John and I have been helping mentor a dozen or so grade and middle school kids in the after school program for several years. During the school year, we focus on homework and computer skills. Last summer, we went on field trips to The Tech Museum of Innovation, the Monterey Bay Aquarium, and the San Francisco Zoo.

Due to a shortage of regular volunteers, the after school program is only open on Tuesdays and Thursdays, but we could be open every weekday if we had more adults available. Sometimes we have too many high school students earning service hour credits; what we need is adult volunteers. When we started, John's and my qualifications were minimal - a desire to help, a couple of hours a week and a willingness to learn Spanish from a first grader! Since then, the kids have stolen our hearts. Our Spanish is improving slowly.

SMUM now has an operating budget of about $200,000/year, of which less than 15% comes from the Episcopal Church. More than 100 families a week from come to the facility for basic foodstuffs to supplement what they are able to buy with food stamps. Dozens of homeless clients get hygiene packs and clothing as well.

Several dozen children are part of the preschool and after school homework/computer programs. Many Latino clients work seasonally in the central valley as fieldworkers and move to San Jose on the off season to work in the construction and service areas. Unfortunately, it is still somewhat the norm in that community for young teens to drop out of school to babysit younger siblings or to go out to work along with their fathers, brothers and uncles in the fields. SMUM's after school program has two goals:

    • Every child will feel safe and cherished.
    • Every child will be encouraged to complete high school.

A Feast of All Things Chocolate, Photos

DSCN5882 DSCN5908 DSCN5880

SMUM, Photos

DSCN5820 DSCN5827 DSCN6601 DSCN6872

Images Copyright 2009 by Katy Dickinson and John Plocher

by katysblog on November 19, 2009

November 18, 2009

Jordan Slott's Blog

Reviewing Wonderland Code In-World

As the Wonderland core team, we spend a lot of time using Wonderland.  We use it for meetings, we use it for collaborative work, and we even use the world for socializing. But this week we tried something new: a group code review in Wonderland.

Code reviews are an on-going process that we usually work on asynchronously: I email out the code for review, and the reviewers get back to me once they have gone through it. While this is effective for small changes, in this case we wanted to review a large amount of code with the whole group. So we decided to get together in world and discuss the code together, almost like a reading group.

The biggest challenge was getting the code into world. We could have brought a NetBeans editor into world, but that would force everyone to have the same view. Instead, we used Drew Harry's slide spreader app to display PDFs of the source code. We found it works much better when everyone has their own view of the source.  That way we can assign people to break out of the main discussion and answer specific questions before joining the main group again.  And by using the spatial layout, we can always see at a glance where everyone is.  Here is what it looks like in-world:


Overall, it worked pretty well. We were able to explore the code both as a group and individually. And seeing the code sweeping off into the distance definitely gave a sense of how much there is to review!

There is still plenty of room for improvement.  We had to make the slides very big to make them easier to read, but this makes it hard to align your view with the slides. It would have been great to be able to see the code in the HUD.  Also, there is no syntax highlighting and no ability to jump to other parts of the code, which would have sped things up significantly. All this got me thinking it would be nice to have a lightweight shared code viewer -- maybe based on JSyntaxPane -- to use in world. Sounds like a new module to write...

by Jonathan Kaplan on November 18, 2009

Jeff Alexander's Blog

Replicated Replicants

Oracle has just recently released a new version of Oracle Berkeley DB Java Edition including new High Availability features. These allow you to keep multiple database instances in sync (using a single master). Some time ago I was asked if we'd like to help evaluate a pre-release version of the code, and of course I said yes. We've been waiting for HA features to be available in the database to implement our own replication support so it was a perfect fit for evaluation. Some very insightful people had good things to say about it. Since we had a head start, I already have a working version of the AURA Data Store with replication.

The AURA Data Store has three tiers - the Data Store Head serves as the communication point to the outside world and also distributes queries to each of the many Partition Clusters. Partition Clusters each represent a single partition of the data, replicated across a cluster of Replicants. Until recently we only supported a single Replicant, but thanks to BDB-JE/HA we now have support for multiple replicas. If you're following along in the source code you'll want to update to the "replication" branch to see the work being done. Adding support was fairly straightforward once I got a handle on how each of the nodes in a replication group are connected to each other. We already had infrastructure that expected to work this way, so integration was smooth. When setting up the group, you specify how closely synchronized the replicas need to be, and when committing transactions you can specify just how far into the disk or network you want the commit to go before returning. So we commit to the master and in a few seconds we can expect to see changes in the replicas.

The only catch was that we maintain both a database and a search engine. We haven't put any support in the search engine for HA (although a single index can have multiple readers and writers if we were sharing it). So for the time being I have a thread that picks up any changed item keys from the master and informs the replicas that they should fetch those items from their respective databases and re-index them. What would be nice would be if we could get an event stream from the database in the replicas notifying us that a new or updated item just came in. Another option might be to actually store the search engine's data in the database and let it do the replication, but the nature of the inverted file doesn't really lend itself to this (at least, not with any hope of performing well).

Anyway, the real excitement here was that for the first time, we got to see our data store visualization show us multiple Replicants for each Partition Cluster:

This is a screenshot showing a very small ("two-way") data store. It is running with only one DataStoreHead, and the data is divided across two partitions. Each partitions has three Replicants. While the Replicants are drawn inside the Partition Clusters, it should be noted that they are actually separate processes running on separate machines. The grouping is just a logical view. I opened up the overall Item Stats display to show that we only have a small number of items. To make the screenshot more interesting, I'm running a 2,000 user load test that simulates the actual operations users would perform (basically, a weighted mix of getting item details, searching, and getting live recommendations) when using an application such as the Music Explaura.

As you can see in the image, we're distributing query load fairly evenly across all Replicants in each Partition Cluster. Replicants do most of the heavy lifting in terms of data crunching. In order to benefit from the greater amount of cache afforded us by the greater number of processes/memory, we distribute what queries we can based on the hash code of the item key, thereby asking for the same items from the same Replicants. The Partition Clusters are doing a little work in distributing those queries, and the Data Store Head is doing a little more work in that it needs to combine results from across Partition Clusters.

I plan to do some more posting about how BDB-JE/HA is integrated into the AURA Data Store, so stay tuned!

by Jeff Alexander on November 18, 2009

Katy Dickinson's Blog

1007 Circle Park, Knoxville, Tennessee

circlepark.knoxville.TN circlepark.knoxville.1938 1007circle.knoxville.1964

My mother, Eleanor Creekmore Dickinson, grew up at 1007 Circle Park Drive, Knoxville, Tennessee. This address does not exist any more. In the mid-1960's, the whole neighborhood was torn down to make room for the University of Tennessee. You can check out Circle Park on Google Maps: the satellite view shows that Circle Park itself is still there but the round street around it is now called Circle Park Drive SW or Circle Park Drive. Originally, Circle Park was a private open space owned by the houses around it.

It is surprising how much of a presence a house that does not exist still has. 1007 Circle Park stood on its own acre of land. It had towers, secret passages (an air gap between inner and outer walls), and a teardrop-shaped carriage drive in the side yard with a porte-cochere to keep the rain off. There were stables and three servant quarters in the back. My great grandfather, Walter Van Gilder, bought the house around 1910. It was ornate Victorian in style, built around the time of the American Civil War.

After 1965, when Evelyn Van Gilder Creekmore and Robert Elmond Creekmore (my grandparents) knew that their home would be torn down, they took as much of the house with them as they could when they moved. This included doors, architectural trim, windows, banisters, and ironwork as well as furniture. Over the years those pieces have been installed in a variety of our family's houses in California and Tennessee.

My husband, John Plocher just finished bolting the extremely heavy black iron fireback (featuring Poseidon and seahorses) into the exterior wall of his new workshop. In our house, we also have furniture carved by Ellen Bolli Van Gilder (my great grandma), a parlor screen with six paintings by my ancestress Mary Esperandieu, the newel post from the 1007 Circle Park staircase, a heater grate, a metal fire screen, several panels of stained glass and clear leaded glass, and a variety of mirrors that Walter Van Gilder made himself for 1007 Circle Park.

The bottom left photo shows the front door of 1007 Circle Park on the day my mother married my father in 1952. In the picture, she is being escorted to the wedding by her father, R.E. Creekmore, flanked by my other grandparents (B.W.O. Dickinson and Gladys Grace Oakes Dickinson) and Ellen Bolli Van Gilder. The doors and stained glass panel in the back of that 1952 photo are the same doors and stained glass panel in my parents' house in San Francisco now, shown on the right with my mother at the door. Walter Van Gilder made the glass panel.

Great Grandpa's mirrors, Dirk Van Gilder
photo: copyright 2008 Katy Dickinson DSCN6999 DSCN6982 DSCN6989
DSCN6984 DSCN6985 DSCN6986 Great Grandparents' mirror, Dirk Van Gilder and Ellen Bolli Van Gilder
photo: copyright 2008 Katy Dickinson
BWO Dickinson, R.E. Creekmore, Eleanor Creekmore Dickinson, Ellen Bolli Van Gilder, Gladys Grace Dickinson, Dirk Van Gilder's stained glass
photo: copyright 2008 Katy Dickinson Eleanor Creekmore Dickinson, 1007 Circle Park Knoxville Tennesee doors and stained glass in San Francisco California photo: copyright 2006 Katy Dickinson

Images Copyright 1938-2009 by Katy Dickinson and Eleanor Dickinson

by katysblog on November 18, 2009

November 17, 2009

Karl Haberl's Blog

Slipstream: A Framework for Building Scalable Games

Developers using Project Darkstar to simplify the development and execution of horizontally scalable online games should check out a new project focused on effective programming for that environment.  Slipstream presents a framework for game development with Project Darkstar and includes both an open source code base and a detailed programming guide providing examples, patterns and best practices.  Slipstream is intended to help Project Darkstar developers focus on how their game logic can be more easily designed to build better, more scalable applications.  The guide lists effective programming practices, and the code uses specific interfaces like Game, Player or Region to give clear direction about how to use Project Darkstar and implement the guide's best-practices.  The goal of the framework is to make it extremely easy to write a first game, and then extend and expand that game as it needs to grow.  Grab the Slipstream code and read through the guide to simplify and improve your Project Darkstar game development project.  For more details, start with the forum post where the project was announced. Have fun!

by stp on November 17, 2009

Katy Dickinson's Blog

Geek Heaven - HSC Electronic Supply

HSC Electronic Supply of Santa Clara, California is geek heaven. The better-known Fry's Electronics is a pale shadow in comparison (Fry's sells steam irons and manila folders as well as motherboards). According to the New York Times in their 4 February 2009 article "A Haven for Spare Parts Lives On in Silicon Valley", by Ashlee Vance:

      "For close to 50 years, Halted has supplied the do-it-yourself electronics enthusiasts so common in Silicon Valley with just about anything they could imagine. Like the many electronics stores once populating the area, Halted helped turn entrepreneurs’ inklings into huge success stories. These days, however, Halted caters more to hobbyists than titans of industry because much of the fundamental computing manufacturing has moved to Asia... Apple’s co-founders, Steven P. Jobs and Stephen Wozniak, shopped at Halted, hunting down parts for their first products."

My husband, John Plocher and I were at HSC the other day looking for parts for his HO-scale model train layout. If you like putting together your own electronics, you will be happy at Halted.

DSCN6818 DSCN6819 DSCN6824
DSCN6827 DSCN6826 DSCN6820 DSCN6821

Images Copyright 2009 by Katy Dickinson

by katysblog on November 17, 2009

Sculptural Agave

Agave is one of my favorite plants. I am growing an agave hedge along the side of our driveway; in a few years, it will be taller than I am. The stiff and thorny strap-like leaves arrange themselves like a living sculpture. Weeding around agave is painful (I use very long tongs). Some photos of my agave just after a light rain:
DSCN7007 DSCN7004 DSCN7005

Images Copyright 2009 by Katy Dickinson

by katysblog on November 17, 2009