Dear 43 Things Users,

10 years after introducing 43 Things to the world, we have decided we have met our last goal: completing the incredible experience that has been 43 Things. Please join us in giving one last cheer to all the folks who have shared their goals with the world, as well as all the people who have worked at The Robot Co-op to build this incredible website. We won a Webby Award, published a book, and brought happiness to a lot of people.

Starting today, 43 Things users can export their goals and entries from the site. Starting August 15, we will make the site “read only”. 43 Things users will still be able to view the site and export their content, but we won’t be taking any new content from users. We hope to leave the site up for folks to see and download their content until the end of the year. Ending on New Year’s Eve takes us full circle.

It has been a long ride (one of our original goals was to "build a company that lasts at least 2 years” - we beat that one!) While we wish the site could live on, it has suffered from a number of challenges - changes in how people use the site, the advertising industry, and how search engines view the site. We wish the outcome was different – but we’ve always been realistic about when our goals are met and when they aren't.

As of today, you will be able to download your goals and entries. See more about that on the FAQ page. Thanks for 10 great years of goal-setting and achieving.

- The Robots.

Export My Content
FAQ

xprogrammer is doing 6 things including…

Create the most popular GUI toolkit for Java

1 cheer

 

xprogrammer has written 6 entries about this goal

Glyphs

The basic glyphs at the moment are

  • RectangleGlyph – fill a rectangle with a specific Paint
  • LineGlyph – draw a line with a specific Stroke and Paint
  • TextGlyph – a string with a Font and Paint
  • ImageGlyph – a image.
  • GroupGlyph – a composite which can be used to apply transforms (and possibly effects) to a set of Glyphs

The advantage of this model over previous style sheet based methods is that each Glyph knows its size, position and visual state. Therefore it can exist without requiring a lot of context information. I might take the graphics state (Paint, Stroke, Font) out into a style object to allow sharing and setting of global effects more easily.



Model design

It is really important to me that the model be a plain Java object. It shouldn’t have to implement any special interfaces in order to be part of a GUI.



Controller design

The controller at the moment is looking like 2 parts.

  • Event handling
  • Binding

The main event loop looks like

Event e = getEvent();
dispatchEventToHandlers( e );
applyBindings();
repairViewDamage();


View design

I’ve taken another look at the View side of things. My preference is now a display tree modelled after SVG.

Uses Glyph as the metaphor (not sure about this), but it seems lightweight enough.

The Glyph draws its contents and reports damage up to its parent. At the root the damage is collected, then repaints are performed within the damaged region.

Currently developing this on a PIII which is good for spotting performance problems quickly.

The biggest one seems to be with Java image drawing performance.The solution is to make sure that all images are created in a screen compatible BufferedImage format.

From a design point of view I’d like to use immutable objects to represent the bounds, etc but the expense of creating objects when transforming up the Glyph hierarchy might be too much. This really needs to be very fast, as it will be called all the time in the most performance critical part of the code.



Feedback

Got some great feedback from the guys at eXtreme Wednesday. The main points were that reflection based APIs are really difficult to learn, you can’t use the code completion features of IDEs etc.

They did seem convinced that the concept is good – which was a relief.

The main concept is – “View controls repaint”



Exposure

I’m finally showing some of the stuff I developed to others tomorrow. Hopefully they will be impressed.



xprogrammer has gotten 1 cheer on this goal.

 

I want to:
43 Things Login