. .

smalltalk

Some StS Video Is Up

April 12, 2011 21:54:30.046

Some of the video from Smalltalk Solutions 2011 is up - if you go to the relevant STIC page, there's a list of links. Some of them lead to video, and some of them lead only to the slide decks (although those all say that the video will be forthcoming). You have to click through on each link to tell whether there's video or not; it would be nice if that info were on the index page. The good news is, the video is all hosted on Vimeo, so it'll work on any mobile device you use, not just flash enabled ones.

Technorati Tags:

posted by James Robertson

 Share Tweet This

smalltalk

Where is that Method Defined?

April 12, 2011 11:11:12.149

Sometimes you look at a method's declared location and wonder. Take this method in class Text (VisualWorks), for example:

 

allItalic
	"Set the emphasis for all characters in the receiver to be italic."

	self emphasizeAllWith: #italic

 

Looks like a generic method that should be part of the core aspect of class Text, right? Well, it's not - it's located in package Debugger-Support. This cropped up on us this week, due to the way we do builds now. Instead of RTP stripping, our tool just yanks packages - including Debugger-Support. Whoops. The solution I came up with was to clone the method with a new name in one of our own packages, and change the references in our code (thankfully, only one) to use the new method. This looks like something Cincom should clean up though...

posted by James Robertson

 Share Tweet This

js4u

JS 4U 46: JQuery Effects 1

April 12, 2011 8:09:09.689

Javascript 4 U

Today's Javascript 4 You. Today we look at two JQuery effects - hide and show. If you have trouble viewing it here in the browser, you can also navigate directly to YouTube.

Join the Facebook Group to discuss the tutorials. You can view the archives here.

To watch now, click on the image below:

JQuery Effects

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:

Technorati Tags: , , ,

Enclosures:
[js4u46-iPhone.m4v ( Size: 3121995 )]

posted by James Robertson

 Share Tweet This

gadgets

Change the Data Plan, Lose the Voice Mail

April 11, 2011 19:00:00.000

A couple of weeks ago, I changed the data plan on my iPhone in order to get access to the mobile hotspot feature. Unbeknownst to me, doing that torched support for voicemail - the person who set up the new data plan left it off. It took me two phone calls to ATT to get that resolved - not because they were difficult, but because their back end provisioning sounds difficult. The tech support person I was just on the line with didn't understand why the voice mail was gone at first. Sounds to me like they need some simplification back there.

posted by James Robertson

 Share Tweet This

smalltalk

Test Reporting with SUnitToo

April 11, 2011 14:40:57.589

 

What I wanted was a simple configuration object - it would hold a collection of TestCase class names, in a specific order. Those classes have a class method, #order which specifies the order for the tests in the class. If the method is absent, then I just query the class for all test methods and use the order that comes back. Actually running tests is pretty easy, and there's a nice class - Results - already there to gather results for you:

 

tests do: [:eachTest |
		| tc |
		tc := aTestCaseClass selector: eachTest.
		self orderRun add: eachTest.
		tc run]

 

To get the results saved, all you do is something like this:

 

Results collectWhile: [self runTestsInOrder].

 

You end up with a nice set of passed, failed, and errored out tests, which you can then easily report on. I created a simple little reporter object that dropped out three html tables, each wrapped in a named div (so that someone with some CSS awareness could do something useful with the results). It all came together pretty quickly. Next up: creating a simple UI to create the test configurations.

posted by James Robertson

 Share Tweet This

st4u

ST 4U 68: Save and Start a New VA Image

April 11, 2011 8:15:02.338

Today's Smalltalk 4 You looks at setting up a working environment in VA Smaltalk: starting the installed image, connecting to ENVY, saving the image in that state, and then easily starting that saved image. If you prefer a written walkthrough to video, then skip down to it. 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:

Setting up VA Smalltalk

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. For this video, I captured my entire screen - you can watch the full size video here.

You can also watch it on YouTube:


Once you've installed VA Smalltalk, you can start your development environment up with the shortcut that was installed in the start menu. We'll get to how you save and start a different image in a moment - once you start the default image, you'll be presented with what's below - a dialog asking you to connect to the ENVY repository. ENVY is the source code management system for VA Smalltalk; we'll be getting deeper into that in the future. For now, simply hit the "Ok" button and let the system connect to the repository.

Start VA

Once you accept the dialog, VA will prompt you again, and then start synching up to the repository. Once it's done doing that, you'll see the second screen below:

Connect to ENVY

Connect to ENVY

Now, you probably don't want to do that every time you fire up VA - you'll want to save your image. What does that mean? Wikipedia has a good explanation of what a Smalltalk image is; suffice to say that it's a memory snapshot of everything that's going on in the Smalltal system - when you restart it, you'll be in the exact same place you were when you saved - just like hibernating a laptop.

From the launcher (the main window you saw when you started VA), pull down the file menu. Select "Save Image As...". When prompted, enter a file name different than one you are running (abt). That will save a new file into the appropriate directory. Next, open up a file browser on that directory (using your OS tools - here, I'm using Windows Explorer). Copy the file configuration file named abt, paste it, and rename the new file to match the image snapshot you just took - as shown below:

Setup a New Image

Now you can create a desktop shortcut if you like - make sure that the working directory is the one that the .icx file you saved is in, and that the target is the new .icx file - see below:

Setup a New Image

Now, double click on the shortcut - you should be right back where you left off. Need more help? There's a screencast for this topic which you may want to watch. Questions? Try the "Chat with James" Google gadget over in the sidebar (better chance of getting me that way evenings or weekends though)

Technorati Tags: , , ,

Enclosures:
[st4u68-iPhone.m4v ( Size: 7478049 )]

posted by James Robertson

 Share Tweet This

games

Dragon Age 2: More Thoughts

April 10, 2011 16:27:55.658

The Hawke Files

Now that I'm well into my second playthrough of Dragon Age 2 on both on both my Mac and the XBox, I have a few more thoughts on the game

First, I should address some of the complaints about the game I heard on The Dragon Age Podcast. I had a long talk with my daughter about the podcast while we listened to it (she's a big fan of the game as well) - I should have recorded the conversation :) Basically, I have to say this: the guy who complained so much about the combat wasn't paying attention. Why do I say that? Well, his primary complaint seemed to be that lots of the battles involve endless waves of lower level foes. That's only true if you don't find the boss and kill him. Each of the big battles has a boss; the waves of reinforcements keep coming until you deal with that boss. How have I been dealing with that boss?

  • Keep two tanks in the party, one mage with healing, and one rogue
  • Focus the tanks on the boss, peeling one off if the mage gets attacked directly
  • Have the mage heal - especially with "Aid Allies" - often
  • Buy lots of elfroot potions to fill in the cooldown gaps with healing
  • Keep hammering the boss until he or she dies

There's exactly one battle in the game where I had to kite (on normal difficulty) - the duel against the Arashok at the end of act 2. I was playing a mage in that battle, so kiting would be expected. Heck though, you can avoid that dual and just fight the room (and that ends up being easier, as you have your whole party).

Ultimately, it sounds like the host wanted to play a rogue like he was able to play one in DAO. In DAO, you could level a rogue's dexterity up high enough to make them effectively unhittable, and basically play the rogue as a tank. You can't do that in DA2 - you have to run your battles more tactically, and make use of one or two warriors. By the same token, I found warriors to be really hard to play in DAO (underpowered compared to rogues and mages), while in DA2, they are on an equal footing. Yes, the map reuse is annoying. But if you hate the combats, I strongly suspect that you're doing it wrong.

Technorati Tags: ,

posted by James Robertson

 Share Tweet This

podcastAAC

IM 24: Smalltalk in the Cloud (AAC)

April 10, 2011 10:21:35.698

Welcome to episode 24 of Independent Misinterpretations - a Smalltalk and dynamic language oriented podcast with James Robertson, Michael Lucas-Smith, and David Buck. This week's podcast was recorded at Smalltalk Solutions 2011 in March, 2011. It's my talk on "Smalltalk in the Cloud" - focusing on running a Smalltalk server using cloud services, and utilizing other cloud services.

You can find my slides here, and all of the slides here.

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.

If you like the music we use, please visit Josh Woodward's site. We use the song Troublemaker for our intro/outro music. I'm sure he'd appreciate your support!

If you have feedback, send it to jarober@gmail.com - or visit us on Facebook - you can subscribe in iTunes using this iTunes enabled feed.. If you enjoy the podcast, pass the word - we would love to have more people hear about Smalltalk!

Technorati Tags: , , ,

Enclosures:
[im24.m4a ( Size: 20680638 )]

posted by James Robertson

 Share Tweet This

podcast

IM 24: Smalltalk in the Cloud

April 10, 2011 10:21:26.068

Welcome to episode 24 of Independent Misinterpretations - a Smalltalk and dynamic language oriented podcast with James Robertson, Michael Lucas-Smith, and David Buck. This week's podcast was recorded at Smalltalk Solutions 2011 in March, 2011. It's my talk on "Smalltalk in the Cloud" - focusing on running a Smalltalk server using cloud services, and utilizing other cloud services.

You can find my slides here, and all of the slides here.

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.

If you like the music we use, please visit Josh Woodward's site. We use the song Troublemaker for our intro/outro music. I'm sure he'd appreciate your support!

If you have feedback, send it to jarober@gmail.com - or visit us on Facebook - you can subscribe in iTunes using this iTunes enabled feed.. If you enjoy the podcast, pass the word - we would love to have more people hear about Smalltalk!

Technorati Tags: , , ,

Enclosures:
[im24.mp3 ( Size: 14892251 )]

posted by James Robertson

 Share Tweet This

games

Game Day

April 10, 2011 8:07:55.000

Looks like November 11 will be "game day" - Minecraft will be leaving beta, and Skyrim will be out:

We picked November 11, with the unofficial tagline 'us too'," writes the game's creator, Markus "Notch" Persson on his official blog. "It's the same date as a few other games and movies, and the one I'm the most excited about is Skyrim, so that will be a nice reward for me if we actually manage to hit that date!"

posted by James Robertson

 Share Tweet This

smalltalk

Why Smalltalk

April 9, 2011 8:05:08.746

Andy Berry explains why he has used - and continues to use - Smalltalk as his software development platform of choice.

posted by James Robertson

 Share Tweet This

st4u

ST 4U 67: Squeak Process Monitor

April 8, 2011 6:35:23.850

Today's Smalltalk 4 You looks at the Process Monitor in Squeak. 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:

Process Monitor

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:

Technorati Tags: , , ,

Enclosures:
[st4u67-iPhone.m4v ( Size: 3476022 )]

posted by James Robertson

 Share Tweet This

smalltalk

Updating Packages in a Bundle

April 7, 2011 11:48:12.888

The development process where I work treats bundles as configurations - manifests for all the proper (for that trunk/branch of development) that will go into a release. Given that, individual developers generally don't publish a bundle. A build is created, and part of that process spits out an associated development image. From there, the developer works (and publishes) the package(s) he or she is responsible for.

So... one of the things I got tired of was "let's see what packages have been updated inside the bundle" - so I added a method like this to the browser:


updatePackagesInBundle
	"add menu item to RB"

	<menuItem: 'Update Packages in Bundle...'
		icon: nil
		nameKey: #mesPackagesUpdate
		enablement: #isBundleSelected
		indication: nil
		menu: #(#pundleMenu)
		position: 200.1>

	| pundle stream version match |
	(self pundles size > 1 or: [Store.DbRegistry isConnected not])
		ifTrue: [^Dialog warn: 'Select one bundle and/or establish a Store Connection'].
	pundle := self pundles first.
	stream := pundle versionString readStream.
	stream skip: 1.
	version := stream upTo: $,.
	match := version size 

I have a class that handles the actual updating, BundleDef. The relevant code there looks like this:


getRecordsAndUpdatePackages
	self getMatchingRecord.
	self allContainedPackagesAndBundles.
	self updateAllPackages.

That gets any newer published package in the same branch (based on the version string passed in), and then iteratively updates each package (including those in contained bundles). The work is in the last two methods above:


allContainedPackagesAndBundles
	"get the full collection of contained packages and bundles"

	self allContainedPackagesAndBundlesFor: pundle.
	containedBundles add: pundle.

allContainedPackagesAndBundlesFor: aBundle
	"answer a collection of all the packages I have, regardless of bundles in the middle"

	| items  |
	items := aBundle containedItems.
	items do: [:each |
		each isBundle
			ifTrue: [self allContainedPackagesAndBundlesFor: each.
					containedBundles add: each]
			ifFalse: [containedPackages add: each]].

And finally, the check and update:


updateAllPackages
	"iterate over the packages and update them"

	containedPackages do: [:each |
		| all newerMatch |
		all := Store.Package allVersionsWithName: each name newerThan: each.
		newerMatch := all detect: [:each1 | versionFragment match: each1 version] ifNone: [nil].
		newerMatch 
			ifNotNil: [Transcript show: 'Updating: ', each name; cr.
						newerMatch loadSrc]].

I just verified that this works in the upcoming 7.8 release of VW; it probably does use the (soon to be deprecated) Store objects though. I'll have to investigate that soon

Technorati Tags: , ,

posted by James Robertson

 Share Tweet This

js4u

JS 4U 45: JQuery Events

April 7, 2011 7:08:27.949

Javascript 4 U

Today's Javascript 4 You. Today we look at using JQuery selectors in conjunction with events. If you have trouble viewing it here in the browser, you can also navigate directly to YouTube.

Join the Facebook Group to discuss the tutorials. You can view the archives here.

To watch now, click on the image below:

JQuery Events

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:

Technorati Tags: , ,

Enclosures:
[js4u45-iPhone.m4v ( Size: 2876014 )]

posted by James Robertson

 Share Tweet This

smalltalk

The Place for Smalltalk

April 6, 2011 14:30:04.000

A new Smalltalk hosting environment (code repository) is in the process of bootstrapping:

We've been working on a new code repository & project management application for Smalltalk with ESUG named SmalltalkHub. If everything goes fine, the app should be in public beta in a week. The source code of SmalltalkHub will be available at the same moment (the project itself is hosted by SmalltalkHub).

Nicholas Petton has posted a screen shot of the work in progress.

Technorati Tags: , ,

posted by James Robertson

 Share Tweet This

st4u

ST 4U 66: Parsing XML in Squeak

April 6, 2011 9:36:25.620

Today's Smalltalk 4 You looks at the XML Parser that comes with Squeak 4.2. 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:

XML Parsing

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:

Technorati Tags: , , ,

Enclosures:
[st4u66-iPhone.m4v ( Size: 7814156 )]

posted by James Robertson

 Share Tweet This

smalltalk

Pharo 1.2.1 is Out

April 6, 2011 8:31:52.968

Pharo 1.2.1 has shipped:

The Pharo Project is proud to announce the release of Pharo 1.2.1, the third major release of this clean, innovative, open-source Smalltalk environment.

Follow the link for more details and download info.

Technorati Tags:

posted by James Robertson

 Share Tweet This

smalltalk

More Pharo Doc

April 6, 2011 6:17:02.820

Looks like using Metacello in Pharo just got easier - there's been a doc refresh:

here is a new version of the metacello chapter. So we wrote it, rewrote it, rerewrote it. Now if this is of interest for you you can read it

Technorati Tags: ,

posted by James Robertson

 Share Tweet This

smalltalk

Running an Older VAST?

April 5, 2011 20:20:38.000

Instantiations has a really detailed migration guide online - looks like it has all the information about upgrading that you could possibly need.

Technorati Tags: ,

posted by James Robertson

 Share Tweet This

smalltalk

Packaging VA Smalltalk Apps

April 5, 2011 16:47:57.000

Looks like Thomas Koschate is going to be exploring the topic of packaging VA Smalltalk apps. I've done a lot of work on the equivalent process in VW; I'll be interested to see what he has to say for comparison purposes.

Technorati Tags: ,

posted by James Robertson

 Share Tweet This

gadgets

iPad Desire

April 5, 2011 11:51:51.000

In China, even the dead want iPads....

Technorati Tags:

posted by James Robertson

 Share Tweet This

js4u

JS 4U 44: More on JQuery Selectors

April 5, 2011 8:14:23.222

Javascript 4 U

Today's Javascript 4 You. Today we focus in a little more on how to use JQuery selectors to locate and operate on specific page elements. If you have trouble viewing it here in the browser, you can also navigate directly to YouTube.

Join the Facebook Group to discuss the tutorials. You can view the archives here.

To watch now, click on the image below:

JQuery Selectors

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:

Technorati Tags: , ,

Enclosures:
[js4u44-iPhone.m4v ( Size: 6359177 )]

posted by James Robertson

 Share Tweet This

smalltalk

Talking Smalltalk

April 5, 2011 5:46:23.512

WebQA interviews Nicholas Petton about the various Smalltalk projects he's been involved with - including JTalk, his latest.

Technorati Tags: ,

posted by James Robertson

 Share Tweet This