You are currently browsing the category archive for the ‘Squeak’ category.

CalculusAs of this morning, builderCI supports Pharo-3.0 and GemStone 3.1.0.3.

The total number of versions that can be automatically tested using Travis-CI and GitHub is now 16 (6 Pharo versions, 3 Squeak versions and 7 GemStone versions).

For information on using builderCI, see the project README.

Photo by http://www.flickr.com/photos/encels/4059671027 / CC BY-NC-SA 2.0

DGJ_1453 - Murano Glass[1]

GemTools 1.0-beta.8.6 has been released. With this release the GLASS upgrade process has been improved, yet again.

One-Click 1.0-beta.8.6 GemTools

One-Click GemTools images are available on the GLASS downloads page. GemTools images are available for use with GemStone/S 2.3.xGemStone/S 2.4.4.x, and GemStone/S 3.0.1.x,

GLASS Upgrade Cha Cha

I suppose it is a little known fact that the GemTools code base includes code that is used to drive the GLASS upgrade process, although my constant entreaties to “upgrade GemTools to the latest version before upgrading GLASS” may have given you a clue or two.

I thought I’d take this opportunity to describe what goes on behind the scenes when you select the  Update > Update GLASS menu item in GemTools. This section should be especially useful if you prefer to upgrade your system without running GemTools.

For a complete upgrade script, take a look at the GLASS upgrade script page on the glass db wiki. The GLASS upgrade script page will always have the latest and greatest upgrade script.

Through the ‘Update GLASS’

The upgrade process has been greatly simplified since I first started using Metacello for bootstrapping GLASS 1.0-beta.0, back in November of 2009, but the basic steps have remained the same:

  1. bootstrap the latest version of Metacello
  2. bootstrap the latest version of Monticello
  3. upgrade GLASS

Bootstrap Metacello

Currently Metacello 1.0-beta.31.1 is the version that is needed for a smooth upgrade process:

ConfigurationOfMetacello project currentVersion versionNumber < '1.0-beta.31.1' asMetacelloVersionNumber ifTrue: [
        (Gofer new)
            gemsource: 'metacello';
            version: 'Gofer-Core.gemstone-dkh.135';
            version: 'Metacello-Base-DaleHenrichs.19';
            version: 'Metacello-Core-dkh.468';
            version: 'Metacello-MC-dkh.531';
            version: 'Metacello-Platform.gemstone-dkh.23';
            load ].

It turns out that the best formula for bootstrapping Metacello is to directly load the key packages. I would have liked to use Metacello to bootstrap itself, but for GLASS we need to upgrade a wide range of Metacello releases dating back to over a year ago and there are several bugs that make it impractical to do anything but load the packages directly.

Bootstrap Monticello

To bootstrap Monticello, we use the GLASS configuration and load the ‘Core’ and ‘Monticello’ projects:

MCPlatformSupport commitOnAlmostOutOfMemoryDuring: [[[
    (ConfigurationOfGLASS project version: '1.0-beta.8.7.1') 
        load: #( 'Core' 'Monticello' )
] 
    on: MetacelloSkipDirtyPackageLoad
    do: [:ex | ex resume: false ]]
        on: Warning
        do: [:ex | 
            Transcript cr; show: ex description.
            ex resume ]].

We wrap the load with an out-of-memory handler.

The MetacelloSkipDirtyPackageLoad handler is there to compensate for a bug in the Monticello package loader that occasionally resulted in a package being marked dirty after a successful load.

The Warning handler is also there to ensure that packages needed for the upgrade are loaded whether or not they are marked dirty.

Upgrade GLASS

The GLASS upgrade is completed by doing a simple load:

MCPlatformSupport commitOnAlmostOutOfMemoryDuring: [[[
    (ConfigurationOfGLASS project version: '1.0-beta.8.7.1') 
        load
] 
    on: MetacelloSkipDirtyPackageLoad
    do: [:ex | ex resume: false ]]
        on: Warning
        do: [:ex | 
            Transcript cr; show: ex description.
            ex resume ]].

—–

[1]http://www.flickr.com/photos/archer10/5228946002 / CC BY-SA 2.0

Auto Kit Wrench Set[1]

GemTools 1.0-beta.8.5 has been released. With this release there have been several bugfixes:

  • Issue 132 : Use System class>>#”cacheName:” to make session recognizable in vsd
  • Issue 250 : order and size of args asociated with #halt changed in Gci3xErrStype64 (GemStone 3.0)
  • Issue 280: GemTools login error: ”Network error – text follows”, does not follow with error message…
  • Issue 291: Maintenance Gem Topaz Exit 3.0 / GemStone 3.0

as well as some tweaks to the GLASS upgrade process.

Upgrades

I always recommend that you update GemTools before upgrading GLASS, because the GLASS upgrade process is driven by code included in GemTools. When you select the Update GLASS menu item, the class OGUpgradeJadeServer (included in the GemTools distribution) is compiled on the server and is then used to control the upgrade process.

Speaking of upgrading GLASS… If you are interested in doing a GLASS upgrade from a topaz script take a look at this page on the glassdb wiki has the most up-to-date instructions.

Help

Don’t forget that when you load GemTools into Pharo and Squeak, a set of Help Browser pages are created to provide the most up-to-date information on getting started with GemStone and the GemTools image.

Pharo

Before releasing 1.0-beta.8.5, I tried loading GemTools into some of the more recent Pharo releases, like Pharo 1.3 and Pharo 1.2, but unfortunately the OmniBrowser implementation in those images is incompatible with the OmniBrowser required for GemTools. The latest version of Pharo that I found that works with GemTools is Pharo1.1.2-11422.

Squeak VM versions

While we’re on the subject, you should also be aware that in order to connect to GemStone, you must use an older version of the Squeak vms (4.2.2 or older) to avoid an FFI bug. For more details, see Issue 258.

—–
http://www.flickr.com/photos/nhankamer/5616046050 / CC BY-NC 2.0

Lighthouse (Leuchturm) WittenbergenThanks to the hard work of Norbert Hartl, GemTools can now be loaded into Pharo 1.1.

If you’d like to build your own GemTools on top of Pharo 1.1, then download Pharo 1.1 image (core or dev) and follow the installation instructions here.

If you are using GemTools 1.0-beta.8.2 on Pharo 1.0 or Squeak 4.1, you can upgrade to 1.0-beta.8.3, but there should be no functional differences.

Photo by http://www.flickr.com/photos/dditt/3958565556/ / CC BY NC ND 2.0

[1]

GemTools 1.0-beta.3 features:

  • improve ”Show Object log” output format
  • add ”List backup files” command
  • add some missing icon definitions for Squeak
  • load OB/Shout if not present
  • ProfStef tutorials (Pharo only for the moment)

The major change with this version is that the installation instructions are included as part of GemTools release. The last statement in install expression opens an interactive tutorial (created with ProfStef) in the Smalltalk image to guide you through the necessary steps to finish the GemTools install. The tutorial provides guidance for several different tasks from installing GemStone/S to opening the GemTools Launcher. A How To… button has been added to the GemTools Launcher with step by step tutorials for the following topics (so far):

  • How to finish the GemTools installation
  • How to define a GemTools session to log into your GemStone server
  • How to update your GemStone server code (GLASS.230-dkh.164 through GLASS.230-dkh.231)
  • How to open GemTools Launcher
  • How to install and start a GemStone Server
  • How to build a custom extent (GLASS 1.0-beta.4 and later)
  • How to update your GLASS software after building a custom extent (GLASS 1.0-beta.4 and later)
  • How to update your GemTools client software

Here’s a sample screen from the ‘How to finish the GemTools installation’:

What this means for you is that the installation instructions will match the version of GemTools that you are installing and you won’t have to guess which blog post has the right instructions for your situation. I will be updating the tutorials to cover more subjects and I welcome the contributions of tutorials from others (just let me know and I’ll add you as a developer to GemTools repository).

Wiki and Bug Reports

In the last week or so, I created a Google Code project for GLASS called glassdb. The project provides a public wiki and a public issue reporting system. I encourage you to submit a bug if you run into issues using GemTools or GLASS.

With a public bug reporting system it is now possible for you to contribute bugfixes as well as bug reports. If you want to contribute let me know and I’ll you to the glassdb project and add you to the GLASS DEVS group on GemSource.

Update GemTools

Execute the following code in a Squeak or Pharo workspace:

ConfigurationOfGemTools loadLatestVersion

Or click on  the Update… button in the GemTools Launcher and select Update GemTools Client menu item.

Install GemTools

Execute the following code in a Pharo workspace after downloading a recent version of Pharo (tested with Pharo1.0-10508-rc2dev10.01.2 and PharoCore-1.0-10508rc2 images):

Gofer new
        squeaksource: 'MetacelloRepository';
        package: 'ConfigurationOfGemTools';
        load.
(Smalltalk at: #ConfigurationOfGemTools) perform: #loadLatestVersion.
(Smalltalk at: #ProfStef) perform: #goOn: with: (Smalltalk at: #OGFinishGemToolsInstall)

Until ProfStef  is ported to Squeak and Gofer is installed in the trunk, you’ll have to follow these instructions (tested with Squeak3.10.2-Trunk-090912).

—–

[1]http://www.flickr.com/photos/radiorover/ / CC BY-NC-ND 2.0

[1]

GemTools 1.0-beta.2 features:

  • fix update client logic to use #lastMetacelloVersionLoad
  • change annotation pane and make more room for useful info
  • inspect undefined and inspect sent but not implemented menu items available only when tests are installed
  • clean up preferences problems
  • Admin>>Seaside submenu available only when Seaside2.8 installed
  • improve session window label (include the session name) when working with multiple stones

Install

To install the GemTools Client in a virgin Squeak or Pharo image jump to the Install instructions.

Update

For version 1.0-beta.0 of the GemTools Client,  follow these Update instructions.

For version 1.0-beta.1:

  1. Logout of your GemStone session(s).
  2. Click on the Update Client button and select ‘1.0-beta.2’.
  3. Save your client image.

—–
[1]http://www.flickr.com/photos/dystopos/91980377/ / CC BY-NC 2.0

[1]

With the 1.0-beta.1 release of the GemTools Client, we’re doing two things:

  1. Conforming to the new Metacello configuration naming convention.
  2. Getting ready for the imminent GLASS 1.0-beta.0 release.

GemTools 1.0-beta.1 features:

  • Convert to using ConfigurationOfGemTools.
  • Nicer info dialog when Undefined symbols and Unsent messages are clean
  • Support for GemStone/S 3.0 GciErrSType
  • Change restore from backup done message … do not prompt to start Seaside gems if Seaside is not installed
  • Replace dialogs that are calling “ifNotEmpty:” with: “isEmptyOrNil” (from Gerhard)
  • autoAbort _before_ commands is now optional (off by default)

If you’ve already installed the GemTools Client 1.0-beta.0, then you want to follow the Update instructions. To install the GemTools Client in a virgin Squeak or Pharo image jump to the Install instructions.

Update

With GemTools Client 1.0-beta.0 already installed, we need to update to using ConfigurationOfMetacello as well as ConfigurationOfGemTools:

  1. Load the latest version of the ConfigurationOfMetacello package  from http://seaside.gemstone.com/ss/metacello.
  2. Load the latest version of the ConfigurationOfGemTools package  from http://seaside.gemstone.com/ss/GLASSClient.
  3. Execute the following expression in a workspace:
    ConfigurationOfMetacello loadLatestVersion.
    ConfigurationOfGemTools loadLatestVersion.

Then continue with Step 3 of the installation instructions.

Installation

If you haven’t already been using the GemTools 2.3.1 Preview for all platforms (which is based on Pharo), then you should download the preview GemTools client and follow the instructions for setting up your session to verify that you can connect to your stone. You’ll need the session information and the gci files from the Preview to get things running with the either Squeak or Pharo.

I’ve tested the installation procedure using Squeak3.10.2-Trunk-090912 and pharo1.0-10492-rc1dev09.11.1.

To load GemTools into a client image:

  1. Load the latest version of the ConfigurationOfGemTools package  from http://seaside.gemstone.com/ss/GLASSClient.
  2. Execute the following expression in a workspace:
    ConfigurationOfGemTools loadLatestVersion.
  3. Execute the following expression to open the GemTools launcher:
    OGLauncher open
  4. Copy the session information from your old GemTools Client to the new GemTools Client in your image. Use the Edit session menu item on the Session Menu in the launchers.
  5. Save the image.
  6. Copy the gci files (gciForWindows.dll, gciForLinux.so, and gciForMacintosh.so) from GemTools-2.3.1-preview.app/Contents/Resources in the one-click into the directory containing your image and changes files. On the Macintosh, the gciForMacintosh.so needs to be copied to both the image directory and the vm.app/Contents/Resources directory (thanks Mark and Ken).
  7. Press the Login button on the GemTools Launcher and you should be in business.

—–
[1]http://www.flickr.com/photos/randyweiner/ / CC BY-NC-ND 2.0

[1]

Shortly after I announced the GemTools Client for Pharo, Gerhard Obermann jumped in and refactored a number of the GemTools menus using sub menus. Unfortunately, I got involved in a number of other tasks (including refining the Metacello API) before I could push his changes out. Now that Metacello is stabilized, it is time to revisit the installation and update procedures for the GemTools Client.

[Update 10/16/2009: fixed egregious errors in the installation instructions … 2 steps and the first step was plain wrong:) … thanks Gerhard]

[Update 11/04/2009] Please see the GemTools Client 1.0-beta.1 post for up-to-date instructions.

Installation

[Update 11/04/2009] Please see the GemTools Client 1.0-beta.1 post for up-to-date instructions.

If you haven’t already been using the GemTools 2.3.1 Preview for all platforms (which is based on Pharo), then you should download the preview GemTools client and follow the instructions for setting up your session to verify that you can connect to your stone. You’ll need the session information and the gci files from the Preview to get things running with the either Squeak or Pharo.

I’ve tested the installation procedure using Squeak3.10.2-Trunk-090912 and pharo1.0-10470-BETAdev09.10.2.

To load GemTools into a client image:

  1. Load the latest version of the GemTools-Configuration package  from http://seaside.gemstone.com/ss/GLASSClient. GemTools-Configuraton-dkh.12 is currently the most recent version.
  2. Execute the following expression in a workspace:
    GemToolsConfiguration loadLatestVersion.
  3. Execute the following expression to open the GemTools launcher:
    OGLauncher open
  4. Copy the session information from your old GemTools Client to the new GemTools Client in your image. Use the Edit session menu item on the Session Menu in the launchers.
  5. Save the image.
  6. Copy the gci files (gciForWindows.dll, gciForLinux.so, and gciForMacintosh.so) from GemTools-2.3.1-preview.app/Contents/Resources in the one-click into the directory containing your image and changes files.
  7. Press the Login button on the GemTools Launcher and you should be in business.

Last December when I first introduced the GemTools Launcher, it took 6 steps to install the GemTools Client code:

installSteps1

In July I announced the GemTools Client for Pharo (based on version 0.9 of Metacello), it took 4 steps:

installSteps2

Today it takes only 2 steps:

installSteps3

The configuration class bootstraps Gofer and Metacello, then loads FFI and finally loads the OGLauncher application code. Danged close to a one-click install:)

Update

To update the GemTools Client to a later version, you can follow the instructions for the Update…menu.

If you have any trouble join and send mail to the GLASS Beta Mailing List.

—–
[1]Photo by Okinawa Soba (Creative Commons).

[1]

In the last month, Gerhard Obermann and I have been pretty busy. Between us we’ve made over 80 updates to the GemTools package and over 20 updates to the GLASS package.

At this point in time, I think that the GemTools Launcher (GemStone-dkh.441) and the OmniBrowser tools are stable enough that you no longer need to be Brave and/or Curious to take the new tools and GLASS.230-dkh.209 for a spin. In fact the tools are probably in better shape now than they’ve ever been (I haven’t seen the MNU storms that would periodically appear in the old client for quite awhile). If you’re reluctant to upgrade, check out the new Backup/Restore commands. Being able to backup/restore your repository from the GemTools Client should ease your mind.

I still have between 50 and 100 issues that I want to address (mainly on the server-side) before the next beta release. In the mean time, I am all but done with the UI changes and I would like feedback from folks on the new commands. If you haven’t already, join the beta mailing list and send mail with your comments and suggestions.

If you run into (gasp!) a bug, use the new Bug Report commands to report the bug. Honestly, I would rather have people report 100 duplicate bugs than miss 1 valid bug report – don’t assume that I know about the problem!

GemStone-dkh.441

There have been a significant number of changes to the GemTools Client since the last preview release, so many that I decided to update the old Terse Guide to the GLASS Tools with a new post: Terse Guide to the (new) GLASS Tools. All of the menu items for the GemTools Launcher are documented.

If you haven’t already created a new GemTools client smalltalk image, then follow these instructions.

If you’ve already updated to a preview release, then you’ve already got a new Squeak/Pharo image and all you need to do is to update to the latest version of the GemTools Client, using these instructions.

Take a look at the GemTools change log for a complete history of the changes made between GemStone-dkh.355 and GemStone-dkh.441.

GLASS.230-dkh.209

In addition to the support needed for the GemTools Launcher a number of bugs were fixed:

  • Bug39820 – packages dirtied unnecessarily when recompiling subclasses
  • Bug38105 – HTTPSocketError not correctly loaded
  • Bug38794 – Subclass creation method leaves instance creation disabled
  • Bug39838 – ExceptionA class>>hasFixFor39741 breaks some things
  • Bug38146 – unload class and remove method should clean up undeclared sybmols
  • Bug39798 – UndefinedSymbols is not maintained correctly
  • Bug39850 – MCPackageBrowser doesn’t update when package dirtied
  • Bug39345 – ‘Squeak browser tools need move-to-category button’
  • Bug39578 – ‘”revert to version” in “Versions of” method browser does not autocommit’
  • Bug39303 – sorting of change list in Monticello brower is strange
  • Bug39823 – missing OSkSocketReadStream>>upToEnd
  • Bug39800 – SeasideTesting has probably decayed…
  • Bug39777 – Cannot ‘browse’ ProtoObject without a walkbalk
  • Bug39772 – Class>>allSubInstancesDo: always fails
  • Bug39582 – lots of key-not-found errors using Vocabulary browser
  • Bug38140 – ‘highlight inspect’ feature for debugger
  • Bug38274 – need visual separation between ancestors in MCWorkingCopy>>summary
  • Bug38304 – CTL-i on a String or Smallinteger ends up with Squeak inspector
  • Bug39662 – Inspecting a float in GLASS results in a ‘Float out of Range’ error in Squeak
  • Bug39827 – missing base method for GLASS
  • Bug39795 – MAPriorityContainer>>remove: fails unexpectedly

Other highlights include:

The following packages have bee removed from the GLASS package:

  • MonticelloConfigurations
  • Pier-LightBox
  • Pier-Twitter
  • SqueakSource
  • TinyWiki

These packages are not automatically removed by the update process. If you aren’t using them, then you should manually unload them using the Monitcello Browser. If you don’t remove them you may see test failures for the UndefinedSymbolsTest and SentButNotImplementedTest. After removing the above packages the tests should run clean (4182 run, 4182 passed, 0 failed, 0 errors).

Once you’ve updated to the latest version of the GemTools Client, follow these instructions to update the GLASS server software to GLASS.230-dkh.209.

Take a look at the  GLASS change log for a complete history of the changes made between GLASS.230-dkh.187 and GLASS.230-dkh.209.

—–

[1] Photo by placbo (Creative Commons).

[1]

[Update 3/16/2009: see the post GLASS Beta Update: Cooking with GLASS (Preview) for the latest preview information].

As a few brave souls discovered, the process for updating to the new crop of tools is a little more complicated than it needs to be. A couple of them even got their fingers pinched during the update:).I was looking for feedback, so I appreciate the effort. Hopefully their sacrifices will be worthwhile.

updatelauncher

There weren’t that many changes made to the OmniBrowser code in GLASS post GLASS.230-dkh.177, however, the changes that were made created havoc for any windows opened prior to the update. I had originally hoped that a couple of errors between friends would be okay, but enough people ran into odd problems during the updates to GLASS.230-dkh.182 and GLASS.230-dkh.183, that it became clear that the update process needed to be improved.

I tried a number of things including an attempt to work around the problems with the new GemTools Client code. I was successful in getting the new GemTools Client to run against the older versions of GLASS (which is a step in the right direction), but I wasn’t able to get around the crashes and walkbacks. With a nudge from Igor Stasenko, I finally settled on using an update script.

In the end I made two significant changes to the update process:

  1. Update the GemTools client before updating the server. In the past we’ve updated the server-side code first and then updated the client-side code. However, since we’re recommending that users move to a completely different client image, I think it is easier to get the client update out of the way before doing the server update, especialy now that the latest GemTools Client code will run against older versions of GLASS. Any problems in getting the GemTools Client built and connected to the server can be worked out before making changes on the server side.
  2. Update the Server using a script instead of the Monticello Browser. With this particular update, using a script is necessary since the windowing mechanism for the current session becomes broken during the update. In the long run, it is useful to have a script-based update mechanism that can be used to update production repositories that aren’t easily accessed through the GemTools Client.

Preview GLASS.230-dkh.187

Since GLASS.230-dkh.183 I’ve made a handful of improvements that are worth trying out:

  • merge Pier-Model-lr.245, load Pier-Blog-lr.103.
  • OSTestRunner bugfixes.
  • debugIt implemented. debugIt opens a Debugger on the selected code, setting a breakpoint on the first statement.
  • exploreIt implemented. exploreIt opens a Chasing Inspector on the result of evaluating the selected code.
  • Remove MonticelloConfigurations as a required package.

If you’ve been following the mailing list, you will have noted that we’ve received a flurry of bug reports in the last week or so. I appreciate the bug reports, but because I intend to address a good number of them before the next beta update, the next update will be deferred for at least 2 more weeks.

1. Update GemTools Client: GemStone-dkh.355

If you choose to use Pharo as the basis of your GemTools Client, be sure to download the latest dev image as a starting point. As of today, pharo0.1-10211dev09.01.2.zip is the latest dev image. If you choose to use Squeak as your GemTools Client, start with a basic 3.10 image like Squeak3.10-7159-basic.zip.

sessiondef1Use the Universe Browser, select the GemTools-Client version 0.355 package (in Network category) and install it. Note that during the install using 3.10, you will be warned about an extension to OTToolset – is is safe to proceed.

Open a Workspace and evaluate the expression ‘OGLauncher open‘ and then edit the Glass session, inserting the login information that is relevant to your system – stoneHost, gemHost, stoneName and netLDI.

Login using the GemToolsLauncher and get ready to update the GLASS repository to GLASS.230-dkh.187. Note that during the login using Pharo, you will get a warning about using a deprecated #authorInitials: api – it is safe to proceed.

Even though the Class Browser and Monticello Browser are functional, I wouldn’t try to do too much work using the new GemTools Client and an old version of GLASS. For best results you should immediately update your GLASS repository.

I’ve used the new GemTools Client to upgrade GLASS.230-dkh.164 (corresponding to 2.3 release and the 1.0beta11 appliance) and GLASS.230-dkh.177 (corresonding to the 2.3.1 release) with good results.

Since I’m still actively working on the new tools, I don’t plan to publish a ‘one-click’ GemTools Client, until the rate of change has settled down.

2. Update GemStone Repository: GLASS.230-dkh.187

The following update script:

  1. Adds a method to SystemChangeAnnouncement.
  2. Turns off autoMigrate.
  3. Loads GLASS.230-dkh.187 from the GemSource repository.
  4. Sets autoMigrate back on.
  5. Performs a commit.

The code should be pasted into the workspace pane of a Gemstone-dkh.355 GemTools Launcher or run from a topaz session.

| httpRepository version rg |
SystemChangeAnnouncement 
    compileMethod: 'item: ignored' 
    category: 'accessing'.
MCPlatformSupport autoMigrate: false.
httpRepository := MCHttpRepository
    location: 'http://seaside.gemstone.com/ss/GLASS'
    user: ''
    password: ''.
"pick up the GLASS repository if it's already
 in default repository group"
MCRepositoryGroup default repositoriesDo: [:rep |
    rep = httpRepository ifTrue: [ httpRepository := rep ]].
version := httpRepository
    loadVersionFromFileNamed: 'GLASS.230-dkh.187.mcz'.
version load.
rg := version workingCopy repositoryGroup.
rg addRepository: httpRepository.
MCPlatformSupport autoMigrate: true.
System commitTransaction.

If you’ve used the GemTools Launcher to run the update script you should logout and then log back in before continuing with your work. If you use topaz to update the repository, you need to remember to use a GemStone-dkh.355 GemTools Client to connect to your repository.

The GemTools Client is still in preview, so unless you are brave and/or curious, I’d recommend that you stick with a more stable version of GLASS.

———-

[1] Photo by EricGjerde via Flickr (Creative Commons).

Enter your email address to subscribe to this blog and receive notifications of new posts by email.

Join 447 other subscribers

Categories

RSS GLASS updates

  • An error has occurred; the feed is probably down. Try again later.

RSS Metacello Updates

  • An error has occurred; the feed is probably down. Try again later.

RSS Twitterings

  • An error has occurred; the feed is probably down. Try again later.
May 2024
M T W T F S S
 12345
6789101112
13141516171819
20212223242526
2728293031