Welcome to episode 54 of Independent Misinterpretations - a Smalltalk and dynamic language oriented podcast with James Robertson and David Buck.

This week we have another ESUG 2011 session - Johan Brichnau's talk on a dynamic abstraction layer for web apps. From his abstract:

Multiuser web applications often need to manage concurrent (and potentially conflicting) operations on shared data. The parallel processing of web requests and the disconnected client-side view on that shared data raise ample opportunities for users to make conflicting changes. When such conflicts arise, we may or we may not need to inform the user of the conflict. To this end, database transaction mechanisms are a performant and proven technology for detecting and managing conflicting changes. When each user's web session maintains its isolated view on the database and operations are wrapped in transactions, we are able to prevent, detect and handle all such conflicts. At the same time, however, such applications easily become dependent on a particular database's technical abilities. Even when only considering the object-oriented databases GOODS, Magma and Gemstone, the differences in how database views and transactions work are vast. For example, Magma supports nested transactions while GOODS does not. An even more important difference is that when using Magma and GOODS, we can maintain a separate database view per web session and rely on the transaction mechanism to handle all conflicts. In Gemstone's GLASS integration of Seaside, however, incoming requests always share the same database view. This means only parallel execution conflicts are trapped by the transaction mechanism. With DALi, a database abstraction layer, we build Seaside-based web applications that are database independent and rely on database transactions to manage inter-user application-level conflicts as well as parallel execution conflicts directly. DALi is currently implemented for Pharo Smalltalk (with GOODS, Magma or image-based backends) and GemStone GLASS.

You can subscribe to the podcast in iTunes (or any other podcatching software) using this feed directly or in iTunes with this one.

To listen now, you can either download the mp3 edition, or the AAC edition. The AAC edition comes with chapter markers. You can subscribe to either edition of the podcast directly in iTunes; just search for Smalltalk and look in the Podcast results. You can subscribe to the mp3 edition directly using this feed, or the AAC edition using this feed using any podcatching software. You can also download the podcast in ogg format.

Welcome to episode 54 of Independent Misinterpretations - a Smalltalk and dynamic language oriented podcast with James Robertson and David Buck.

This week we have another ESUG 2011 session - Johan Brichnau's talk on a dynamic abstraction layer for web apps. From his abstract:

Multiuser web applications often need to manage concurrent (and potentially conflicting) operations on shared data. The parallel processing of web requests and the disconnected client-side view on that shared data raise ample opportunities for users to make conflicting changes. When such conflicts arise, we may or we may not need to inform the user of the conflict. To this end, database transaction mechanisms are a performant and proven technology for detecting and managing conflicting changes. When each user's web session maintains its isolated view on the database and operations are wrapped in transactions, we are able to prevent, detect and handle all such conflicts. At the same time, however, such applications easily become dependent on a particular database's technical abilities. Even when only considering the object-oriented databases GOODS, Magma and Gemstone, the differences in how database views and transactions work are vast. For example, Magma supports nested transactions while GOODS does not. An even more important difference is that when using Magma and GOODS, we can maintain a separate database view per web session and rely on the transaction mechanism to handle all conflicts. In Gemstone's GLASS integration of Seaside, however, incoming requests always share the same database view. This means only parallel execution conflicts are trapped by the transaction mechanism. With DALi, a database abstraction layer, we build Seaside-based web applications that are database independent and rely on database transactions to manage inter-user application-level conflicts as well as parallel execution conflicts directly. DALi is currently implemented for Pharo Smalltalk (with GOODS, Magma or image-based backends) and GemStone GLASS.

You can subscribe to the podcast in iTunes (or any other podcatching software) using this feed directly or in iTunes with this one.

To listen now, you can either download the mp3 edition, or the AAC edition. The AAC edition comes with chapter markers. You can subscribe to either edition of the podcast directly in iTunes; just search for Smalltalk and look in the Podcast results. You can subscribe to the mp3 edition directly using this feed, or the AAC edition using this feed using any podcatching software. You can also download the podcast in ogg format.

Today's Smalltalk 4 You starts making use of Glorp against Oracle with a simple query - about as simple a query as you can make, as it happens. If you have trouble viewing it here in the browser, you can also navigate directly to YouTube. To watch now, click on the image below:

If you have trouble viewing that directly, you can click here to download the video directly. If you need the video in a Windows Media format, then download that here.

You can also watch it on YouTube:

Today we'll get started with using Glorp in VA Smalltalk with Oracle. We've already set up basic connectivity; today we'll have a look at one of the classes (DatabaseAccessor) that you'll end up using in VA Smalltalk.

That uses basic Oracle facilities to do the simple math problem. The more important thing from our perspective is the API: #basicExecuteSQLString:. We'll be using this, and other facilities of DatabaseAccessor over the next few screencasts. Once you execute and inspect that, you should see this:

Finally, logout:

"logout"
accessor logout.

Next time we'll start taking a real look at creating database descriptors, so that we can start interacting with tables using GLORP.

Today we talk about some of the quests we've been doing - centered loosely around the mage college quests out of Winterhold. A lot of other things came up, including the number of dragons we've slain, the skill/perk system, and some of the weirder random encounters we've had.

If you liked our work on That Podcast, you'll probably like this. We intend to stay with the same idea - a gameplay podcast. If you don't want spoilers, don't listen - we are going to be talking about how we play the game, and what we ran across as we played.

Today we talk about some of the quests we've been doing - centered loosely around the mage college quests out of Winterhold. A lot of other things came up, including the number of dragons we've slain, the skill/perk system, and some of the weirder random encounters we've had.

If you liked our work on That Podcast, you'll probably like this. We intend to stay with the same idea - a gameplay podcast. If you don't want spoilers, don't listen - we are going to be talking about how we play the game, and what we ran across as we played.

GemStone/S 64 3.0.1 was released on Monday of this week.GemStone/S 64 Bit 3.0.1 is a new version of the GemStone/S 64 Bit object server. This release provides feature enhancements and fixes a number of serious 3.0 bugs.

Today's Smalltalk 4 You starts working with Glorp descriptors - which is how you define mappings between objects and tables in Glorp.. If you have trouble viewing it here in the browser, you can also navigate directly to YouTube. To watch now, click on the image below:

DescriptorSystem defines the basics for interacting with a database using Glorp; the subclass we are setting up will define the table mappings we want to use. Today we are going to define a simple mapping to a table (Emp), and then we are going to use Glorp to create that table in the database. There are a few methods we need to define, all instance side. To start with, we need a #tableForTABLENAMEHERE: method - note the caps, which will be replaced by actual name of the table:

This is the pattern you'll use to map Smalltalk objects (instance variables) to columns. We'll explain how the column names get mapped to instance variables below. You'll also need a method to define all the tables being mapped by this descriptor; it should return an array:

That's how most descriptors you create will look (with the specifics for the tables/classes filled in, of course). Now we can make use of this code to create the Emp table in the database (Oracle in this case):

I'm playing Skyrim on both my XBox and my Mac (using Parallels), so my progress in both games is running about the same - I can't play on the XBox while I'm in Texas, and I mostly play the XBox when I'm home. On the PC game, I've been doing the mage college quest, looking for the Staff of Magnus - and I've gotten to this room in Labyrinthian:

I spent about 20 minutes (at an absurdly late hour last night) staring at that room and at the map, trying to figure out where to go. I guess the name has meaning :)

Today's Smalltalk 4 You looks at menu pragmas in VisualWorks - a way to dynamically modify a menu without having to edit the menu specification itself. If you have trouble viewing it here in the browser, you can also navigate directly to YouTube. To watch now, click on the image below:

If you have trouble viewing that directly, you can click here to download the video directly. If you need the video in a Windows Media format, then download that here.

Today we talk about our characters, and the widely different paths through the game we've taken. Not all of us have done the main quest yet, so we aren't talking about that yet - probably next episode. The title comes from me - I keep managing to get my companions killed :)

If you liked our work on That Podcast, you'll probably like this. We intend to stay with the same idea - a gameplay podcast. If you don't want spoilers, don't listen - we are going to be talking about how we play the game, and what we ran across as we played.

Today we talk about our characters, and the widely different paths through the game we've taken. Not all of us have done the main quest yet, so we aren't talking about that yet - probably next episode. The title comes from me - I keep managing to get my companions killed :)

If you liked our work on That Podcast, you'll probably like this. We intend to stay with the same idea - a gameplay podcast. If you don't want spoilers, don't listen - we are going to be talking about how we play the game, and what we ran across as we played.

Welcome to episode 55 of Independent Misinterpretations - a Smalltalk and dynamic language oriented podcast with James Robertson and David Buck.

This week Dave and I address the (completely misguided, in our opinion) meme that "you don't need a debugger". As you might expect from a couple of experienced Smalltalk hands, we don't think much that :)

You can subscribe to the podcast in iTunes (or any other podcatching software) using this feed directly or in iTunes with this one.

To listen now, you can either download the mp3 edition, or the AAC edition. The AAC edition comes with chapter markers. You can subscribe to either edition of the podcast directly in iTunes; just search for Smalltalk and look in the Podcast results. You can subscribe to the mp3 edition directly using this feed, or the AAC edition using this feed using any podcatching software. You can also download the podcast in ogg format.

Welcome to episode 55 of Independent Misinterpretations - a Smalltalk and dynamic language oriented podcast with James Robertson and David Buck.

This week Dave and I address the (completely misguided, in our opinion) meme that "you don't need a debugger". As you might expect from a couple of experienced Smalltalk hands, we don't think much that :)

You can subscribe to the podcast in iTunes (or any other podcatching software) using this feed directly or in iTunes with this one.

To listen now, you can either download the mp3 edition, or the AAC edition. The AAC edition comes with chapter markers. You can subscribe to either edition of the podcast directly in iTunes; just search for Smalltalk and look in the Podcast results. You can subscribe to the mp3 edition directly using this feed, or the AAC edition using this feed using any podcatching software. You can also download the podcast in ogg format.

Today we talk about a lot of things, but mostly about the different paths we're all taking through the game. Enchanting, swordplay, smithing, and magic - this game is so big, we're all diverging a lot - and we're all looking forward to our next playthrough so we can try something different (even though we haven't nearly finished our first :) ).

If you liked our work on That Podcast, you'll probably like this. We intend to stay with the same idea - a gameplay podcast. If you don't want spoilers, don't listen - we are going to be talking about how we play the game, and what we ran across as we played.

Today we talk about a lot of things, but mostly about the different paths we're all taking through the game. Enchanting, swordplay, smithing, and magic - this game is so big, we're all diverging a lot - and we're all looking forward to our next playthrough so we can try something different (even though we haven't nearly finished our first :) ).

If you liked our work on That Podcast, you'll probably like this. We intend to stay with the same idea - a gameplay podcast. If you don't want spoilers, don't listen - we are going to be talking about how we play the game, and what we ran across as we played.