. .

st4u

ST 4U 182: Durations and Delays

January 16, 2012 11:03:27.485

Today's Smalltalk 4 You continues looking at the basic Smalltalk class libraries in VA Smalltalk - today it's the Delay and Duration classes. 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:

Timers.

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 look at class Delay and Duration. You'll need these classes anytime you want to set up a timer of some kind in VA Smalltalk (such as in a process that wakes up periodically to do some task). To get started, we want to look at the two classes:

Delay and Duration

You can use Delay without using Duration; Duration makes it easy to specify a time interval (by second, millisecond, day, or even longer time periods). That makes it easy to specify an interval, and then set up a Delay to wait for that interval. You do that via the #wait message:


"use a duration"
duration := Duration seconds: 10.
ms := duration asMilliseconds.
Transcript show: 'Now: ', DateAndTime now asMilliseconds printString; cr.
(Delay forMilliseconds: ms) wait.
Transcript show: 'End: ', DateAndTime now asMilliseconds printString; cr.




What we did above is specify a duration, and then use that duration as the interval for the Delay. If you look in your Transcript afterwards, you'll see the following:

Delays and Duration

You can simply specify a number of seconds or milliseconds in Delay, without using a Duration; Duration just makes it easy to set up a time interval:


"use seconds"
Transcript show: 'Now: ', DateAndTime now  printString; cr.
(Delay forSeconds: 5) wait.
Transcript show: 'End: ', DateAndTime now printString; cr.

Need more help? There's a screencast for other topics like this which you may want to watch. Questions? Try the "Chat with James" Google gadget over in the sidebar.

Technorati Tags: , ,

Enclosures:
[st4u182-iPhone.m4v ( Size: 4936586 )]

posted by James Robertson

 Share Tweet This

smalltalk

Amber Smalltalk 0.9.1 Released

January 16, 2012 15:11:37.000

Smalltalk on Javascript continues to move forward.

Technorati Tags: ,

posted by James Robertson

 Share Tweet This

smalltalk

Smalltalk, Pharo, iPad

January 16, 2012 17:13:22.000

DR Geo, using Pharo - on an iPad

Technorati Tags: , ,

posted by James Robertson

 Share Tweet This

skyrim

Thu'umcast 17: Follow the Stone Crumbs

January 16, 2012 22:35:31.333

Thu'umcast

Welcome to episode 17 of "Thu'umcast" - a podcast where Michael Lucas-Smith, Scott Dirk, Austin Haley, Makahlua and I document our trials and tribulations in Elder Scrolls V: Skyrim

James, Scott and Austin talk about two of the larger side quest lines: No Stone Unturned (the Berenziah stones quest), and the Daedric quests (which lead the Oblivion Walker achievement)

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.

You can subscribe in iTunes (or any podcatcher) using this feed, or this one for the AAC edition. We'll add the iTunes specific links as soon as they are available. In the meantime, join the Facebook Group and follow us on Twitter. If you play on Steam, join the Steam Group. Like the music? Pay Sbeast a visit, we thank him for letting us use it!

Links to all episodes and other information can be found on the Thu'umcast page.

If you want to download the podcast directly, we've provided it in three formats:

Got feedback? Tweet us!. Enjoy the podcast, and we'll see you in Skyrim!

Technorati Tags: , ,

Enclosures:
[thuum17.mp3 ( Size: 10065252 )]

posted by James Robertson

 Share Tweet This

skyrimAAC

Thu'umcast 17: Follow the Stone Crumbs (AAC)

January 16, 2012 22:36:55.803

Thu'umcast

Welcome to episode 17 of "Thu'umcast" - a podcast where Michael Lucas-Smith, Scott Dirk, Austin Haley, Makahlua and I document our trials and tribulations in Elder Scrolls V: Skyrim

James, Scott and Austin talk about two of the larger side quest lines: No Stone Unturned (the Berenziah stones quest), and the Daedric quests (which lead the Oblivion Walker achievement)

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.

You can subscribe in iTunes (or any podcatcher) using this feed, or this one for the AAC edition. We'll add the iTunes specific links as soon as they are available. In the meantime, join the Facebook Group and follow us on Twitter. If you play on Steam, join the Steam Group. Like the music? Pay Sbeast a visit, we thank him for letting us use it!

Links to all episodes and other information can be found on the Thu'umcast page.

If you want to download the podcast directly, we've provided it in three formats:

Got feedback? Tweet us!. Enjoy the podcast, and we'll see you in Skyrim!

Technorati Tags: , ,

Enclosures:
[thuum17.m4a ( Size: 13791181 )]

posted by James Robertson

 Share Tweet This

js4u

JS 4U 123: The disabled selector

January 17, 2012 9:44:51.780

Javascript 4 U

Today's Javascript 4 You looks at the disabled() function in JQuery. 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:

disabled()

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:
[js4u123-iPhone.m4v ( Size: 1996570 )]

posted by James Robertson

 Share Tweet This

copyright

Why SOPA Must Die

January 18, 2012 8:37:45.007

Stop SOPA

image credit: Google

SOPA (and the Senate version, Protect IP) aren't just a little bad; they make the DMCA look like reasonable legislation. What they set up is a system of prior restraint that would make publishing on the net nearly impossible for anyone but the wealthy and well connected. In what way, you ask?

In an attempt to stop "pirate" sites, the proposed law targets any site that has links to "illegal" content. Over the last few years, I've linked to many, many sites. Commenters have linked to many others. Over time, some of those domains change hands. Sometimes, a domain that was owned by an individual talking about Smalltalk gets bought up by a content farm. Bam - every post and comment that linked there would be a reason to not only shut down my site, but charge me with a felony. Under that kind of regime, who in their right mind would risk linking to anything? In one fell swoop, SOPA attempts to rewind the clock to the push only model of content coming from approved sources.

It gets worse though - using "circumvention" software would also be illegal. The way the law is written, editing your hosts file to route around the damage would be an illegal act.

If you like the open internet, check out Google's action page on this.

As part of all this, I'm not going to be posting a screencast (or anything else) today - this post will stay at the top of my site. Back to business tomorrow, but for now - don't just sit there. Help stop this pile of stupid.

Technorati Tags: , ,

posted by James Robertson

 Share Tweet This

smalltalk

Need a Loaded Die?

January 19, 2012 7:45:10.967

Kent Beck shows off a simple implementation of a loaded die in Smaltltalk. The post is on Facebook

posted by James Robertson

 Share Tweet This

js4u

JS 4U 124: The enabled selector

January 19, 2012 8:52:31.694

Javascript 4 U

Today's Javascript 4 You looks at the enabled() function in JQuery. 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:

enabled()

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:
[js4u124-iPhone.m4v ( Size: 1224180 )]

posted by James Robertson

 Share Tweet This

smalltalk

Speaking at STIC 2012

January 19, 2012 13:49:43.000

I'll be speaking at the STIC conference this year (in Biloxi, Mississippi). My topic? Build tools, of course :) I've been developing a set of tools where I work now (both manual and automated), and I'll talk about how they work, what they do, and why such a thing is usefule.

Technorati Tags: ,

posted by James Robertson

 Share Tweet This

st4u

ST 4U 183: Blocks in Smalltalk

January 20, 2012 12:35:03.517

Today's Smalltalk 4 You takes a look at Blocks in VA Smalltalk. 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:

Blocks.

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 look at block closures in VA Smalltalk. To get started, you should browse class Block, and take a look at the hierarchy. Typically, when you create a block, it will be an instance of the first subclass:

Blocks

Blocks represent a deferred bit of code - a loose method, if you will. They encapsulate pre-compiled behavior that can be passed around and executed later, by using #value (or one of the variants that take arguments). Below is the code we'll be using to explore blocks:


"Blocks"

block1 := [10 + 1].

block2 := [:input | input + 1].

block3 := [:a :b :c :d :e :f | a, b, c, d, e, f, ' - concatenated'].


val1 := block1 value. 11

val2 := block2 value: 1. 2

val3 := block3 valueWithArguments: #('one ' 'two ' 'three ' 'four' ' five' ' six').

val3 := block3 
		valueWithArguments: #('one ' 'two ' 'three ' 'four' ' five' ' six') 
		onReturnDo: [].
		
val3 := block3 
		valueWithArguments: #('one ' 'two ' 'three ' 'four' ' five' ' six') 
		onReturnDo: [:returnVal | Transcript show: 'Answer was: ', returnVal].
		

To create a block, simply encapsulate the desired code in square braces. As you can see above, using the [:arg1 :arg2 26 | ] notation, you can specify arguments to the block. To execute, you use:

  • #value - No arguments
  • #value: (up to three arguments with #value:value:value)
  • #valueWithArguments: (passing an array)

You can also specify an action block to execute when the block returns, and this block can (but does not have to) take one argument - the return result from the first block. Blocks, like methods, return the result of the last expression executed.

To see that last part in action, try executing the last statement above - you should see something like the following in the Transcript:

Blocks

Just try executing each line in the code above, inspecting or displaying the results - make sure you understand how each one of them works, then try a few examples of your own.

Need more help? There's a screencast for other topics like this which you may want to watch. Questions? Try the "Chat with James" Google gadget over in the sidebar.

Technorati Tags: , ,

Enclosures:
[st4u183-iPhone.m4v ( Size: 7305084 )]

posted by James Robertson

 Share Tweet This

smalltalk

Move a Debug Session Across Images

January 20, 2012 18:53:22.000

Mariano shows you how using Fuel and Pharo.

Technorati Tags: , ,

posted by James Robertson

 Share Tweet This

skyrim

Thu'umcast 18: Twitching From the Marathon

January 21, 2012 16:45:51.401

Thu'umcast

Welcome to episode 18 of "Thu'umcast" - a podcast where Michael Lucas-Smith, Scott Dirk, Austin Haley, Makahlua and I document our trials and tribulations in Elder Scrolls V: Skyrim

We talk to Joep Janson, one of the guys behind Bearded Gaming - check them out for live streamed gaming sessions across the video game spectrum. We talk about Joen's 48 hour marathon, Skyrim strategy, and the SkyUI mod. Check out the Bearded Gaming Site to see Joep's work!

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.

You can subscribe in iTunes (or any podcatcher) using this feed, or this one for the AAC edition. We'll add the iTunes specific links as soon as they are available. In the meantime, join the Facebook Group and follow us on Twitter. If you play on Steam, join the Steam Group. Like the music? Pay Sbeast a visit, we thank him for letting us use it!

Links to all episodes and other information can be found on the Thu'umcast page.

If you want to download the podcast directly, we've provided it in three formats:

Got feedback? Tweet us!. Enjoy the podcast, and we'll see you in Skyrim!

Technorati Tags: , ,

Enclosures:
[thuum18.mp3 ( Size: 11517645 )]

posted by James Robertson

 Share Tweet This

skyrimAAC

Thu'umcast 18: Twitching From the Marathon (AAC)

January 21, 2012 16:46:26.701

Thu'umcast

Welcome to episode 18 of "Thu'umcast" - a podcast where Michael Lucas-Smith, Scott Dirk, Austin Haley, Makahlua and I document our trials and tribulations in Elder Scrolls V: Skyrim

We talk to Joep Janson, one of the guys behind Bearded Gaming - check them out for live streamed gaming sessions across the video game spectrum. We talk about Joen's 48 hour marathon, Skyrim strategy, and the SkyUI mod. Check out the Bearded Gaming Site to see Joep's work!

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.

You can subscribe in iTunes (or any podcatcher) using this feed, or this one for the AAC edition. We'll add the iTunes specific links as soon as they are available. In the meantime, join the Facebook Group and follow us on Twitter. If you play on Steam, join the Steam Group. Like the music? Pay Sbeast a visit, we thank him for letting us use it!

Links to all episodes and other information can be found on the Thu'umcast page.

If you want to download the podcast directly, we've provided it in three formats:

Got feedback? Tweet us!. Enjoy the podcast, and we'll see you in Skyrim!

Technorati Tags: , ,

Enclosures:
[thuum18.m4a ( Size: 15773139 )]

posted by James Robertson

 Share Tweet This

podcast

IM 62: ESUG 2011 Web Panel

January 22, 2012 12:00:30.977

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

This week I have another session from ESUG 2011: a web panel including Dale Henreichs, Thomas Holzer, Esteban Lorenzano, Janko Mivsek, and Nicholas Petton.

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:
[im62.mp3 ( Size: 8250416 )]

posted by James Robertson

 Share Tweet This

podcastAAC

IM 62: ESUG 2011 Web Panel (AAC)

January 22, 2012 12:01:02.167

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

This week I have another session from ESUG 2011: a web panel including Dale Henreichs, Thomas Holzer, Esteban Lorenzano, Janko Mivsek, and Nicholas Petton.

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:
[im62.m4a ( Size: 11352898 )]

posted by James Robertson

 Share Tweet This

humor

The Lighter Side of Javascript and Ruby

January 22, 2012 14:09:31.628

This video is hilarious:

Technorati Tags: ,

posted by James Robertson

 Share Tweet This

st4u

ST 4U 184: Processes in VA Smalltalk

January 23, 2012 8:22:36.626

Today's Smalltalk 4 You looks at processes (and the process model) in Smalltalk, using VA Smalltalk as our example. 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:

Processes.

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 look at processes in VA Smalltalk. That will involve looking at two classes: Process and ProcessScheduler. Class Process is displayed below:

Process

Creating a process is pretty simple - you use a Block, which we looked at in a recent tutorial. You can see the code we used to play with processes below:


"create a process"

cond := 1.
block := [[cond < 10] 
	whileTrue: [Transcript show: 'Condition is: ', cond printString; cr.
						cond := cond + 1]].
block fork

cond := 1.
block := [[cond < 10] 
	whileTrue: [Transcript show: 'Condition is: ', cond printString; cr.
						cond := cond + 1]].
block forkAt: Processor userInterruptPriority

		

To create a process, simply encapsulate the desired code in in a block. Then, rather than executing it with #value (et. al.), fork off the process, as you can see above. In VA Smalltalk, there are 8 priority levels (ranging from 1 to 8 as numeric values) - but you should use the named levels, which you'll find in class ProcessorScheduler:

Priority Levels

The reason you should avoid the named levels can be seen in what's happened in other Smalltalk implementations. VisualWorks originally had 8 priorities, ranging from 1 to 8. At some point, the engineering team at Cincom changed that to 100 levels, and remapped the named levels within the new range. Instantiations could do the same with VA; it's best to avoid future problems by using the API.

To see a process execute, try highlighting the code blocks above - you should end up with something like this in the Transcript:

Processes

Another thing to keep in mind - the Smalltalk process model uses green (lightweight) threads. That means that each Smalltalk process exists only within the context of the heavyweight VM process; a Smalltalk process is neither an OS level process nor an OS level thread. Additionally, the model is one of cooperative multi-tasking - processes at the same priority level will not yield to other processes of the same priority.

Need more help? There's a screencast for other topics like this which you may want to watch. Questions? Try the "Chat with James" Google gadget over in the sidebar.

Technorati Tags: , ,

Enclosures:
[st4u184-iPhone.m4v ( Size: 7981008 )]

posted by James Robertson

 Share Tweet This